[
  {
    "path": ".gitignore",
    "content": "CMakeLists.txt.user\n*.pyc\n*.blend\nhtml\nlatex\n.vscode"
  },
  {
    "path": "Doxygen",
    "content": "# Doxyfile 1.8.13\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the config file\n# that follow. The default is UTF-8 which is also the encoding used for all text\n# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv\n# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv\n# for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"EVO: Event based Visual Odometry\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          =\n\n# With the PROJECT_LOGO tag one can specify a logo or an icon that is included\n# in the documentation. The maximum height of the logo should not exceed 55\n# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy\n# the logo to the output directory.\n\nPROJECT_LOGO           =\n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       =\n\n# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = NO\n\n# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII\n# characters to appear in the names of generated files. If set to NO, non-ASCII\n# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode\n# U+3044.\n# The default value is: NO.\n\nALLOW_UNICODE_NAMES    = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       = \"The $name class\" \\\n                         \"The $name widget\" \\\n                         \"The $name file\" \\\n                         is \\\n                         provides \\\n                         specifies \\\n                         contains \\\n                         represents \\\n                         a \\\n                         an \\\n                         the\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = NO\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = NO\n\n# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = YES\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = NO\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = YES\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new\n# page for each member. If set to NO, the documentation of a member will be part\n# of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines.\n\nALIASES                =\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = NO\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:\n# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:\n# Fortran. In the later case the parser tries to guess whether the code is fixed\n# or free formatted code, this is the default for Fortran type files), VHDL. For\n# instance to make doxygen treat .inc files as Fortran files (default is PHP),\n# and .f files as C (default is Fortran), use: inc=Fortran f=C.\n#\n# Note: For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See http://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up\n# to that level are automatically included in the table of contents, even if\n# they do not have an id attribute.\n# Note: This feature currently applies only to Markdown headings.\n# Minimum value: 0, maximum value: 99, default value: 0.\n# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.\n\nTOC_INCLUDE_HEADINGS   = 0\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by putting a % sign in front of the word or\n# globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = NO\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# If one adds a struct or class to a group and this option is enabled, then also\n# any nested class or struct is added to the same group. By default this option\n# is disabled and one has to add nested compounds explicitly via \\ingroup.\n# The default value is: NO.\n\nGROUP_NESTED_COMPOUNDS = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = NO\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = NO\n\n# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = YES\n\n# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = NO\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO,\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. If set to YES, local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO, only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO, these classes will be included in the various overviews. This option\n# has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO, these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO, these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES, upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# and Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = YES\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES, the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = NO\n\n# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will\n# append additional text to a page's title, such as Class Reference. If set to\n# YES the compound reference will be hidden.\n# The default value is: NO.\n\nHIDE_COMPOUND_REFERENCE= NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = YES\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = NO\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = NO\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = NO\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo\n# list. This list is created by putting \\todo commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test\n# list. This list is created by putting \\test commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES, the\n# list will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = YES\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = YES\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = YES\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. See also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = NO\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO, doxygen will only warn about wrong or incomplete\n# parameter documentation, but not about the absence of documentation.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when\n# a warning is encountered.\n# The default value is: NO.\n\nWARN_AS_ERROR          = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  =\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: http://www.gnu.org/software/libiconv) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# read by doxygen.\n#\n# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,\n# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,\n# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,\n# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,\n# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.\n\nFILE_PATTERNS          = *.c \\\n                         *.cc \\\n                         *.cxx \\\n                         *.cpp \\\n                         *.c++ \\\n                         *.java \\\n                         *.ii \\\n                         *.ixx \\\n                         *.ipp \\\n                         *.i++ \\\n                         *.inl \\\n                         *.idl \\\n                         *.ddl \\\n                         *.odl \\\n                         *.h \\\n                         *.hh \\\n                         *.hxx \\\n                         *.hpp \\\n                         *.h++ \\\n                         *.cs \\\n                         *.d \\\n                         *.php \\\n                         *.php4 \\\n                         *.php5 \\\n                         *.phtml \\\n                         *.inc \\\n                         *.m \\\n                         *.markdown \\\n                         *.md \\\n                         *.mm \\\n                         *.dox \\\n                         *.py \\\n                         *.pyw \\\n                         *.f90 \\\n                         *.f95 \\\n                         *.f03 \\\n                         *.f08 \\\n                         *.f \\\n                         *.for \\\n                         *.tcl \\\n                         *.vhd \\\n                         *.vhdl \\\n                         *.ucf \\\n                         *.qsf\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = YES\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                =\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = NO\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       =\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        =\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           =\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       = *\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = YES\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE =\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = NO\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = NO\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# function all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see http://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the config file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the\n# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the\n# cost of reduced performance. This can be particularly helpful with template\n# rich C++ code for which doxygen's built-in parser lacks the necessary type\n# information.\n# Note: The availability of this option depends on whether or not doxygen was\n# generated with the -Duse-libclang=ON option for CMake.\n# The default value is: NO.\n\nCLANG_ASSISTED_PARSING = NO\n\n# If clang assisted parsing is enabled you can provide the compiler with command\n# line options that you would normally use when invoking the compiler. Note that\n# the include paths will already be set by doxygen for the files and directories\n# specified with INPUT and INCLUDE_PATH.\n# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.\n\nCLANG_OPTIONS          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = html\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# cascading style sheets that are included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefore more robust against future updates.\n# Doxygen will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list). For an example see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  =\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the style sheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# http://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to YES can help to show when doxygen was last run and thus if the\n# documentation is up to date.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = NO\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: http://developer.apple.com/tools/xcode/), introduced with\n# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html\n# for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler (hhc.exe). If non-empty,\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated\n# (YES) or that it should be included in the master .chm file (NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated\n# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it\n# enables the Previous and Next buttons.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = NO\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-\n# folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = NO\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 4\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# http://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from http://www.mathjax.org before deployment.\n# The default value is: http://cdn.mathjax.org/mathjax/latest.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavors of web server based searching depending on the EXTERNAL_SEARCH\n# setting. When disabled, doxygen will generate a PHP script for searching and\n# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing\n# and searching needs to be provided by external tools. See the section\n# \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = YES\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when enabling USE_PDFLATEX this option is only used for generating\n# bitmaps for formulas in the HTML output, but not in the Makefile that is\n# written to the output directory.\n# The default file is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         = latex\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. The package can be specified just\n# by its name or with the correct syntax as to be used with the LaTeX\n# \\usepackage command. To get the times font for instance you can specify :\n# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}\n# To use the option intlimits with the amsmath package you can specify:\n# EXTRA_PACKAGES=[intlimits]{amsmath}\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber,\n# $projectbrief, $projectlogo. Doxygen will replace $title with the empty\n# string, for the replacement values of the other commands the user is referred\n# to HTML_HEADER.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer. See\n# LATEX_HEADER for more information on how to generate a default footer and what\n# special commands can be used inside the footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# LaTeX style sheets that are included after the standard style sheets created\n# by doxygen. Using this option one can overrule certain style aspects. Doxygen\n# will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_STYLESHEET =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES, to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# http://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_TIMESTAMP        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's config\n# file, i.e. a series of assignments. You only have to provide replacements,\n# missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's config file. A template extensions file can be generated\n# using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code\n# with syntax highlighting in the RTF output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_SOURCE_CODE        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# The MAN_SUBDIR tag determines the name of the directory created within\n# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by\n# MAN_EXTENSION with the initial . removed.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_SUBDIR             =\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the\n# program listings (including syntax highlighting and cross-referencing\n# information) to the DOCBOOK output. Note that enabling this will significantly\n# increase the size of the DOCBOOK output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_PROGRAMLISTING = NO\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an\n# AutoGen Definitions (see http://autogen.sf.net) file that captures the\n# structure of the code including all documentation. Note that this feature is\n# still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO, the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names\n# in the source code. If set to NO, only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = NO\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = NO\n\n# If the SEARCH_INCLUDES tag is set to YES, the include files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             =\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all references to function-like macros that are alone on a line, have\n# an all uppercase name, and do not end with a semicolon. Such function macros\n# are typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have a unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES, all external class will be listed in\n# the class index. If set to NO, only the inherited external classes will be\n# listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed\n# in the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n# The PERL_PATH should be the absolute path and name of the perl script\n# interpreter (i.e. the result of 'which perl').\n# The default file (with absolute path) is: /usr/bin/perl.\n\nPERL_PATH              = /usr/bin/perl\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can define message sequence charts within doxygen comments using the \\msc\n# command. Doxygen will then run the mscgen tool (see:\n# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the\n# documentation. The MSCGEN_PATH tag allows you to specify the directory where\n# the mscgen tool resides. If left empty the tool is assumed to be found in the\n# default search path.\n\nMSCGEN_PATH            =\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: YES.\n\nHAVE_DOT               = YES\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font in the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command. Disabling a call graph can be\n# accomplished by means of the command \\hidecallgraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command. Disabling a caller graph can be\n# accomplished by means of the command \\hidecallergraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot. For an explanation of the image formats see the section\n# output formats in the documentation of the dot tool (Graphviz (see:\n# http://www.graphviz.org/)).\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,\n# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,\n# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,\n# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and\n# png:gdiplus:gdiplus.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the\n# path where java can find the plantuml.jar file. If left blank, it is assumed\n# PlantUML is not used or called during a preprocessing step. Doxygen will\n# generate a warning when it encounters a \\startuml command in this case and\n# will not generate output for the diagram.\n\nPLANTUML_JAR_PATH      =\n\n# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a\n# configuration file for plantuml.\n\nPLANTUML_CFG_FILE      =\n\n# When using plantuml, the specified paths are searched for files specified by\n# the !include statement in a plantuml block.\n\nPLANTUML_INCLUDE_PATH  =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = NO\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "README.md",
    "content": "# EVO: Event based Visual Odometry\n\n[![EVO: Event based Visual Odometry](images/preview-yt.png)](https://www.youtube.com/watch?v=bYqD2qZJlxE)\n\n<a name=\"license\"></a>\n## Credit, License, and Patent\n### Citation\nThis code implements the event-based visual odometry pipeline described in the paper [EVO: A Geometric Approach to Event-Based 6-DOF Parallel Tracking and Mapping in Real-time](http://rpg.ifi.uzh.ch/docs/RAL16_EVO.pdf) by [Henri Rebecq](https://supitalp.github.io/research/), Timo Horstschaefer, [Guillermo Gallego](https://sites.google.com/view/guillermogallego) and [Davide Scaramuzza](http://rpg.ifi.uzh.ch/people_scaramuzza.html).\n\nIf you use any of this code, please cite the following publications:\n\n```bibtex\n@Article{RebecqEVO,\n  author        = {Rebecq, Henri and Horstschaefer, Timo and Gallego, Guillermo and Scaramuzza, Davide},\n  journal       = {IEEE Robotics and Automation Letters}, \n  title         = {EVO: A Geometric Approach to Event-Based 6-DOF Parallel Tracking and Mapping in Real Time}, \n  year          = {2017},\n  volume        = {2},\n  number        = {2},\n  pages         = {593-600},\n  doi           = {10.1109/LRA.2016.2645143}\n}\n```\n\n```bibtex\n@InProceedings{Gehrig_2020_CVPR,\n  author = {Daniel Gehrig and Mathias Gehrig and Javier Hidalgo-Carri\\'o and Davide Scaramuzza},\n  title = {Video to Events: Recycling Video Datasets for Event Cameras},\n  booktitle = {{IEEE} Conf. Comput. Vis. Pattern Recog. (CVPR)},\n  month = {June},\n  year = {2020}\n}\n```\n\nThe code comes with a test dataset. If you don't have an event camera and want to run the code on more data, you can do one of the following:\n* Using one of our event camera datasets:\n  * http://rpg.ifi.uzh.ch/davis_data.html\n  * https://dsec.ifi.uzh.ch/\n  * https://fpv.ifi.uzh.ch/\n  * http://rpg.ifi.uzh.ch/E2VID.html\n  * http://rpg.ifi.uzh.ch/CED.html\n  * http://rpg.ifi.uzh.ch/direct_event_camera_tracking/index.html\n  * http://rpg.ifi.uzh.ch/ECCV18_stereo_davis.html\n* Generate one using event-camera simulator: http://rpg.ifi.uzh.ch/esim/index.html\n* Convert a standard video to events using our \"Video to Events: Recycling Video Datasets for Event Cameras.\" cited above, code here: https://github.com/uzh-rpg/rpg_vid2e\n### Patent & License\n\n- The proposed EVO method is [patented](https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2018037079).\n\n        H. Rebecq, G. Gallego, D. Scaramuzza\n        Simultaneous Localization and Mapping with an Event Camera\n        Pub. No.: WO/2018/037079.  International Application No.: PCT/EP2017/071331\n    \n- The license is [available here](LICENSE).\n\n### Acknowledgements\nThe open sourcing was curated by [Antonio Terpin](https://antonioterpin.github.io) and [Daniel Gehrig](https://danielgehrig18.github.io).\n\n#### Table of contents\n1. [Getting started](#getstarted)\n2. [Examples](#examples)\n3. [Running live](#live)\n4. [Further improvements](#todo)\n5. [Additional resources on Event Cameras](#ref)\n\nRemark that this is **research** code, any fitness for a particular purpose is disclaimed.\n\n<a name=\"getstarted\"></a>\n## Getting started\nThis software depends on [ROS](https://www.ros.org/). Installation instructions can be found [here](http://wiki.ros.org/melodic/Installation/Ubuntu). We have tested this software on Ubuntu 18.04 and ROS Melodic.\n\n1. Create and initialize a new catkin workspace if needed\n\n        mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/\n        catkin config \\\n            --init --mkdirs --extend /opt/ros/melodic \\\n            --merge-devel --cmake-args \\\n            -DCMAKE_BUILD_TYPE=Release\n\n2. Clone this repository\n\n        cd src/ && git clone git@github.com:uzh-rpg/rpg_dvs_evo_open.git\n\n3. Clone (and fix) dependencies\n        \n        ./rpg_dvs_evo_open/install.sh [ros-version] # [ros-version]: melodic, ..\n\n    Substitute `[ros-version]` with your actual ROS distribution. For instance:\n\n        ./rpg_dvs_evo_open/install.sh melodic\n\n    Make sure to install ROS and the commonly used packages (such as rviz, rqt, ..).\n\n    The above commands do the following:\n    * First, we install the required packages.\n\n    * Second, we clone the [repositories](dependencies.yaml) evo relies on.\n\n    Remark that with the above commands we install also the dependencies required to run the pipeline live. If you do not need them, you can comment the unnecessary packages from the dependencies.yaml file ([davis driver](https://github.com/uzh-rpg/rpg_dvs_ros)).\n\n    Please refer to [this repo](https://github.com/uzh-rpg/rpg_dvs_ros) if there are issues with the driver installation (required for the live).\n\n4. Build the packages\n    \n        catkin build dvs_tracking\n\nBuilding everything might take some time... this might be the right time for a coffee! :)\n    \n... and do not forget to source the workspace afterwards!\n\n    source ../devel/setup.bash\n\n<a name=\"examples\"></a>\n## Examples\n\n![EVO: Event based Visual Odometry](images/cover_examples.png)\n\n| Example | Launch file | Rosbag |\n|:----- |:----- |:-----|\n| Multi-keyframe sequence | [flyingroom.launch](dvs_tracking/launch/flyingroom.launch) | [538 MB](http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_flyingroom.bag)|\n| Desk sequence | [desk.launch](dvs_tracking/launch/desk.launch) | [145 MB](http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_desk.bag)|\n\nTo download the rosbags, you can use the following command:\n\n    wget [rosbag link] -O /path/to/download/folder/\n\nFor instance, the following will download the multi-keyframe sequence rosbag:\n\n    wget http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_flyingroom.bag -O /tmp/evo_flyingroom.bag\n\nTo run the pipeline from a rosbag, first start the pipeline as\n\n    roslaunch dvs_tracking [launch-file] auto_trigger:=true\n\nwhere the specific launch file (fine-tuned) for each example is listed in the following table. The most interesting and repeatible one (due to the bootstrapping sequence, see [further improvements](#todo)) is the multi-keyframe sequence.\n\nThen, once the everything is loaded, run the rosbag as\n\n    rosbag play -r 0.7 [rosbag-file]\n\nFor instance,\n\n    rosbag play -r 0.7 /tmp/evo_flyingroom.bag\n\nRemark that we set the ```auto_trigger``` parameter to true. You can also set it to false and follow the instruction on [how to run it live](#live).\n\nIf anything fails, just try it again (give it a couple of chances!), and make sure to follow exactly the above instructions.\n\nIn the [further improvements](#todo) section are outlined the things that might go wrong when running the code. To improve the reliability when playing the rosbags (running live is easier), consider using ```-r .7```, to reduce the rate. This helps especially when the hardware is not powerful enough.\n\nFor instance,\n\n    rosbag play /tmp/evo_flyingroom -r .7\n\nEventually, setting ```bootstrap_image_topic:=/dvs/image_raw``` will bootstrap from traditional frames and later switch to only events. This is the most reliable way currently available to bootstrap. \n\n    roslaunch dvs_tracking [launch-file] bootstrap_image_topic:=/dvs/image_raw auto_trigger:=true\n\n<a name=\"live\"></a>\n## Running live\n\n### Run\nThe procedure is analogous to the one explained in the examples:\n\n1. Run the ros core on the first terminal.\n\n        roscore\n\n2. On a second terminal, launch the event camera driver.\n\n        rosrun davis_ros_driver davis_ros_driver\n\n3. On another terminal, launch the pipeline, disabling the auto-triggering.\n\n        roslaunch dvs_tracking live.launch auto_trigger:=false camera_name:=[calibration filename] events_topic:=[events topic]\n\n    For instance:\n\n        roslaunch dvs_tracking live.launch auto_trigger:=false camera_name:=DAVIS-ijrr events_topic:=/dvs/events\n\n    If your calibrations filenames are `my_camera.yaml`, then use `camera_name:=my_camera`. Make sure to use the same name for both calibration files. If your sensor outputs events under the topic `/my_sensor/events`, then use `events_topic:=/my_sensor/events`.\n\n    For the SVO based bootstrapper, proceed with step 4. For the fronto-planar bootstrapper, go to step 5. How to set up the fronto-planar bootstrapper is explained in the [live.launch](dvs_tracking/launch/live.launch) file.\n\n    If you want to bootstrap from traditional frames, you can use the command:\n\n        roslaunch dvs_tracking live.launch bootstrap_image_topic:=[topic raw frames] auto_trigger:=false\n\n    For instance `bootstrap_image_topic:=/dvs/image_raw`.\n\n    In this case, it makes sense to use the SVO-based bootstrapping only. This option is recommended to debug/improve/extend the rest of the EVO pipeline, without worrying about the quality of the bootstrapping.\n\n4. You should see two rqt GUI. One is the SVO GUI. Reset and start the pipeline until it tracks decently well. Make sure to set the namespace to `svo`.\n\n5. Press the `Bootstrap` button in the EVO GUI. This will automatically trigger the pipeline.\n\n    Alternatively, it is also possible to trigger one module at the time:\n    - Press the `Start/Reset` button in `rqt_evo`. Perform a circle (or more), and then press `Update`. This will trigger a map creation.\n    - If the map looks correct, press `Switch to tracking` to start tracking with EVO. If not, reiterate the map creation.\n    - As the camera moves out of the current map, the latter will be automatically updated if the `Map-Expansion` is enabled. You may disable `Map-Expansion` to track high-speed motions using the current map (single keyframe tracking).\n    - The scene should have enough texture and the motions should recall the ones that you can see in the provided examples.\n    \n6. If anything fails, just press ```Ctrl+C``` and restart the live node ;)\n\nSome remarks:\n- The calibration files paths will be built as `$(find dvs_tracking)/parameters/calib/ncamera/$(arg camera_name).yaml` and `$(find dvs_tracking)/parameters/calib/$(arg camera_name).yaml`, where `camera_name` is specified as argument to the launch file. You can also set it as default in `live.launch`.\n- If your sensor provides frames under a topic `/my_sensor/image_raw`, and you want to bootstrap from the traditional frames, you can use `bootstrap_image_topic:=/my_sensor/image_raw`.\n\nTo run the pipeline live, first adjust the template [live.launch](dvs_tracking/launch/live.launch) to your sensor and scene. You can follow the following steps. Further customization, such as which bootstrapper to use, are explained in the launch file itself.\n\n### Calibration\nMake sure you have updated calibration files for your event camera, in the  ```dvs_tracking/parameters/calib``` folder.\n\nMake sure your ```.yaml``` files have the same format as the provided ones ([single camera format](dvs_tracking/parameters/calib/DAVIS-evo.yaml), [multiple cameras format](dvs_tracking/parameters/calib/ncamera/DAVIS-evo.yaml)).\n\nRemark that we have two calibration files in two different format for the same sensor. The single camera format has to be placed in the ```dvs_tracking/parameters/calib``` folder and the multiple cameras format in the ```dvs_tracking/parameters/calib/ncamera``` folder.\n\nSee [this section](#ref) for further references on calibration.\n\n### Tuning\nAdjust the parameters in the launch file [```dvs_tracking/launch/template.launch```](dvs_tracking/launch/template.launch).\n\nTuning is crucial for a good performance of the pipeline, in particular the ```min_depth``` and ```max_depth``` parameters in the mapping node, and the ```bootstrap``` node parameters.\n\nAn explanation of all the parameters for each module of the pipeline can be found in the [Wiki](https://github.com/uzh-rpg/rpg_dvs_evo_open/wiki).\n\nThe main parameters can be found in the template launch file, and are explained contextually. We still invite you to have a look at the Wiki, to discover further interesting features ;)\n\n| Module |\n|:-----|\n| [Global parameters](https://github.com/uzh-rpg/rpg_dvs_evo_open/wiki/Global-parameters) |\n| [Bootstrapping](https://github.com/uzh-rpg/rpg_dvs_evo_open/wiki/Bootstrapping) |\n| [Mapping](https://github.com/uzh-rpg/rpg_dvs_evo_open/wiki/Mapping) |\n| [Tracking](https://github.com/uzh-rpg/rpg_dvs_evo_open/wiki/Tracking) |\n\nIf you are not using the fronto-planar bootstrapper, then you might need to tune SVO.\n\nRemark that this might not be needed. You can test the svo tuning bootstrapping from traditional frames:\n\n    roslaunch dvs_tracking live.launch bootstrap_image_topic:=[topic of raw frames] auto_trigger:=[true/false]\n\nFor instance, `bootstrap_image_topic:=/dvs/image_raw`.\n\n<a name=\"todo\"></a>\n## Further improvements\n\nIn the following we outline the main problems currently known and possible remedies. You are very welcome to contribute to this pipeline to make it even better!\n\n|What can go wrong|TODO|\n|:----- |:-----|\n|Randomness due to OS scheduler, unreliable rosbags| Implement rosbag data provider pattern, and ensure correctness of events consumption|\n||Currently the pipeline uses multiple nodes. Switching to nodelets or using a single node could improve the repeatability of the rosbags.|\n|Robustness| bootstrapping: catch whenever SVO does not converge and trigger an automatic restart (what a human operator would eventually do manually).|\n|| tracking: catch whenever the tracker diverges, and re-initialize. Currently we have two parameters to predict this situation, namely `min_map_size` and `min_n_keypoints`.|\n|Improve bootstrapping robustness|Currently we have two working ways to bootstrap the pipeline from events: from SVO (feeding it with events frames) and with a fronto-planar assumption.|\n||Reducing the assumptions required and making them more reliable would allow a better bootstrapping, reducing the gap to the bootstrapping from traditional frames  (`bootstrap_image_topic:=/dvs/image_raw`).|\n\n<a name=\"ref\"></a>\n## Additional resources on Event Cameras\n* [Event-based Vision Survey](http://rpg.ifi.uzh.ch/docs/EventVisionSurvey.pdf)\n* [List of Event-based Vision Resources](https://github.com/uzh-rpg/event-based_vision_resources)\n* [Event Camera Dataset](http://rpg.ifi.uzh.ch/davis_data.html)\n* [Event Camera Simulator](http://rpg.ifi.uzh.ch/esim)\n* [RPG research page on Event Cameras](http://rpg.ifi.uzh.ch/research_dvs.html)\n* [RPG research page on sensor calibration](http://rpg.ifi.uzh.ch/research_calib.html)\n"
  },
  {
    "path": "dependencies.yaml",
    "content": "repositories:\n  catkin_simple:\n    type: git\n    url: git@github.com:catkin/catkin_simple.git\n    version: master\n  rpg_dvs_ros:\n    type: git\n    url: git@github.com:uzh-rpg/rpg_dvs_ros.git\n    version: master\n  glog_catkin:\n    type: git\n    url: git@github.com:zurich-eye/glog_catkin.git\n    version: master\n  gflags_catkin:\n    type: git\n    url: git@github.com:zurich-eye/gflags_catkin.git\n    version: master\n  cmake_external_project_catkin:\n    type: git\n    url: git@github.com:zurich-eye/cmake_external_project_catkin.git\n    version: master\n  eigen_catkin:\n    type: git\n    url: git@github.com:ethz-asl/eigen_catkin.git\n    version: master\n  eigen_checks:\n    type: git\n    url: git@github.com:ethz-asl/eigen_checks.git\n    version: master\n  minkindr:\n    type: git\n    url: git@github.com:ethz-asl/minkindr.git\n    version: master\n  minkindr_ros:\n    type: git\n    url: git@github.com:ethz-asl/minkindr_ros.git\n    version: master\n  # SVO extra dependencies\n  fast_neon:\n    type: git\n    url: git@github.com:uzh-rpg/fast_neon.git\n    version: master\n  nanoflann_catkin:\n    type: git\n    url: git@github.com:cfo/nanoflann_catkin.git\n    version: master\n  opengv:\n    type: git\n    url: git@github.com:ethz-asl/opengv.git\n    version: master\n  catkin_boost_python_buildtool:\n    type: git\n    url: git@github.com:ethz-asl/catkin_boost_python_buildtool.git\n    version: master\n  numpy_eigen:\n    type: git\n    url: git@github.com:ethz-asl/numpy_eigen.git\n    version: master\n"
  },
  {
    "path": "docs/Bootstrapper_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include/dvs_bootstrapping/Bootstrapper.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_135e35ac0bac6dfe4cb773674dae4da2.html\">dvs_bootstrapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Bootstrapper.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef BOOTSTRAPPING_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define BOOTSTRAPPING_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_msgs/EventArray.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;geometry_msgs/PoseStamped.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;gflags/gflags.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;ros/node_handle.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/String.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &quot;evo_utils/camera.hpp&quot;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">// #include &lt;deque&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">   21</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a> {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a>() {}</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a>(<span class=\"keyword\">const</span> std_msgs::String::ConstPtr &amp;msg);</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a>(<span class=\"keyword\">const</span> sensor_msgs::CameraInfo::ConstPtr &amp;msg);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a>();</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">   56</a></span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">postCameraLoaded</a>() {}</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">   62</a></span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">postBootstrapCalled</a>() {}</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"comment\">/* ROS */</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    ros::NodeHandle nh_, nhp_;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    image_geometry::PinholeCameraModel cam_;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">   68</a></span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a> = <span class=\"keyword\">true</span>;  </div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">   70</a></span>&#160;    std::vector&lt;dvs_msgs::Event&gt; <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a>;  </div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">   71</a></span>&#160;    std::mutex <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a>;  </div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">   73</a></span>&#160;    ros::Publisher <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a>;   </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    std::string <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a>;      </div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">   76</a></span>&#160;    std::string <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a>;  </div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">   79</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">event_sub_</a>;        </div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">   80</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">remote_sub_</a>;       </div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">   81</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">camera_info_sub_</a>;  </div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">eventCallback</a>(<span class=\"keyword\">const</span> dvs_msgs::EventArray::ConstPtr &amp;msg);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;};</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;}  <span class=\"comment\">// namespace dvs_bootstrapping</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a40a55b3f3cb917d0446aead2985c7d13\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">dvs_bootstrapping::Bootstrapper::event_sub_</a></div><div class=\"ttdeci\">ros::Subscriber event_sub_</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:79</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a58380879400517719b855d1bb4dbe99a\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">dvs_bootstrapping::Bootstrapper::cameraInfoCallback</a></div><div class=\"ttdeci\">void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.cpp:55</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a656b62b448a0104a78299d1b09852803\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">dvs_bootstrapping::Bootstrapper::idle_</a></div><div class=\"ttdeci\">bool idle_</div><div class=\"ttdoc\">Whether it is bootstrapping the pipeline. </div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:68</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a9ee3a994f2d517ef2211aaafeb6bba24\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">dvs_bootstrapping::Bootstrapper::eventQueue_</a></div><div class=\"ttdeci\">std::vector&lt; dvs_msgs::Event &gt; eventQueue_</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:70</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_ab4a986f20504628105d325b21e34a7b3\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">dvs_bootstrapping::Bootstrapper::world_frame_id_</a></div><div class=\"ttdeci\">std::string world_frame_id_</div><div class=\"ttdoc\">The root of the tf system. </div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:75</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a617aa089e6e345edacaee8b9b8266490\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">dvs_bootstrapping::Bootstrapper::remote_key_pub_</a></div><div class=\"ttdeci\">ros::Publisher remote_key_pub_</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:73</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a5ee5d565b59f276e03aaa79e89445a70\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">dvs_bootstrapping::Bootstrapper::pauseBootstrapper</a></div><div class=\"ttdeci\">void pauseBootstrapper()</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.cpp:69</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_ad0d0db5b5ce5de0f444dfd3279da55d9\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">dvs_bootstrapping::Bootstrapper::bootstrap_frame_id_</a></div><div class=\"ttdeci\">std::string bootstrap_frame_id_</div><div class=\"ttdoc\">child frame id for bootstrap </div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:76</div></div>\n<div class=\"ttc\" id=\"namespacedvs__bootstrapping_html\"><div class=\"ttname\"><a href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a></div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:19</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a1914b9e59081004b2ad114fb7bb94b23\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">dvs_bootstrapping::Bootstrapper::eventCallback</a></div><div class=\"ttdeci\">void eventCallback(const dvs_msgs::EventArray::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.cpp:74</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a43e4d4fde4163801103a9cce9dd6c3b4\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">dvs_bootstrapping::Bootstrapper::remote_sub_</a></div><div class=\"ttdeci\">ros::Subscriber remote_sub_</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:80</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a1f0451b7574f6c8dc9fe8276728f481b\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">dvs_bootstrapping::Bootstrapper::postCameraLoaded</a></div><div class=\"ttdeci\">virtual void postCameraLoaded()</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:56</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a1ef8c557470ea848c4a5ce0b495712b3\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">dvs_bootstrapping::Bootstrapper::camera_info_sub_</a></div><div class=\"ttdeci\">ros::Subscriber camera_info_sub_</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:81</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a5c336fde4d52b1b75b1b7d43ebd9e103\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">dvs_bootstrapping::Bootstrapper::startCommandCallback</a></div><div class=\"ttdeci\">void startCommandCallback(const std_msgs::String::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.cpp:37</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a67eded4cb8f32792941afb66a8cc1582\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">dvs_bootstrapping::Bootstrapper::postBootstrapCalled</a></div><div class=\"ttdeci\">virtual void postBootstrapCalled()</div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:62</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html_a43b38251f208c52f2cc4d1fc00f4f219\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">dvs_bootstrapping::Bootstrapper::data_mutex_</a></div><div class=\"ttdeci\">std::mutex data_mutex_</div><div class=\"ttdoc\">to grant exclusive access to eventQueue_ </div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:71</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:21</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/EventsFramesBootstrapper_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include/dvs_bootstrapping/EventsFramesBootstrapper.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_135e35ac0bac6dfe4cb773674dae4da2.html\">dvs_bootstrapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">EventsFramesBootstrapper.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef KLT_BOOTSTRAPPER_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define KLT_BOOTSTRAPPER_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tf.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_broadcaster.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;deque&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_bootstrapping/Bootstrapper.hpp&quot;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &quot;motion_correction.hpp&quot;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a> {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">   22</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a> {</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a>();</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">postCameraLoaded</a>() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">   29</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">width_</a>;   </div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">   30</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">height_</a>;  </div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    cv::Size sensor_size_;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    std::vector&lt;cv::Point2f&gt; rectified_points_;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keywordtype\">bool</span> keep_frames_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    std::mutex img_mutex_;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">   35</a></span>&#160;    std::deque&lt;cv::Mat&gt; <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">frames_</a>;  </div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keywordtype\">int</span> rate_hz_;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">   37</a></span>&#160;    ros::Time <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">ts_</a>;  </div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    tf::Transformer tf_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    tf::TransformBroadcaster tf_pub_;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    image_transport::ImageTransport it_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    image_transport::Publisher pub_event_img_, pub_optical_flow_;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">   45</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">frame_size_</a>;        </div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">local_frame_size_</a>;  </div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">newest_processed_event_</a>;  </div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">enable_visuals_</a>;         </div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    cv::Mat <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">undistort_mapx_</a>;      </div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">   55</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">undistort_mapy_</a>;      </div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;        unwarp_params_;  </div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">integratingThread</a>();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">integrateEvents</a>();</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">clearEventQueue</a>();</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">publishEventImage</a>(<span class=\"keyword\">const</span> cv::Mat &amp;img, <span class=\"keyword\">const</span> ros::Time &amp;ts);</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">publishOpticalFlowVectors</a>(<span class=\"keyword\">const</span> cv::Mat &amp;flow_field);</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;};</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;}  <span class=\"comment\">// namespace dvs_bootstrapping</span></div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_ae6a7f21a3b5b5dff875b0f6573c47dcf\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">dvs_bootstrapping::EventsFramesBootstrapper::local_frame_size_</a></div><div class=\"ttdeci\">int local_frame_size_</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:47</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_af4746b4fc632d898bfab5dc8e63b708d\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">dvs_bootstrapping::EventsFramesBootstrapper::integrateEvents</a></div><div class=\"ttdeci\">bool integrateEvents()</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:103</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_ad90caac7628ef0bc3dec5e963f60053e\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">dvs_bootstrapping::EventsFramesBootstrapper::publishEventImage</a></div><div class=\"ttdeci\">void publishEventImage(const cv::Mat &amp;img, const ros::Time &amp;ts)</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:203</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:52</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a26dd5dfdba38a4c1d0e79c40a516ebde\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">dvs_bootstrapping::EventsFramesBootstrapper::clearEventQueue</a></div><div class=\"ttdeci\">void clearEventQueue()</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:94</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a6cfaf0e56d549c48c06334efbd04ab49\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">dvs_bootstrapping::EventsFramesBootstrapper::frames_</a></div><div class=\"ttdeci\">std::deque&lt; cv::Mat &gt; frames_</div><div class=\"ttdoc\">images obtained aggregating events </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:35</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_abc3eaa3b946e04185c10bcefb931e0f3\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">dvs_bootstrapping::EventsFramesBootstrapper::enable_visuals_</a></div><div class=\"ttdeci\">bool enable_visuals_</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:52</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_aaafb56114b190f10a32e49ef7042c46d\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">dvs_bootstrapping::EventsFramesBootstrapper::newest_processed_event_</a></div><div class=\"ttdeci\">int newest_processed_event_</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:50</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a5cb2328ccca4540592a7e462d4503991\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">dvs_bootstrapping::EventsFramesBootstrapper::postCameraLoaded</a></div><div class=\"ttdeci\">void postCameraLoaded() override</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:52</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_ab94f6fda052003d3d3a3c9782aa04301\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">dvs_bootstrapping::EventsFramesBootstrapper::frame_size_</a></div><div class=\"ttdeci\">int frame_size_</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:45</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a15cf181171b6e147d51fb3d34b1459c3\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">dvs_bootstrapping::EventsFramesBootstrapper::width_</a></div><div class=\"ttdeci\">size_t width_</div><div class=\"ttdoc\">image size: width </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:29</div></div>\n<div class=\"ttc\" id=\"namespacedvs__bootstrapping_html\"><div class=\"ttname\"><a href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a></div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:19</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:22</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a685a6a728974af53157f9373aa463838\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">dvs_bootstrapping::EventsFramesBootstrapper::undistort_mapx_</a></div><div class=\"ttdeci\">cv::Mat undistort_mapx_</div><div class=\"ttdoc\">distorted to undistorted pixels (x) </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:54</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a709741806ccfc7d9a4157b6547ba81b7\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">dvs_bootstrapping::EventsFramesBootstrapper::undistort_mapy_</a></div><div class=\"ttdeci\">cv::Mat undistort_mapy_</div><div class=\"ttdoc\">distorted to undistorted pixels (y) </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:55</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a5f7a1ab3f8226687166d6fe5b8520b01\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">dvs_bootstrapping::EventsFramesBootstrapper::integratingThread</a></div><div class=\"ttdeci\">void integratingThread()</div><div class=\"ttdoc\">motion undistortion params </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:78</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_a425dc08fd4e0100eba904dd3a7503d4a\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">dvs_bootstrapping::EventsFramesBootstrapper::ts_</a></div><div class=\"ttdeci\">ros::Time ts_</div><div class=\"ttdoc\">last timestamped image (last received event) </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:37</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_aff0a99868ff4ca68ee8cb63d68025236\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">dvs_bootstrapping::EventsFramesBootstrapper::height_</a></div><div class=\"ttdeci\">size_t height_</div><div class=\"ttdoc\">image size: height </div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:30</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1Bootstrapper_html\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:21</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html_aaeb941155dfff9dc9ab9f8a87590f6fe\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">dvs_bootstrapping::EventsFramesBootstrapper::publishOpticalFlowVectors</a></div><div class=\"ttdeci\">void publishOpticalFlowVectors(const cv::Mat &amp;flow_field)</div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.cpp:217</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/FrontoPlanarBootstrapper_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include/dvs_bootstrapping/FrontoPlanarBootstrapper.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_135e35ac0bac6dfe4cb773674dae4da2.html\">dvs_bootstrapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">FrontoPlanarBootstrapper.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef HARRIS_BOOTSTRAPPER_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define HARRIS_BOOTSTRAPPER_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_types.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;pcl_ros/point_cloud.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tf.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_broadcaster.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_bootstrapping/EventsFramesBootstrapper.hpp&quot;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">typedef</span> pcl::PointXYZI PointType;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">typedef</span> pcl::PointCloud&lt;PointType&gt; PointCloud;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">   29</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a> {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp);</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a>();</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">postBootstrapCalled</a>() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    ros::Publisher</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">   39</a></span>&#160;        <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">pub_pc_</a>;           </div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">   40</a></span>&#160;    PointCloud::Ptr <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">pcl_</a>;  </div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">   42</a></span>&#160;    tf::TransformBroadcaster <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">pub_tf_</a>;  </div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keywordtype\">bool</span> start_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">bootstrap</a>();</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">bootstrappingThread</a>();</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">publishPcl</a>();</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;};</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;}  <span class=\"comment\">// namespace dvs_bootstrapping</span></div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_a7705cc27f5576a7cbce05cd42fd5e9c3\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">dvs_bootstrapping::FrontoPlanarBootstrapper::postBootstrapCalled</a></div><div class=\"ttdeci\">void postBootstrapCalled() override</div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.cpp:67</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_ae5a697b3f40227821f98b245ec212275\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">dvs_bootstrapping::FrontoPlanarBootstrapper::pub_tf_</a></div><div class=\"ttdeci\">tf::TransformBroadcaster pub_tf_</div><div class=\"ttdoc\">to send the first pose </div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.hpp:42</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_a43637fc6e2b7f7e05d92a9f5132970c7\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">dvs_bootstrapping::FrontoPlanarBootstrapper::pub_pc_</a></div><div class=\"ttdeci\">ros::Publisher pub_pc_</div><div class=\"ttdoc\">publisher of the first approximation of the map </div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.hpp:39</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_aaf4d0a5f39993ade1e9d3c38f0e34b6b\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">dvs_bootstrapping::FrontoPlanarBootstrapper::publishPcl</a></div><div class=\"ttdeci\">bool publishPcl()</div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.cpp:99</div></div>\n<div class=\"ttc\" id=\"namespacedvs__bootstrapping_html\"><div class=\"ttname\"><a href=\"namespacedvs__bootstrapping.html\">dvs_bootstrapping</a></div><div class=\"ttdef\"><b>Definition:</b> Bootstrapper.hpp:19</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper_html\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></div><div class=\"ttdef\"><b>Definition:</b> EventsFramesBootstrapper.hpp:22</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_aea843038e505012562c626cd1c25424b\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">dvs_bootstrapping::FrontoPlanarBootstrapper::pcl_</a></div><div class=\"ttdeci\">PointCloud::Ptr pcl_</div><div class=\"ttdoc\">map </div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.hpp:40</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.hpp:29</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_acfc193401e2a3b820b866c5d52a943a8\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">dvs_bootstrapping::FrontoPlanarBootstrapper::bootstrappingThread</a></div><div class=\"ttdeci\">void bootstrappingThread()</div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.cpp:34</div></div>\n<div class=\"ttc\" id=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper_html_a2c3eec8aa1e1647d9f1520046dbbcbd7\"><div class=\"ttname\"><a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">dvs_bootstrapping::FrontoPlanarBootstrapper::bootstrap</a></div><div class=\"ttdeci\">bool bootstrap()</div><div class=\"ttdef\"><b>Definition:</b> FrontoPlanarBootstrapper.cpp:69</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/abstract__bundle__adjustment_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/abstract_bundle_adjustment.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">abstract_bundle_adjustment.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// svo</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo.html\">   14</a></span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;{</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">   18</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;{</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;AbstractBundleAdjustment&gt; Ptr;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">   25</a></span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a>() {}</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a>() {}</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">bundleAdjustment</a>(</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle) = 0;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">loadMapFromBundleAdjustment</a>(</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; new_frames,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; last_frames,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;      <span class=\"keyword\">const</span> MapPtr&amp; map) = 0;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">reset</a>() = 0;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">startThread</a>() = 0;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">quitThread</a>() = 0;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;};</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_a04334dbebb83a25bb96ffccb23be155b\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">svo::AbstractBundleAdjustment::startThread</a></div><div class=\"ttdeci\">virtual void startThread()=0</div><div class=\"ttdoc\">Bundle adjustment can run completely in parallel. Start the thread to do so. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_a355647c9d3d43586cd285825e1422227\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">svo::AbstractBundleAdjustment::loadMapFromBundleAdjustment</a></div><div class=\"ttdeci\">virtual void loadMapFromBundleAdjustment(const FrameBundlePtr &amp;new_frames, const FrameBundlePtr &amp;last_frames, const MapPtr &amp;map)=0</div><div class=\"ttdoc\">Update map with results from bundle adjustment. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_a66493d4508f097b99b90c241db10db0b\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">svo::AbstractBundleAdjustment::quitThread</a></div><div class=\"ttdeci\">virtual void quitThread()=0</div><div class=\"ttdoc\">Stop and join the bundle adjustment thread. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></div><div class=\"ttdoc\">EXPERIMENTAL Defines interface for various bundle adjustment methods. </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:18</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_a35e01f583c981f080f5145d1ef48eab2\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">svo::AbstractBundleAdjustment::AbstractBundleAdjustment</a></div><div class=\"ttdeci\">AbstractBundleAdjustment()</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:25</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_ad40025b532afd75ecfc2b0b5a71e0c4b\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">svo::AbstractBundleAdjustment::bundleAdjustment</a></div><div class=\"ttdeci\">virtual void bundleAdjustment(const FrameBundlePtr &amp;frame_bundle)=0</div><div class=\"ttdoc\">Invoke bundle adjustment. </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html_acda25a78c893ab4eb9cb509b4e85e6fc\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">svo::AbstractBundleAdjustment::reset</a></div><div class=\"ttdeci\">virtual void reset()=0</div><div class=\"ttdoc\">Reset bundle adjustment. </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/annotated.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Class List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>aslam</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>common</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\" target=\"_self\">NumDiffFunctor</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\" target=\"_self\">NumericalDiff</a></td><td class=\"desc\">Modified numerical differentiation code from unsupported/Eigen library </td></tr>\n<tr id=\"row_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\" target=\"_self\">NumericalDiffTraits</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\" target=\"_self\">NumericalDiffTraitsSelector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\" target=\"_self\">NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\" target=\"_self\">ZeroNumericalDiff</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1Aligned.html\" target=\"_self\">Aligned</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\" target=\"_self\">AlignedMap</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\" target=\"_self\">AlignedUnorderedMap</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_1_\" class=\"arrow\" onclick=\"toggleFolder('1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>cv</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_1_0_\" class=\"arrow\" onclick=\"toggleFolder('1_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>HomographyDecomposition</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\" target=\"_self\">_CameraMotion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" target=\"_self\">HomographyDecomp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\" target=\"_self\">HomographyDecompInria</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\" target=\"_self\">HomographyDecompZhang</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_2_\" class=\"arrow\" onclick=\"toggleFolder('2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>depth_from_defocus</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\" target=\"_self\">DepthFromDefocusNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\" target=\"_self\">DepthVector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\" target=\"_self\">DvsMappingNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\" target=\"_self\">InverseDepthVector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\" target=\"_self\">LinearDepthVector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_3_\" class=\"arrow\" onclick=\"toggleFolder('3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>dvs_bootstrapping</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" target=\"_self\">Bootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" target=\"_self\">EventsFramesBootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\" target=\"_self\">FrontoPlanarBootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_4_\" class=\"arrow\" onclick=\"toggleFolder('4_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>evo_utils</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_4_0_\" class=\"arrow\" onclick=\"toggleFolder('4_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>camera</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\" target=\"_self\">PinholeCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_4_1_\" class=\"arrow\" onclick=\"toggleFolder('4_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>select_exposure_DAVIS</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\" target=\"_self\">ExposureSelector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_4_2_\" class=\"arrow\" onclick=\"toggleFolder('4_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>snakify</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\" target=\"_self\">snakify</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_4_3_\" class=\"arrow\" onclick=\"toggleFolder('4_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>tf_to_camera_markers</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\" target=\"_self\">tfToCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_5_\" class=\"arrow\" onclick=\"toggleFolder('5_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>gtsam</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1FastMap.html\" target=\"_self\">FastMap</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1GenericProjectionFactor.html\" target=\"_self\">GenericProjectionFactor</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\" target=\"_self\">SmartProjectionPoseFactor</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_6_\" class=\"arrow\" onclick=\"toggleFolder('6_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>motion_correction</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\" target=\"_self\">WarpUpdateParams</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_7_\" class=\"arrow\" onclick=\"toggleFolder('7_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>pose_to_tf</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\" target=\"_self\">Boostrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_8_\" class=\"arrow\" onclick=\"toggleFolder('8_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>rpg_common</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\" target=\"_self\">BatchWorker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\" target=\"_self\">CallbackHost</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\" target=\"_self\">RealtimeWorker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\" target=\"_self\">ThreadSafeQueue</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\" target=\"_self\">WorkerBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_9_\" class=\"arrow\" onclick=\"toggleFolder('9_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>rqt_evo</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_9_0_\" class=\"arrow\" onclick=\"toggleFolder('9_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>evo</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\" target=\"_self\">Evo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_9_1_\" class=\"arrow\" onclick=\"toggleFolder('9_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>evo_widget</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\" target=\"_self\">EvoWidget</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_10_\" class=\"arrow\" onclick=\"toggleFolder('10_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>rqt_svo</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_10_0_\" class=\"arrow\" onclick=\"toggleFolder('10_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>svo</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\" target=\"_self\">Svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_10_1_\" class=\"arrow\" onclick=\"toggleFolder('10_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>svo_widget</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\" target=\"_self\">SvoWidget</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_11_\" class=\"arrow\" onclick=\"toggleFolder('11_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>std</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\" target=\"_self\">hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_12_\" class=\"arrow\" onclick=\"toggleFolder('12_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacesvo.html\" target=\"_self\">svo</a></td><td class=\"desc\">&lt; for FloatTypeGpu </td></tr>\n<tr id=\"row_12_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>dataset</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\" target=\"_self\">CameraMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\" target=\"_self\">FeatureTrackMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\" target=\"_self\">ImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" target=\"_self\">MeasurementBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_\" class=\"arrow\" onclick=\"toggleFolder('12_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>patch_score</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\" target=\"_self\">ZMSSD</a></td><td class=\"desc\">Zero Mean Sum of Squared Differences Cost </td></tr>\n<tr id=\"row_12_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\" target=\"_self\">AbstractBundleAdjustment</a></td><td class=\"desc\">EXPERIMENTAL Defines interface for various bundle adjustment methods </td></tr>\n<tr id=\"row_12_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\" target=\"_self\">AbstractDetector</a></td><td class=\"desc\">All detectors should derive from this abstract class </td></tr>\n<tr id=\"row_12_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\" target=\"_self\">AbstractInitialization</a></td><td class=\"desc\">Bootstrapping the map from the first two views </td></tr>\n<tr id=\"row_12_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\" target=\"_self\">AllPixelsDetector</a></td><td class=\"desc\">Dummy detector that selects all pixels </td></tr>\n<tr id=\"row_12_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\" target=\"_self\">ArrayInitGeometric</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\" target=\"_self\">ArrayInitOptimization</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\" target=\"_self\">BackendInterface</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\" target=\"_self\">BackendInterfaceOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\" target=\"_self\">BackendOptimizer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\" target=\"_self\">BackendVisualizer</a></td><td class=\"desc\">Publish visualisation messages to ROS </td></tr>\n<tr id=\"row_12_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\" target=\"_self\">BaseOptions</a></td><td class=\"desc\">Options for base frame handler module. Sets tracing and quality options </td></tr>\n<tr id=\"row_12_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\" target=\"_self\">BenchmarkNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\" target=\"_self\">CannyDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Corner.html\" target=\"_self\">Corner</a></td><td class=\"desc\">Temporary container used for corner detection. Features are initialized from these </td></tr>\n<tr id=\"row_12_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\" target=\"_self\">CsvDatasetReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\" target=\"_self\">DepthEstimator</a></td><td class=\"desc\">Depth estimation by minimizing photometric error </td></tr>\n<tr id=\"row_12_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_18_\" class=\"arrow\" onclick=\"toggleFolder('12_18_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\" target=\"_self\">DepthFilter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_18_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\" target=\"_self\">Job</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\" target=\"_self\">DepthFilterOptions</a></td><td class=\"desc\">Depth-filter config parameters </td></tr>\n<tr id=\"row_12_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\" target=\"_self\">DetectorOptions</a></td><td class=\"desc\">Common options of all feature detectors </td></tr>\n<tr id=\"row_12_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FastDetector.html\" target=\"_self\">FastDetector</a></td><td class=\"desc\">FAST detector by Edward Rosten </td></tr>\n<tr id=\"row_12_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\" target=\"_self\">FastGradDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\" target=\"_self\">FeatureRef</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_24_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\" target=\"_self\">FeatureTrack</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_25_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\" target=\"_self\">FeatureTracker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_26_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\" target=\"_self\">FeatureTrackerOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_27_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\" target=\"_self\">FeatureWrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_28_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\" target=\"_self\">FivePointInit</a></td><td class=\"desc\">Tracks features using KLT and then estimate the relative pose using 5pt RANSAC </td></tr>\n<tr id=\"row_12_29_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Frame.html\" target=\"_self\">Frame</a></td><td class=\"desc\">A frame saves the image, the associated features and the estimated pose </td></tr>\n<tr id=\"row_12_30_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\" target=\"_self\">FrameBundle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_31_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\" target=\"_self\">FrameGpu</a></td><td class=\"desc\">Adds GPU data members to the frame base class </td></tr>\n<tr id=\"row_12_32_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\" target=\"_self\">FrameHandlerArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_33_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" target=\"_self\">FrameHandlerBase</a></td><td class=\"desc\">Base class for various VO pipelines. Manages the map and the state machine </td></tr>\n<tr id=\"row_12_34_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\" target=\"_self\">FrameHandlerMono</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_35_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\" target=\"_self\">FrameHandlerStereo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_36_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\" target=\"_self\">GradientDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_37_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\" target=\"_self\">GradientDetectorGrid</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_38_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\" target=\"_self\">GradientHuangMumfordDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_39_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GraphManager.html\" target=\"_self\">GraphManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_40_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\" target=\"_self\">GraphManagerOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_41_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\" target=\"_self\">HomographyInit</a></td><td class=\"desc\">Tracks features using Lucas-Kanade tracker and then estimates a homography </td></tr>\n<tr id=\"row_12_42_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\" target=\"_self\">HostCacheHandler</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_43_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\" target=\"_self\">ImuCalibration</a></td><td class=\"desc\">Settings for the IMU statistics Check the following references for more information about the IMU parameters: </td></tr>\n<tr id=\"row_12_44_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\" target=\"_self\">ImuHandler</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_45_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\" target=\"_self\">ImuInitialization</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_46_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\" target=\"_self\">ImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_47_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\" target=\"_self\">InitializationOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_48_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\" target=\"_self\">KeypointIdentifier</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_49_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Map.html\" target=\"_self\">Map</a></td><td class=\"desc\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> object which saves all keyframes which are in a map </td></tr>\n<tr id=\"row_12_50_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_50_\" class=\"arrow\" onclick=\"toggleFolder('12_50_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Matcher.html\" target=\"_self\">Matcher</a></td><td class=\"desc\">Patch-matcher for reprojection-matching and epipolar search in triangulation </td></tr>\n<tr id=\"row_12_50_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\" target=\"_self\">Options</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_51_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\" target=\"_self\">OccupandyGrid2D</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_52_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\" target=\"_self\">OneShotInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_53_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\" target=\"_self\">OptimizerBackendOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_54_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\" target=\"_self\">PatchNormal</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_55_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Point.html\" target=\"_self\">Point</a></td><td class=\"desc\">A 3D point on the surface of the scene </td></tr>\n<tr id=\"row_12_56_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\" target=\"_self\">PointIdProvider</a></td><td class=\"desc\">Thread-safe point-ID provider </td></tr>\n<tr id=\"row_12_57_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_57_\" class=\"arrow\" onclick=\"toggleFolder('12_57_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\" target=\"_self\">PoseOptimizer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_57_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\" target=\"_self\">Statistics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_58_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\" target=\"_self\">PreintegratedImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_59_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_59_\" class=\"arrow\" onclick=\"toggleFolder('12_59_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Reprojector.html\" target=\"_self\">Reprojector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_59_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\" target=\"_self\">Candidate</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_59_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\" target=\"_self\">Statistics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_60_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\" target=\"_self\">ReprojectorOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_61_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SeedRef.html\" target=\"_self\">SeedRef</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_62_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\" target=\"_self\">SobelDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_63_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\" target=\"_self\">SparseImgAlign</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_12_64_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\" target=\"_self\">SparseImgAlignBase</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_12_65_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\" target=\"_self\">SparseImgAlignGpu</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_12_66_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\" target=\"_self\">SparseImgAlignOptions</a></td><td class=\"desc\">Sparse Image Alignment Options </td></tr>\n<tr id=\"row_12_67_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\" target=\"_self\">SparseImgAlignState</a></td><td class=\"desc\">State to be estimated </td></tr>\n<tr id=\"row_12_68_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1StereoInit.html\" target=\"_self\">StereoInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_69_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\" target=\"_self\">StereoTriangulation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_70_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\" target=\"_self\">StereoTriangulationOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_71_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\" target=\"_self\">SvoInterface</a></td><td class=\"desc\">SVO Interface </td></tr>\n<tr id=\"row_12_72_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\" target=\"_self\">SvoNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_73_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\" target=\"_self\">TwoPointInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_74_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\" target=\"_self\">ViNodeState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_75_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Visualizer.html\" target=\"_self\">Visualizer</a></td><td class=\"desc\">Publish visualisation messages to ROS </td></tr>\n<tr id=\"row_13_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_13_\" class=\"arrow\" onclick=\"toggleFolder('13_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>svo_ros</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_13_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\" target=\"_self\">SvoNodeBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_14_\" class=\"arrow\" onclick=\"toggleFolder('14_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>trigger_map_expansion</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_14_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\" target=\"_self\">TriggerMapExpansion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_15_\" class=\"arrow\" onclick=\"toggleFolder('15_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>vikit_py</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_15_0_\" class=\"arrow\" onclick=\"toggleFolder('15_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>pinhole_camera</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\" target=\"_self\">PinholeCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_15_1_\" class=\"arrow\" onclick=\"toggleFolder('15_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>ros_node</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\" target=\"_self\">RosNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_15_2_\" class=\"arrow\" onclick=\"toggleFolder('15_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>test_transformations</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\" target=\"_self\">TestTransformations</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_15_3_\" class=\"arrow\" onclick=\"toggleFolder('15_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>transformations</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_3_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\" target=\"_self\">Arcball</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_16_\" class=\"arrow\" onclick=\"toggleFolder('16_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>vk</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_16_0_\" class=\"arrow\" onclick=\"toggleFolder('16_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>cameras</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\" target=\"_self\">AtanDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" target=\"_self\">CameraGeometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" target=\"_self\">CameraGeometryBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\" target=\"_self\">EquidistantDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\" target=\"_self\">EquidistantFisheyeGeometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\" target=\"_self\">EquidistantFisheyeProjection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\" target=\"_self\">NCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\" target=\"_self\">NoDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\" target=\"_self\">OmniGeometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\" target=\"_self\">OmniProjection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\" target=\"_self\">PinholeProjection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\" target=\"_self\">ProjectionResult</a></td><td class=\"desc\">This struct is returned by the camera projection methods and holds the result state of the projection operation </td></tr>\n<tr id=\"row_16_0_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\" target=\"_self\">RadialTangentialDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_16_1_\" class=\"arrow\" onclick=\"toggleFolder('16_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>solver</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\" target=\"_self\">HuberWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\" target=\"_self\">MADScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">MiniLeastSquaresSolver</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" target=\"_self\">MiniLeastSquaresSolverOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\" target=\"_self\">NormalDistributionScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" target=\"_self\">ScaleEstimator</a></td><td class=\"desc\">Scale Estimators to estimate standard deviation of a distribution of errors </td></tr>\n<tr id=\"row_16_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\" target=\"_self\">TukeyWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\" target=\"_self\">UnitScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\" target=\"_self\">UnitWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\" target=\"_self\">WeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1Homography.html\" target=\"_self\">Homography</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1LogItem.html\" target=\"_self\">LogItem</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\" target=\"_self\">PerformanceMonitor</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1RingBuffer.html\" target=\"_self\">RingBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1Sample.html\" target=\"_self\">Sample</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1Timer.html\" target=\"_self\">Timer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1UserInputThread.html\" target=\"_self\">UserInputThread</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_17_\" class=\"arrow\" onclick=\"toggleFolder('17_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><b>YAML</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\" target=\"_self\">convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\" target=\"_self\">convert&lt; std::queue&lt; ValueType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\" target=\"_self\">convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\" target=\"_self\">convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\" target=\"_self\">convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\" target=\"_self\">convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\" target=\"_self\">convert&lt; vk::cameras::CameraGeometryBase &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\" target=\"_self\">convert&lt; vk::cameras::NCamera &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structArgumentType.html\" target=\"_self\">ArgumentType</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\" target=\"_self\">ArgumentType&lt; T(U)&gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classCamerasTest.html\" target=\"_self\">CamerasTest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_21_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classDvsReconstruction.html\" target=\"_self\">DvsReconstruction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classDvsTrackingNodelet.html\" target=\"_self\">DvsTrackingNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_23_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_23_\" class=\"arrow\" onclick=\"toggleFolder('23_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classLKSE3.html\" target=\"_self\">LKSE3</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_23_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\" target=\"_self\">Keypoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classMedianFilterTest.html\" target=\"_self\">MedianFilterTest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_25_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classMosaic.html\" target=\"_self\">Mosaic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classTracker.html\" target=\"_self\">Tracker</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/atan__distortion_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/atan_distortion.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">atan_distortion.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// This class implements the FOV distortion model of Deverneay and Faugeras,</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// Straight lines have to be straight, 2001.</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">   13</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> initializeParameters(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; s)</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    s_ = s;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    s_inv_ = 1.0/s_;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    tans_ = 2.0*std::tan(s_/2.0);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    tans_inv_ = 1.0/tans_;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  }</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; s)</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  {</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    initializeParameters(s);</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  }</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a>(</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      <span class=\"keyword\">const</span> Eigen::VectorXd&amp; parameters)</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  {</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    CHECK(parameters.size() == 1);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    initializeParameters(parameters(0));</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  }</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> distort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = std::sqrt(x*x + y*y);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> factor = (r &lt; 0.001) ? 1.0 : s_inv_* std::atan(r * tans_) / r;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    x *= factor;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    y *= factor;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  }</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector2d distort(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; vector)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = vector.norm();</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> factor = (r &lt; 0.001) ? 1.0 : s_inv_* std::atan(r * tans_) / r;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordflow\">return</span> factor * vector;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Matrix2d jacobian(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; <span class=\"comment\">/*vector*/</span>)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Not implemented yet!&quot;</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  }</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> undistort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dist_r = std::sqrt(x*x + y*y);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = std::tan(dist_r * s_) * tans_inv_;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_factor = (dist_r &gt; 0.01) ? r / dist_r : 1.0;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    x *= d_factor;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    y *= d_factor;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  }</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(std::ostream&amp; out)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    out &lt;&lt; <span class=\"stringliteral\">&quot;  Distortion: Atan(&quot;</span> &lt;&lt; s_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  }</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">enum</span> IntrinsicParameters</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  {</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    kRadialDistortionFactor</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  };</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"comment\">// returns distortion parameters as vector</span></div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"comment\">// [s_]</span></div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">inline</span> Eigen::VectorXd getDistortionParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    Eigen::VectorXd distortion(1);</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    distortion(0) = s_;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keywordflow\">return</span> distortion;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  }</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keywordtype\">double</span> s_;      <span class=\"comment\">// Radial distortion factor</span></div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keywordtype\">double</span> s_inv_;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keywordtype\">double</span> tans_;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keywordtype\">double</span> tans_inv_;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;};</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1AtanDistortion_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></div><div class=\"ttdef\"><b>Definition:</b> atan_distortion.h:13</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backend__factory_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/backend_factory.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend_factory.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">class </span>BackendInterface;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span>backend_factory {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;std::shared_ptr&lt;BackendInterface&gt; makeBackend(<span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh);</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;} <span class=\"comment\">// namespace vin_factory</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backend__interface_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend/backend_interface.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend_interface.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/abstract_bundle_adjustment.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/backend/backend_types.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// fwd</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">class </span>BackendOptimizer;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">class </span>GraphManager;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">class </span>ImuHandler;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">struct </span>GraphManagerOptions;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">struct </span>OptimizerBackendOptions;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BackendInterfaceOptions.html\">   16</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;{</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  std::string trace_dir = <span class=\"stringliteral\">&quot;/tmp&quot;</span>;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">   19</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">isam_wait_time_ms</a> = 2;            </div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keywordtype\">bool</span> add_imu_factors = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keywordtype\">size_t</span> n_frames_in_init_ba = 8u;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keywordtype\">bool</span> use_smart_factors = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keywordtype\">size_t</span> min_num_obs = 2u;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;};</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">enum class</span> EstimatorState {</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  kUninitialized,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  kInitialBundleAdjustment,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  kRunning</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;};</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1BackendInterface.html\">   32</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;BackendInterface&gt; Ptr;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <a class=\"code\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a> options_;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"comment\">// modules</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  std::shared_ptr&lt;BackendOptimizer&gt; optimizer_;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  std::shared_ptr&lt;GraphManager&gt; graph_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  std::shared_ptr&lt;ImuHandler&gt; imu_handler_;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"comment\">// state</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  EstimatorState estimator_state_ = EstimatorState::kUninitialized;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <a class=\"code\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a> last_state_;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  BundleId last_added_index_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  int64_t last_added_frame_stamp_ns_;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  BundleId last_loaded_estimate_index_;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordtype\">size_t</span> num_frames_in_backend_ = 0u;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <a class=\"code\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a>(</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a>&amp; graph_manager_options,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a>&amp; optimizer_options);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> bundleAdjustment(</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> loadMapFromBundleAdjustment(</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; new_frames,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; last_frames,</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      <span class=\"keyword\">const</span> MapPtr&amp; map) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> reset() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> startThread() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> quitThread() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">void</span> initializeBackend();</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keywordtype\">void</span> addVisualMeasurementsToGraph(</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle);</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keywordtype\">void</span> addInertialMeasurementsToGraph(</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  <span class=\"keywordtype\">void</span> addInitialStateAndPriorsToGraph(</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <span class=\"keyword\">const</span> BundleId&amp; state_index,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a>&amp; state);</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;};</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1BackendInterfaceOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></div><div class=\"ttdef\"><b>Definition:</b> backend_interface.h:16</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1BackendInterface_html\"><div class=\"ttname\"><a href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></div><div class=\"ttdef\"><b>Definition:</b> backend_interface.h:32</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1OptimizerBackendOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></div><div class=\"ttdef\"><b>Definition:</b> backend_optimizer.h:22</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1BackendInterfaceOptions_html_a80931a61a6c184c11b700a8e06b12d8f\"><div class=\"ttname\"><a href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">svo::BackendInterfaceOptions::isam_wait_time_ms</a></div><div class=\"ttdeci\">int isam_wait_time_ms</div><div class=\"ttdoc\">Time we wait for iSAM to release lock. </div><div class=\"ttdef\"><b>Definition:</b> backend_interface.h:19</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractBundleAdjustment_html\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></div><div class=\"ttdoc\">EXPERIMENTAL Defines interface for various bundle adjustment methods. </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:18</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1GraphManagerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> graph_manager.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backend__optimizer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend/backend_optimizer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend_optimizer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;condition_variable&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/linear/NoiseModel.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/nonlinear/Values.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/nonlinear/ISAM2.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/geometry/Pose3.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/geometry/Point3.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">// fwd</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">class </span>GraphManager;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1OptimizerBackendOptions.html\">   22</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;{</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keywordtype\">size_t</span> max_iterations_per_update = 10;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keywordtype\">bool</span> verbose = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <span class=\"keywordtype\">bool</span> output_errors = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  std::string trace_dir = <span class=\"stringliteral\">&quot;/tmp&quot;</span>;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordtype\">double</span> isam_relinearize_thresh = 0.1;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keywordtype\">double</span> isam_relinearize_skip = 10.0;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordtype\">double</span> isam_wildfire_thresh = 0.001;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keywordtype\">bool</span> isam_detailed_results = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;};</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1BackendOptimizer.html\">   34</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;{</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;BackendOptimizer&gt; Ptr;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <a class=\"code\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a>(</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;      std::shared_ptr&lt;GraphManager&gt;&amp; graph);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a>();</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">void</span> initialize();</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordtype\">void</span> optimize();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <a class=\"code\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a> options_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  std::shared_ptr&lt;gtsam::ISAM2&gt; isam_;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  std::shared_ptr&lt;GraphManager&gt; graph_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"comment\">// last computed estimate</span></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  std::mutex estimate_mut_;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  gtsam::Values estimate_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  BundleId estimate_state_index_ = -1; <span class=\"comment\">// Id of last state in estimate.</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"comment\">// thread</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  std::mutex optimizer_cond_var_mut_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  std::condition_variable optimizer_condition_var_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  std::shared_ptr&lt;std::thread&gt; thread_;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keywordtype\">bool</span> quit_thread_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordtype\">void</span> startThread();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">void</span> quitThread();</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"comment\">// protected -------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keywordtype\">void</span> threadLoop();</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keywordtype\">bool</span> optimizeImpl();</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;};</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1OptimizerBackendOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></div><div class=\"ttdef\"><b>Definition:</b> backend_optimizer.h:22</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1BackendOptimizer_html\"><div class=\"ttname\"><a href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></div><div class=\"ttdef\"><b>Definition:</b> backend_optimizer.h:34</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backend__types_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend/backend_types.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend_types.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ViNodeState.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a> {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keyword\">explicit</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a>(<span class=\"keyword\">const</span> Transformation&amp; T_W_B)</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;      :  <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a>(T_W_B),</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;         <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a>(Eigen::Vector3d::Zero()),</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;         <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a>(Eigen::Vector3d::Zero()),</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;         <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a>(Eigen::Vector3d::Zero()) {}</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  ViNodeState()</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;      :  <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a>(Eigen::Vector3d::Zero()),</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;         <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a>(Eigen::Vector3d::Zero()),</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;         <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a>(Eigen::Vector3d::Zero()) {}</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  ViNodeState(<span class=\"keyword\">const</span> Transformation&amp; T_W_B, <span class=\"keyword\">const</span> Eigen::Vector3d&amp; W_v_B,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;              <span class=\"keyword\">const</span> Eigen::Vector3d&amp; accelerometer_bias, <span class=\"keyword\">const</span> Eigen::Vector3d&amp; gyro_bias)</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;      : <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a>(T_W_B), <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a>(W_v_B),</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;        <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a>(accelerometer_bias), <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a>(gyro_bias) {}</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keyword\">virtual</span> ~ViNodeState() {}</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Transformation&amp; get_T_W_B()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a>; }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">inline</span> Transformation&amp; get_T_W_B() { <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a>; }</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Eigen::Vector3d&amp; get_W_v_B()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a>; }</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Eigen::Vector3d&amp; getAccBias()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a>; }</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Eigen::Vector3d&amp; getGyroBias()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a>; }</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Matrix&lt;double, 6, 1&gt; getImuBias()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keywordflow\">return</span> (Eigen::Matrix&lt;double, 6, 1&gt;() &lt;&lt; getAccBias(), getGyroBias()).finished();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> set_T_W_B(<span class=\"keyword\">const</span> Transformation&amp; T_W_B) { <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a> = T_W_B; }</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> set_W_v_B(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; W_v_B) { <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a> = W_v_B; }</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setAccBias(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias) { <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a> = acc_bias; }</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setGyroBias(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; gyro_bias) { <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a> = gyro_bias; }</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">   49</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a>;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">   51</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a>;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">   53</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">   55</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a>;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;};</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html_a7ab8dff69a84a9131f8d9709573084d3\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">svo::ViNodeState::W_v_B_</a></div><div class=\"ttdeci\">Eigen::Vector3d W_v_B_</div><div class=\"ttdoc\">The velocity (m/s). </div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:51</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html_a6b4cdfc57b7a672ab0d058750b9548de\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">svo::ViNodeState::gyro_bias_</a></div><div class=\"ttdeci\">Eigen::Vector3d gyro_bias_</div><div class=\"ttdoc\">The gyroscope bias (rad/s). </div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:55</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html_a76790f1d53f5d1eaee0b8621736df380\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">svo::ViNodeState::T_W_B_</a></div><div class=\"ttdeci\">Transformation T_W_B_</div><div class=\"ttdoc\">The pose taking points from the body frame to the world frame. </div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:49</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html_a95b661260623cfd6e59da5faceff6d64\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">svo::ViNodeState::acc_bias_</a></div><div class=\"ttdeci\">Eigen::Vector3d acc_bias_</div><div class=\"ttdoc\">The accelerometer bias (m/s^2). </div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:53</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ViNodeState_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></div><div class=\"ttdef\"><b>Definition:</b> backend_types.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backend__visualizer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/backend_visualizer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend_visualizer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;pcl_ros/point_cloud.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_types.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/backend/smart_factors_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceswe.html\">swe</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keyword\">class </span>SweGtsamBookeeper;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;}</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1BackendVisualizer.html\">   24</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;{</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;BackendVisualizer&gt; Ptr;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">typedef</span> pcl::PointXYZ PointType;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">typedef</span> pcl::PointCloud&lt;PointType&gt; PointCloud;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> std::string kWorldFrame;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  ros::NodeHandle pnh_;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">size_t</span> trace_id_;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  std::string trace_dir_;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  ros::Publisher pub_markers_;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  ros::Publisher pub_pc_;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">double</span> vis_scale_;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  std::ofstream ofs_states_;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  std::ofstream ofs_covariance_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <a class=\"code\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a>(<span class=\"keyword\">const</span> std::string&amp; trace_dir,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;                    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">void</span> visualizeFrames(<span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordtype\">void</span> visualizePoints(<span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordtype\">void</span> publishPointcloud(<span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keywordtype\">void</span> visualizeSmartFactors(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classgtsam_1_1FastMap.html\">SmartFactorMap</a>&amp; smart_factors);</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keywordtype\">void</span> visualizeVelocity(<span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keywordtype\">void</span> visualizePoseCovariance(</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_W_B,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 6&gt;&amp; covariance);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keywordtype\">void</span> tracePose(std::map&lt;<span class=\"keywordtype\">int</span>, int64_t, std::less&lt;int&gt;&gt; frameid_timestamp_map,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;                 <span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keywordtype\">void</span> traceStates(<span class=\"keyword\">const</span> gtsam::Values&amp; values);</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">void</span> traceCovariance(</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 6&gt;&amp; C,</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;};</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;} <span class=\"comment\">// end namespace svo</span></div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"ttc\" id=\"classgtsam_1_1FastMap_html\"><div class=\"ttname\"><a href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap&lt; int, std::pair&lt; boost::shared_ptr&lt; SmartFactor &gt;, int &gt; &gt;</a></div></div>\n<div class=\"ttc\" id=\"namespaceswe_html\"><div class=\"ttname\"><a href=\"namespaceswe.html\">swe</a></div><div class=\"ttdef\"><b>Definition:</b> backend_visualizer.h:18</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1BackendVisualizer_html\"><div class=\"ttname\"><a href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></div><div class=\"ttdoc\">Publish visualisation messages to ROS. </div><div class=\"ttdef\"><b>Definition:</b> backend_visualizer.h:24</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/backtrace_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/backtrace.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backtrace.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;cxxabi.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;execinfo.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;sstream&gt;</span>  <span class=\"comment\">// NOLINT</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span>common {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// Adapted from http://panthema.net/2008/0901-stacktrace-demangled/ .</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">inline</span> std::string backtrace() {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  constexpr <span class=\"keywordtype\">size_t</span> kBacktraceLimit = 64;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keywordtype\">void</span>* array[kBacktraceLimit];</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keywordtype\">size_t</span> size;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  size = ::backtrace(array, kBacktraceLimit);</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"comment\">// Causes</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"comment\">// http://valgrind.org/docs/manual/mc-manual.html#opt.show-mismatched-frees ,</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"comment\">// but that is ok.</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  std::unique_ptr&lt;char * []&gt; symbollist(backtrace_symbols(array, size));</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keywordflow\">if</span> (size == 0u) {</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"stringliteral\">&quot;  Backtrace empty, possibly corrupt!&quot;</span>;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  }</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  std::stringstream result;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> i = 1u; i &lt; size; i++) {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keywordtype\">char</span>* begin_name = 0, *begin_offset = 0, *end_offset = 0;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"comment\">// Find parentheses and +address offset surrounding the mangled name:</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"comment\">// ./module(function+0x15c) [0x8048a6d]</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">char</span>* p = symbollist[i]; *p; ++p) {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;      <span class=\"keywordflow\">if</span> (*p == <span class=\"charliteral\">&#39;(&#39;</span>) {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;        begin_name = p;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (*p == <span class=\"charliteral\">&#39;+&#39;</span>) {</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;        begin_offset = p;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (*p == <span class=\"charliteral\">&#39;)&#39;</span> &amp;&amp; begin_offset) {</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;        end_offset = p;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;        <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      }</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    }</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keywordflow\">if</span> (begin_name &amp;&amp; begin_offset &amp;&amp; end_offset &amp;&amp; begin_name &lt; begin_offset) {</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      *begin_name++ = <span class=\"charliteral\">&#39;\\0&#39;</span>;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      *begin_offset++ = <span class=\"charliteral\">&#39;\\0&#39;</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      *end_offset = <span class=\"charliteral\">&#39;\\0&#39;</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;      <span class=\"comment\">// Mangled name is now in [begin_name, begin_offset) and caller</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;      <span class=\"comment\">// offset in [begin_offset, end_offset).</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;      <span class=\"keywordtype\">int</span> status;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;      <span class=\"comment\">// Causes</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      <span class=\"comment\">// http://valgrind.org/docs/manual/mc-manual.html#opt.show-mismatched-frees</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"comment\">// but that is ok.</span></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      std::unique_ptr&lt;char&gt; demangled(</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;          abi::__cxa_demangle(begin_name, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, &amp;status));</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;      <span class=\"keywordflow\">if</span> (status == 0) {</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;        result &lt;&lt; <span class=\"stringliteral\">&quot;  &quot;</span> &lt;&lt; symbollist[i] &lt;&lt; <span class=\"stringliteral\">&quot; : &quot;</span> &lt;&lt; demangled.get() &lt;&lt; <span class=\"stringliteral\">&quot;+&quot;</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;               &lt;&lt; begin_offset &lt;&lt; <span class=\"stringliteral\">&quot;\\n&quot;</span>;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;      } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;        <span class=\"comment\">// Demangling failed. Output function name as a C function with</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;        <span class=\"comment\">// no arguments.</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;        result &lt;&lt; <span class=\"stringliteral\">&quot;  &quot;</span> &lt;&lt; symbollist[i] &lt;&lt; <span class=\"stringliteral\">&quot; : &quot;</span> &lt;&lt; begin_name &lt;&lt; <span class=\"stringliteral\">&quot;+&quot;</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;               &lt;&lt; begin_offset &lt;&lt; <span class=\"stringliteral\">&quot;\\n&quot;</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      }</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      <span class=\"comment\">// Couldn&#39;t parse the line? Print the whole line.</span></div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      result &lt;&lt; <span class=\"stringliteral\">&quot;  &quot;</span> &lt;&lt; symbollist[i] &lt;&lt; <span class=\"stringliteral\">&quot;\\n&quot;</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  }</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keywordflow\">return</span> result.str();</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;}</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;}  <span class=\"comment\">// namespace common</span></div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/batch__worker_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common/batch_worker.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">batch_worker.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;atomic&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common/threadsafe_queue.h&quot;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common/worker_base.h&quot;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a> {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DataType&gt;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classrpg__common_1_1BatchWorker.html\">   14</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;{</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <a class=\"code\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>() : paused_(<span class=\"keyword\">true</span>)</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160; {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    resume();</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160; }</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>()</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  {</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    shutdown();</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  }</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordtype\">void</span> addTask(<span class=\"keyword\">const</span> DataType&amp; item)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    queue_.push(item);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  }</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> shutdown()<span class=\"keyword\"> override</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordflow\">if</span> (!thread_.joinable())</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;      <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    }</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    queue_.shutdown();</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    thread_.join();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> softShutdown()<span class=\"keyword\"> override</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keywordflow\">if</span> (!thread_.joinable())</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    {</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    }</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    queue_.waitUntilEmpty();</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    queue_.shutdown();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    thread_.join();</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> pause()<span class=\"keyword\"> override</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    CHECK(!paused_);</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    CHECK(thread_.joinable());</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    paused_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    thread_.join();</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  }</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> isPaused()<span class=\"keyword\"> const override</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keywordflow\">return</span> paused_;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  }</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> resume()<span class=\"keyword\"> override</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    CHECK(paused_);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    CHECK(!thread_.joinable());</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    paused_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    thread_ = std::thread(&amp;<a class=\"code\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker&lt;DataType&gt;::workLoop</a>, <span class=\"keyword\">this</span>);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  }</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> process(<span class=\"keyword\">const</span> std::vector&lt;DataType&gt;&amp; item) = 0;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keywordtype\">void</span> workLoop()</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  {</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    std::vector&lt;DataType&gt; items;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordflow\">while</span> (!paused_ &amp;&amp; queue_.waitAndPopAvailable(&amp;items))</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    {</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      process(items);</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    }</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  }</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <a class=\"code\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue&lt;DataType&gt;</a> queue_;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  std::atomic&lt;bool&gt; paused_;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  std::thread thread_;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;};</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;}  <span class=\"comment\">// namespace rpg_common</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg</a> = <a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a>;</div><div class=\"ttc\" id=\"classrpg__common_1_1WorkerBase_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></div><div class=\"ttdef\"><b>Definition:</b> worker_base.h:7</div></div>\n<div class=\"ttc\" id=\"namespacerpg__common_html\"><div class=\"ttname\"><a href=\"namespacerpg__common.html\">rpg_common</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:11</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1BatchWorker_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:14</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1ThreadSafeQueue_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue</a></div><div class=\"ttdef\"><b>Definition:</b> threadsafe_queue.h:13</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/blender__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/blender_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">blender_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * blender_utils.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: Feb 13, 2014</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: cforster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_BLENDER_UTILS_H_</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#define VIKIT_BLENDER_UTILS_H_</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;list&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/math_utils.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">namespace </span>blender_utils {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keywordtype\">void</span> loadBlenderDepthmap(</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    <span class=\"keyword\">const</span> std::string file_name,</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> img_width,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> img_height,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    cv::Mat&amp; z_map)</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;{</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  std::ifstream file_stream(file_name.c_str());</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  CHECK(file_stream.is_open()) &lt;&lt; <span class=\"stringliteral\">&quot;file &#39;&quot;</span> &lt;&lt; file_name &lt;&lt; <span class=\"stringliteral\">&quot;&#39; could not be opened.&quot;</span>;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  z_map = cv::Mat(img_height, img_width, CV_32FC1);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keywordtype\">float</span> * img_ptr = z_map.ptr&lt;<span class=\"keywordtype\">float</span>&gt;();</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keywordtype\">float</span> depth;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> y=0; y&lt;img_height; ++y)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> x=0; x&lt;img_width; ++x, ++img_ptr)</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    {</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      file_stream &gt;&gt; depth;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"comment\">// blender:</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      *img_ptr = depth;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      <span class=\"comment\">// povray</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;      <span class=\"comment\">// *img_ptr = depth/100.0; // depth is in [cm], we want [m]</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      <span class=\"keywordflow\">if</span>(file_stream.peek() == <span class=\"charliteral\">&#39;\\n&#39;</span> &amp;&amp; x != img_width-1 &amp;&amp; y != img_height-1)</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;        printf(<span class=\"stringliteral\">&quot;WARNING: did not read the full depthmap!\\n&quot;</span>);</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    }</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  }</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;}</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;} <span class=\"comment\">// namespace blender_utils</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_BLENDER_UTILS_H_</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/callback__host_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common/callback_host.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">callback_host.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;functional&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_set&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common/batch_worker.h&quot;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common/realtime_worker.h&quot;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a> {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ... CallbackArgs&gt;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classrpg__common_1_1CallbackHost.html\">   14</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classrpg__common_1_1CallbackHost.html\">CallbackHost</a></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;{</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">typedef</span> std::function&lt;void(CallbackArgs...)&gt; Callback;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keywordtype\">void</span> addCallback(<span class=\"keyword\">const</span> Callback&amp; callback)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    CHECK(callback) &lt;&lt; <span class=\"stringliteral\">&quot;Callback isn&#39;t a valid function!&quot;</span>;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    CHECK(callbacks_.emplace(callback).second)</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    &lt;&lt; <span class=\"stringliteral\">&quot;Duplicate callback addition!&quot;</span>;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  }</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <span class=\"keywordtype\">void</span> linkBatchWorker(<a class=\"code\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker&lt;CallbackArgs...&gt;</a>* worker)</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    CHECK_NOTNULL(worker);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    addCallback([worker](CallbackArgs... args){</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      worker-&gt;addTask(args...);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    });</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">void</span> linkRealtimeWorker(<a class=\"code\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker&lt;CallbackArgs...&gt;</a>* worker)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    CHECK_NOTNULL(worker);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    addCallback([worker](CallbackArgs... args){</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      worker-&gt;addTask(args...);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    });</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  }</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160; <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">void</span> triggerCallbacks(CallbackArgs... args)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> Callback&amp; callback : callbacks_)</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    {</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      callback(args...);</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    }</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    VLOG(40) &lt;&lt; callbacks_.size() &lt;&lt; <span class=\"stringliteral\">&quot; callbacks processed.&quot;</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  }</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  std::unordered_set&lt;Callback&gt; callbacks_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;};</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;}  <span class=\"comment\">// namespace rpg_common</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacestd.html\">std</a> {</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ... CallbackArgs&gt;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">   59</a></span>&#160;<span class=\"keyword\">struct </span>hash&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::function&lt;void(CallbackArgs...)&gt;&gt;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;{</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keywordtype\">size_t</span> operator()(<span class=\"keyword\">const</span> std::function&lt;<span class=\"keywordtype\">void</span>(CallbackArgs...)&gt;&amp; x)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    CHECK(x);</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    void (*<span class=\"keyword\">const</span>* pointer)(CallbackArgs...) =</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;        x.template target&lt;void(*)(CallbackArgs...)&gt;();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    <span class=\"keywordflow\">if</span> (pointer)  <span class=\"comment\">// Functor is a function pointer.</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    {</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      <span class=\"keywordflow\">return</span> std::hash&lt;const void*&gt;()(reinterpret_cast&lt;const void*&gt;(pointer));</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    }</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    <span class=\"keywordflow\">else</span>  <span class=\"comment\">// Functor is a lambda.</span></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    {</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;      <span class=\"keywordflow\">return</span> std::hash&lt;std::string&gt;()(x.target_type().name());</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  }</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;};</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ... CallbackArgs&gt;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"keywordtype\">bool</span> operator ==(</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    <span class=\"keyword\">const</span> std::function&lt;<span class=\"keywordtype\">void</span>(CallbackArgs...)&gt;&amp; a,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keyword\">const</span> std::function&lt;<span class=\"keywordtype\">void</span>(CallbackArgs...)&gt;&amp; b)</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;{</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  CHECK(a);</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  CHECK(b);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  void (*<span class=\"keyword\">const</span>* a_pointer)(CallbackArgs...) =</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      a.template target&lt;void(*)(CallbackArgs...)&gt;();</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  void (*<span class=\"keyword\">const</span>* b_pointer)(CallbackArgs...) =</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      b.template target&lt;void(*)(CallbackArgs...)&gt;();</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordflow\">if</span> (a_pointer)  <span class=\"comment\">// Functor is a function pointer.</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  {</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keywordflow\">return</span> a_pointer == b_pointer;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  }</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  <span class=\"keywordflow\">else</span>  <span class=\"comment\">// Functor is a lambda.</span></div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  {</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    <span class=\"keywordflow\">return</span> a.target_type().name() == b.target_type().name();</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  }</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;}</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;}  <span class=\"comment\">// namespace std</span></div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg</a> = <a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a>;</div><div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"namespacerpg__common_html\"><div class=\"ttname\"><a href=\"namespacerpg__common.html\">rpg_common</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:11</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1RealtimeWorker_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker</a></div><div class=\"ttdef\"><b>Definition:</b> realtime_worker.h:10</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1CallbackHost_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:14</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1BatchWorker_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera-yaml-serialization_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/yaml/camera-yaml-serialization.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b52211d97cb29aa6c603e5e675788789.html\">yaml</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera-yaml-serialization.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#pragma GCC diagnostic ignored &quot;-Wdeprecated-declarations&quot;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;yaml-cpp/yaml.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma diagnostic pop</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">class </span>CameraGeometryBase;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceYAML.html\">YAML</a> {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">template</span>&lt;&gt;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">   17</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::shared_ptr&lt;vk::cameras::CameraGeometryBase&gt;&gt; {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, std::shared_ptr&lt;vk::cameras::CameraGeometryBase&gt;&amp; camera);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> std::shared_ptr&lt;vk::cameras::CameraGeometryBase&gt;&amp; camera);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;};</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">template</span>&lt;&gt;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">   27</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacevk.html\">vk</a>::cameras::CameraGeometryBase&gt; {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>&amp; camera);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>&amp; camera);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;};</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;}  <span class=\"comment\">// namespace YAML</span></div><div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"namespaceYAML_html\"><div class=\"ttname\"><a href=\"namespaceYAML.html\">YAML</a></div><div class=\"ttdef\"><b>Definition:</b> camera-yaml-serialization.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/camera.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\"># include &lt;vikit/cameras/ncamera.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\"># include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/evo_utils/camera.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef EVO_UTILS_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define EVO_UTILS_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;camera_info_manager/camera_info_manager.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;gflags/gflags.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;ros/node_handle.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;ros/time.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;tf_conversions/tf_eigen.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common_ros/params_helper.hpp&quot;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceevo__utils_1_1camera.html\">evo_utils::camera</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keywordtype\">void</span> precomputeRectificationTable(</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    std::vector&lt;cv::Point2f&gt;&amp; rectified_points,</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    <span class=\"keyword\">const</span> image_geometry::PinholeCameraModel&amp; cam);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;image_geometry::PinholeCameraModel loadPinholeCamera(ros::NodeHandle&amp; nh);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Vector3d BearingVector;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Vector2d Keypoint;  <span class=\"comment\">// subpixel pixel coordinate</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Vector3d Point;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">   47</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a> {</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a>() {}</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">   60</a></span>&#160;    <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">PinholeCamera</a>(<span class=\"keywordtype\">int</span> width, <span class=\"keywordtype\">int</span> height, <span class=\"keywordtype\">float</span> fx, <span class=\"keywordtype\">float</span> fy, <span class=\"keywordtype\">float</span> cx, <span class=\"keywordtype\">float</span> cy)</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;        : <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">width_</a>(width), <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">height_</a>(height), <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a>(fx), <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a>(fy), <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>(cx), <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>(cy) {</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">width_</a>, 0);</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">height_</a>, 0);</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a>, 0.0);</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a>, 0.0);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>, 0.0);</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;        CHECK_GT(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>, 0.0);</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;        <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a> &lt;&lt; (float)<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a>, 0.f, (<span class=\"keywordtype\">float</span>)<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>, 0.f, (float)<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a>, (<span class=\"keywordtype\">float</span>)<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>, 0.f,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;            0.f, 1.f;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;        <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">Kinv_</a> = <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a>.inverse();</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">   82</a></span>&#160;    <span class=\"keyword\">inline</span> Keypoint <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">project3dToPixel</a>(<span class=\"keyword\">const</span> Point&amp; P) {</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;        CHECK_GE(std::fabs(P[2]), 1e-6);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;        <span class=\"keywordflow\">return</span> Keypoint(<a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a> * P[0] / P[2] + <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>, <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a> * P[1] / P[2] + <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    }</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">   94</a></span>&#160;    <span class=\"keyword\">inline</span> BearingVector <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">projectPixelTo3dRay</a>(<span class=\"keyword\">const</span> Keypoint&amp; u) {</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;        <span class=\"keywordflow\">return</span> BearingVector((u[0] - <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>) / <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a>, (u[1] - <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>) / <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a>, 1.0);</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    }</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    Eigen::Matrix3f K()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a>; }</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">  100</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">width_</a>;   </div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">  101</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">height_</a>;  </div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">  102</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a>;    </div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">  103</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a>;    </div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">  104</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a>;    </div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">  105</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a>;    </div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">  107</a></span>&#160;    Eigen::Matrix3f <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a>;     </div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">  108</a></span>&#160;    Eigen::Matrix3f <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">Kinv_</a>;  </div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;};</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;}  <span class=\"comment\">// namespace evo_utils::camera</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;<span class=\"preprocessor\">#endif  // EVO_UTILS_HPP</span></div><div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a61fee4ce15caef24fd7d7588e688fd9c\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">evo_utils::camera::PinholeCamera::project3dToPixel</a></div><div class=\"ttdeci\">Keypoint project3dToPixel(const Point &amp;P)</div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:82</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a5fa565a175b0b0b1af458160932a2609\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">evo_utils::camera::PinholeCamera::fy_</a></div><div class=\"ttdeci\">float fy_</div><div class=\"ttdoc\">camera&amp;#39;s vertical focal lenght </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:103</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a251272eb99fa4e49a57ff8f2a93f427f\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">evo_utils::camera::PinholeCamera::projectPixelTo3dRay</a></div><div class=\"ttdeci\">BearingVector projectPixelTo3dRay(const Keypoint &amp;u)</div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:94</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_ae1bb4d8bb3766b11b728e2cb2193df6f\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">evo_utils::camera::PinholeCamera::width_</a></div><div class=\"ttdeci\">int width_</div><div class=\"ttdoc\">image size: width </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:100</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_abdfd824b95e1cc5af7df62b171af9566\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">evo_utils::camera::PinholeCamera::Kinv_</a></div><div class=\"ttdeci\">Eigen::Matrix3f Kinv_</div><div class=\"ttdoc\">camera&amp;#39;s intrinsic matrix inverse </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:108</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:47</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a7bd23523103950624b1eacfd8b307a21\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">evo_utils::camera::PinholeCamera::PinholeCamera</a></div><div class=\"ttdeci\">PinholeCamera(int width, int height, float fx, float fy, float cx, float cy)</div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:60</div></div>\n<div class=\"ttc\" id=\"namespaceevo__utils_1_1camera_html\"><div class=\"ttname\"><a href=\"namespaceevo__utils_1_1camera.html\">evo_utils::camera</a></div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:18</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_ac735d96e2a97d2fe6132979673b5002c\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">evo_utils::camera::PinholeCamera::height_</a></div><div class=\"ttdeci\">int height_</div><div class=\"ttdoc\">image size: height </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:101</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_abe5a18db98df7a23b4d93c9f2ad93af1\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">evo_utils::camera::PinholeCamera::fx_</a></div><div class=\"ttdeci\">float fx_</div><div class=\"ttdoc\">camera&amp;#39;s horizontal focal length </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:102</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a954f1e44784c1361d84f5a3d3e8f5040\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">evo_utils::camera::PinholeCamera::cx_</a></div><div class=\"ttdeci\">float cx_</div><div class=\"ttdoc\">camera&amp;#39;s principal point (x) </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:104</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a213fe206182bab3a10abf1dbc8e9364b\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">evo_utils::camera::PinholeCamera::cy_</a></div><div class=\"ttdeci\">float cy_</div><div class=\"ttdoc\">camera&amp;#39;s principal point (y) </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:105</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html_a132e0a2671fa231632cf738c08d2d687\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">evo_utils::camera::PinholeCamera::K_</a></div><div class=\"ttdeci\">Eigen::Matrix3f K_</div><div class=\"ttdoc\">camera&amp;#39;s intrinsic matrix </div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:107</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__factory_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/camera_factory.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_factory.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>factory {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;CameraGeometryBase::Ptr makePinholeCamera(</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">const</span> Eigen::VectorXd&amp; intrinsics, uint32_t width, uint32_t height);</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;CameraGeometryBase::Ptr loadFromYAML(</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; filename,</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; cam_name);</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;} <span class=\"comment\">// namespace factory</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__fwd_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/camera_fwd.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_fwd.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">class </span>CameraGeometryBase;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">class </span>NCamera;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;}</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;}</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;{</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">using</span> Camera = <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">using</span> CameraPtr = std::shared_ptr&lt;Camera&gt;;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">using</span> CameraBundle = <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">using</span> CameraBundlePtr = std::shared_ptr&lt;CameraBundle&gt;;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:21</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__geometry_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/camera_geometry.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_geometry.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">   12</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;{</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">typedef</span> Projection projection_t;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>(</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;      <span class=\"keyword\">const</span> projection_t&amp; projection);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">backProject3</a>(</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;      Eigen::Vector3d* out_point_3d) <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keyword\">const</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">project3</a>(</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;      Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point) <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">printParameters</a>(std::ostream&amp; out, <span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;Camera: &quot;</span>) <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">virtual</span> Eigen::VectorXd <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">getIntrinsicParameters</a>() <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">virtual</span> Eigen::VectorXd <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">getDistortionParameters</a>() <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">errorMultiplier</a>() <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const override</span>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keyword\">static</span> std::shared_ptr&lt;CameraGeometry&lt;Projection&gt;&gt; createTestCamera();</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T = Projection&gt;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">const</span> T* projection() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  projection_t projection_;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;};</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/implementation/camera_geometry.hpp&gt;</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_adba5d477ee438ddb370716e5f9acdaec\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry::errorMultiplier</a></div><div class=\"ttdeci\">virtual double errorMultiplier() const override</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:63</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_aae571c6775c2a5ded9ec8e3b702c36e6\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">vk::cameras::CameraGeometry::getDistortionParameters</a></div><div class=\"ttdeci\">virtual Eigen::VectorXd getDistortionParameters() const override</div><div class=\"ttdoc\">Get Distortion parameters from camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:57</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a831fccee5ea8e720b90d1044338533d4\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">vk::cameras::CameraGeometry::getIntrinsicParameters</a></div><div class=\"ttdeci\">virtual Eigen::VectorXd getIntrinsicParameters() const override</div><div class=\"ttdoc\">Get Intrinsic parameters from camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:51</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.h:12</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_aed1cc99646623ce62b54b280ad1cf90e\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">vk::cameras::CameraGeometry::printParameters</a></div><div class=\"ttdeci\">virtual void printParameters(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</div><div class=\"ttdoc\">Print camera info. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:41</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></div><div class=\"ttdoc\">This struct is returned by the camera projection methods and holds the result state of the projection...</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:22</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a3acada201195ada920c4a9df98e02c34\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">vk::cameras::CameraGeometry::project3</a></div><div class=\"ttdeci\">virtual const ProjectionResult project3(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</div><div class=\"ttdoc\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:29</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a4c002abe3ce8c39d72c6bd174882cdec\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry::backProject3</a></div><div class=\"ttdeci\">virtual bool backProject3(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:20</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__geometry_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/implementation/camera_geometry.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d384eab21aaa23c4b65ee34b4c32ed1c.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_geometry.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/camera_geometry.h&gt;</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;CameraGeometry&lt;Projection&gt;::CameraGeometry(</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width,</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">const</span> projection_t&amp; projection)</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  : CameraGeometryBase(width, height)</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  , projection_(projection)</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"comment\">// NOTE: declare and specify this type within projection class</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  camera_type_ = projection_.cam_type_;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;}</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">   20</a></span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">CameraGeometry&lt;Projection&gt;::backProject3</a>(</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    Eigen::Vector3d* out_point_3d)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  CHECK_NOTNULL(out_point_3d);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keywordflow\">return</span> projection_.backProject3(keypoint, out_point_3d);</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;}</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">   29</a></span>&#160;<span class=\"keyword\">const</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">CameraGeometry&lt;Projection&gt;::project3</a>(</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;      Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  projection_.project3(point_3d, out_keypoint, out_jacobian_point);</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordflow\">if</span>(!isKeypointVisible(*out_keypoint))</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX</a>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">ProjectionResult::Status::KEYPOINT_VISIBLE</a>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;}</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">   41</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">CameraGeometry&lt;Projection&gt;::printParameters</a>(</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    std::ostream&amp; out, <span class=\"keyword\">const</span> std::string&amp; s)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  out &lt;&lt; s &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      &lt;&lt; <span class=\"stringliteral\">&quot;  name = &quot;</span> &lt;&lt; label_ &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      &lt;&lt; <span class=\"stringliteral\">&quot;  size = [&quot;</span> &lt;&lt; width_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; height_ &lt;&lt; <span class=\"stringliteral\">&quot;]&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  projection_.print(out);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;}</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">   51</a></span>&#160;Eigen::VectorXd <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">CameraGeometry&lt;Projection&gt;::getIntrinsicParameters</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keywordflow\">return</span> projection_.getIntrinsicParameters();</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;}</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">   57</a></span>&#160;Eigen::VectorXd <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">CameraGeometry&lt;Projection&gt;::getDistortionParameters</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keywordflow\">return</span> projection_.getDistortionParameters();</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;}</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">   63</a></span>&#160;<span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">CameraGeometry&lt;Projection&gt;::errorMultiplier</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordflow\">return</span> projection_.errorMultiplier();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;}</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;<span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry&lt;Projection&gt;::getAngleError</a>(<span class=\"keywordtype\">double</span> img_err)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keywordflow\">return</span> projection_.getAngleError(img_err);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;}</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;std::shared_ptr&lt;CameraGeometry&lt;Projection&gt;&gt;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry&lt;Projection&gt;::createTestCamera</a>()</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;{</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> width = 640;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> height = 480;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <span class=\"keywordflow\">return</span> std::make_shared&lt;CameraGeometry&lt;Projection&gt;&gt;(</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      width, height, Projection::createTestProjection(width, height));</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;}</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Projection&gt;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">const</span> T* <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry&lt;Projection&gt;::projection</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">dynamic_cast&lt;</span><span class=\"keyword\">const </span>T*<span class=\"keyword\">&gt;</span>(&amp;projection_);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;}</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_adba5d477ee438ddb370716e5f9acdaec\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry::errorMultiplier</a></div><div class=\"ttdeci\">virtual double errorMultiplier() const override</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:63</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_aae571c6775c2a5ded9ec8e3b702c36e6\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">vk::cameras::CameraGeometry::getDistortionParameters</a></div><div class=\"ttdeci\">virtual Eigen::VectorXd getDistortionParameters() const override</div><div class=\"ttdoc\">Get Distortion parameters from camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:57</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a831fccee5ea8e720b90d1044338533d4\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">vk::cameras::CameraGeometry::getIntrinsicParameters</a></div><div class=\"ttdeci\">virtual Eigen::VectorXd getIntrinsicParameters() const override</div><div class=\"ttdoc\">Get Intrinsic parameters from camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:51</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.h:12</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_aed1cc99646623ce62b54b280ad1cf90e\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">vk::cameras::CameraGeometry::printParameters</a></div><div class=\"ttdeci\">virtual void printParameters(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</div><div class=\"ttdoc\">Print camera info. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:41</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">vk::cameras::ProjectionResult::Status::KEYPOINT_VISIBLE</a></div><div class=\"ttdoc\">Keypoint is visible and projection was successful. </div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></div><div class=\"ttdoc\">This struct is returned by the camera projection methods and holds the result state of the projection...</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:22</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">vk::cameras::ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX</a></div><div class=\"ttdoc\">Keypoint is NOT visible but projection was successful. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a3acada201195ada920c4a9df98e02c34\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">vk::cameras::CameraGeometry::project3</a></div><div class=\"ttdeci\">virtual const ProjectionResult project3(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</div><div class=\"ttdoc\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:29</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html_a4c002abe3ce8c39d72c6bd174882cdec\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry::backProject3</a></div><div class=\"ttdeci\">virtual bool backProject3(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.hpp:20</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__geometry__base_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/camera_geometry_base.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_geometry_base.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/macros.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/pose-types.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">using</span> Transformation = aslam::Transformation;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">using</span> TransformationVector = aslam::TransformationVector;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">using</span> Quaternion = aslam::Quaternion;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">   22</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> {</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">   24</a></span>&#160;  <span class=\"keyword\">enum class</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> {</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">KEYPOINT_VISIBLE</a>,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">KEYPOINT_OUTSIDE_IMAGE_BOX</a>,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\">POINT_BEHIND_CAMERA</a>,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\">PROJECTION_INVALID</a>,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\">UNINITIALIZED</a></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  };</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"comment\">// Make the enum values accessible from the outside without the additional indirection.</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">KEYPOINT_VISIBLE</a>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">KEYPOINT_OUTSIDE_IMAGE_BOX</a>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\">POINT_BEHIND_CAMERA</a>;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\">PROJECTION_INVALID</a>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\">UNINITIALIZED</a>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  constexpr <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a>() : <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a>(<a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\">Status::UNINITIALIZED</a>) {}</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  constexpr ProjectionResult(<a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> status) : <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a>(status) {}</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02\">   53</a></span>&#160;  <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">isKeypointVisible</a>(); }</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">   56</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">operator==</a>(<span class=\"keyword\">const</span> ProjectionResult&amp; other)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a> == other.<a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a>; }</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">   59</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">operator==</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">ProjectionResult::Status</a>&amp; other)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a> == other; }</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keyword\">friend</span> std::ostream&amp; <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">operator&lt;&lt; </a>(std::ostream&amp; out, <span class=\"keyword\">const</span> ProjectionResult&amp; state);</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">   65</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">isKeypointVisible</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a> == <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">Status::KEYPOINT_VISIBLE</a>); }</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">   74</a></span>&#160;  <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">getDetailedStatus</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a>; }</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">   78</a></span>&#160;  <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a>;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;};</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">   81</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a></div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;{</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keyword\">enum class</span> Type {</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    kPinhole = 0,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    kUnifiedProjection = 1,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    kOmni = 2,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    kEqFisheye = 3</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  };</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height);</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keyword\">static</span> Ptr loadFromYaml(<span class=\"keyword\">const</span> std::string&amp; yaml_file);</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> backProject3(</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      Eigen::Vector3d* out_point_3d) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> backProject3(</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Matrix2Xd&gt;&amp; keypoints,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      Eigen::Matrix3Xd* out_bearing_vectors, std::vector&lt;bool&gt;* success) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keyword\">const</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> project3(</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;      Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point = <span class=\"keyword\">nullptr</span>) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> printParameters(std::ostream&amp; out, <span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;Camera: &quot;</span>) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">double</span> errorMultiplier() <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  <span class=\"keyword\">virtual</span> Eigen::VectorXd getIntrinsicParameters() <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  <span class=\"keyword\">virtual</span> Eigen::VectorXd getDistortionParameters() <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">  134</a></span>&#160;  <span class=\"keyword\">inline</span> Type <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> camera_type_; }</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">  137</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::string&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> label_; }</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">  140</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a>(<span class=\"keyword\">const</span> std::string&amp; label) { label_ = label; }</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">  143</a></span>&#160;  uint32_t <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> width_; }</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">  146</a></span>&#160;  uint32_t <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> height_; }</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DerivedKeyPo<span class=\"keywordtype\">int</span>&gt;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">isKeypointVisible</a>(<span class=\"keyword\">const</span> Eigen::MatrixBase&lt;DerivedKeyPoint&gt;&amp; keypoint) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DerivedKeyPo<span class=\"keywordtype\">int</span>&gt;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  <span class=\"keywordtype\">bool</span> isKeypointVisibleWithMargin(</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;      <span class=\"keyword\">const</span> Eigen::MatrixBase&lt;DerivedKeyPoint&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;      <span class=\"keyword\">typename</span> DerivedKeyPoint::Scalar margin) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;  <span class=\"keywordtype\">void</span> setMask(<span class=\"keyword\">const</span> cv::Mat&amp; mask);</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">  164</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> mask_; }</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">  167</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a>() { mask_ = cv::Mat(); }</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">  170</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !mask_.empty(); }</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;  <span class=\"keywordtype\">void</span> loadMask(<span class=\"keyword\">const</span> std::string&amp; mask_file);</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;  <span class=\"keywordtype\">bool</span> isMasked(<span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;  Eigen::Vector2d createRandomKeypoint() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;  <span class=\"keywordtype\">int</span> width_;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;  <span class=\"keywordtype\">int</span> height_;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;  std::string label_;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;  Type camera_type_;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;  cv::Mat mask_;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;};</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;<span class=\"preprocessor\">#include &quot;implementation/camera_geometry_base.hpp&quot;</span></div><div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a670e85cb801a1091350ed9fb3245f793\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">vk::cameras::ProjectionResult::operator==</a></div><div class=\"ttdeci\">bool operator==(const ProjectionResult::Status &amp;other) const</div><div class=\"ttdoc\">Compare projection status. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:59</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\">vk::cameras::ProjectionResult::Status::PROJECTION_INVALID</a></div><div class=\"ttdoc\">The projection was unsuccessful. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a8602711f9d4c4b7187ba04d1d5678177\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">vk::cameras::CameraGeometryBase::imageWidth</a></div><div class=\"ttdeci\">uint32_t imageWidth() const</div><div class=\"ttdoc\">Image width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:143</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a9a70c7addad3da7445ac2afa7d324147\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">vk::cameras::CameraGeometryBase::getLabel</a></div><div class=\"ttdeci\">const std::string &amp; getLabel() const</div><div class=\"ttdoc\">Name of the camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:137</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\">vk::cameras::ProjectionResult::Status::POINT_BEHIND_CAMERA</a></div><div class=\"ttdoc\">The projected point lies behind the camera plane. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a2444ecb4b20bfe69d6372a38c94d3f16\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">vk::cameras::CameraGeometryBase::hasMask</a></div><div class=\"ttdeci\">bool hasMask() const</div><div class=\"ttdoc\">Does the camera have a mask? </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:170</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a43716762b048c569e1d1bf9429e9cebb\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">vk::cameras::ProjectionResult::isKeypointVisible</a></div><div class=\"ttdeci\">bool isKeypointVisible() const</div><div class=\"ttdoc\">Check whether the projection was successful and the point is visible in the image. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:65</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\">vk::cameras::ProjectionResult::Status::UNINITIALIZED</a></div><div class=\"ttdoc\">Default value after construction. </div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">vk::cameras::ProjectionResult::Status::KEYPOINT_VISIBLE</a></div><div class=\"ttdoc\">Keypoint is visible and projection was successful. </div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_aef4707e30cf124bbe9bd5b3c52132968\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">vk::cameras::ProjectionResult::getDetailedStatus</a></div><div class=\"ttdeci\">Status getDetailedStatus() const</div><div class=\"ttdoc\">Returns the exact state of the projection operation. Example usage: </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:74</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_adcf5d28419673b529bf333ecb99d4706\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">vk::cameras::ProjectionResult::status_</a></div><div class=\"ttdeci\">Status status_</div><div class=\"ttdoc\">Stores the projection state. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:78</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a47408e0e4133a22f37eb406f07f552ed\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">vk::cameras::CameraGeometryBase::clearMask</a></div><div class=\"ttdeci\">void clearMask()</div><div class=\"ttdoc\">Clear the mask. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:167</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></div><div class=\"ttdoc\">This struct is returned by the camera projection methods and holds the result state of the projection...</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:22</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">vk::cameras::ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX</a></div><div class=\"ttdoc\">Keypoint is NOT visible but projection was successful. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_ae80baaad39fc665e8042a7e9eb0a84e0\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">vk::cameras::CameraGeometryBase::getMask</a></div><div class=\"ttdeci\">const cv::Mat &amp; getMask() const</div><div class=\"ttdoc\">Get the mask. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:164</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a5524943bd5801bd11fb9c07e75edd312\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">vk::cameras::ProjectionResult::Status</a></div><div class=\"ttdeci\">Status</div><div class=\"ttdoc\">Possible projection state. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:24</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_ad9e1945724a8e58cbf7fda05aaed6092\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">vk::cameras::ProjectionResult::operator==</a></div><div class=\"ttdeci\">bool operator==(const ProjectionResult &amp;other) const</div><div class=\"ttdoc\">Compare objects. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:56</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a48d2fc2c432f29028d89812668e75cfd\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">vk::cameras::CameraGeometryBase::setLabel</a></div><div class=\"ttdeci\">void setLabel(const std::string &amp;label)</div><div class=\"ttdoc\">Set user-specific camera label. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:140</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a768d756f986912c68676d516d3dea18c\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">vk::cameras::CameraGeometryBase::imageHeight</a></div><div class=\"ttdeci\">uint32_t imageHeight() const</div><div class=\"ttdoc\">Image height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:146</div></div>\n<div class=\"ttc\" id=\"structvk_1_1cameras_1_1ProjectionResult_html_a8d446188ba2fc29a1098b669f3a11274\"><div class=\"ttname\"><a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">vk::cameras::ProjectionResult::operator&lt;&lt;</a></div><div class=\"ttdeci\">friend std::ostream &amp; operator&lt;&lt;(std::ostream &amp;out, const ProjectionResult &amp;state)</div><div class=\"ttdoc\">Convenience function to print the state using streams. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a9b17bf9ed137aebb4f70d334495698a7\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">vk::cameras::CameraGeometryBase::getType</a></div><div class=\"ttdeci\">Type getType() const</div><div class=\"ttdoc\">CameraType value representing the camera model used by the derived class. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:134</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/camera__geometry__base_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/implementation/camera_geometry_base.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d384eab21aaa23c4b65ee34b4c32ed1c.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">camera_geometry_base.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DerivedKeyPo<span class=\"keywordtype\">int</span>&gt;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">    7</a></span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">CameraGeometryBase::isKeypointVisible</a>(</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;    <span class=\"keyword\">const</span> Eigen::MatrixBase&lt;DerivedKeyPoint&gt;&amp; keypoint)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(DerivedKeyPoint, 2, 1);</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> DerivedKeyPoint::Scalar Scalar;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;  <span class=\"keywordflow\">return</span> keypoint[0] &gt;= <span class=\"keyword\">static_cast&lt;</span>Scalar<span class=\"keyword\">&gt;</span>(0.0)</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;      &amp;&amp; keypoint[1] &gt;= <span class=\"keyword\">static_cast&lt;</span>Scalar<span class=\"keyword\">&gt;</span>(0.0)</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;      &amp;&amp; keypoint[0] &lt;  <span class=\"keyword\">static_cast&lt;</span>Scalar<span class=\"keyword\">&gt;</span>(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>())</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;      &amp;&amp; keypoint[1] &lt;  static_cast&lt;Scalar&gt;(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>());</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;}</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DerivedKeyPo<span class=\"keywordtype\">int</span>&gt;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">   18</a></span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">CameraGeometryBase::isKeypointVisibleWithMargin</a>(</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    <span class=\"keyword\">const</span> Eigen::MatrixBase&lt;DerivedKeyPoint&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    <span class=\"keyword\">typename</span> DerivedKeyPoint::Scalar margin)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> DerivedKeyPoint::Scalar Scalar;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(DerivedKeyPoint, 2, 1);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  CHECK_LT(2 * margin, static_cast&lt;Scalar&gt;(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>()));</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  CHECK_LT(2 * margin, static_cast&lt;Scalar&gt;(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>()));</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keywordflow\">return</span> keypoint[0] &gt;= margin</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      &amp;&amp; keypoint[1] &gt;= margin</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;      &amp;&amp; keypoint[0] &lt; (<span class=\"keyword\">static_cast&lt;</span>Scalar<span class=\"keyword\">&gt;</span>(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>()) - margin)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;      &amp;&amp; keypoint[1] &lt; (<span class=\"keyword\">static_cast&lt;</span>Scalar<span class=\"keyword\">&gt;</span>(<a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>()) - margin);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;}</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a8602711f9d4c4b7187ba04d1d5678177\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">vk::cameras::CameraGeometryBase::imageWidth</a></div><div class=\"ttdeci\">uint32_t imageWidth() const</div><div class=\"ttdoc\">Image width in pixels. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:143</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_ab9a288afa8d7571c4f30f8b071d982ce\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">vk::cameras::CameraGeometryBase::isKeypointVisibleWithMargin</a></div><div class=\"ttdeci\">bool isKeypointVisibleWithMargin(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.hpp:18</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_a768d756f986912c68676d516d3dea18c\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">vk::cameras::CameraGeometryBase::imageHeight</a></div><div class=\"ttdeci\">uint32_t imageHeight() const</div><div class=\"ttdoc\">Image height in pixels. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:146</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html_add6f222399cd18fefaeee4c1767868e4\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">vk::cameras::CameraGeometryBase::isKeypointVisible</a></div><div class=\"ttdeci\">bool isKeypointVisible(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</div><div class=\"ttdoc\">Return if a given keypoint is inside the imaging box of the camera. </div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.hpp:7</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cameras_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cameras.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// geometry</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/camera_geometry.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// distortion models</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/no_distortion.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/atan_distortion.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/equidistant_distortion.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/radial_tangential_distortion.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"></span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">// projections</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">#include &lt;vikit/cameras/pinhole_projection.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">*/</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ProjectionType&gt;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">class </span>CameraGeometry;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DistrortionType&gt;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">class </span>PinholeProjection;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">class </span>AtanDistortion;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">class </span>EquidistantDistortion;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">class </span>NoDistortion;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">class </span>RadialTangentialDistortion;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">typedef</span> CameraGeometry&lt;PinholeProjection&lt;NoDistortion&gt;&gt; PinholeGeometry;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keyword\">typedef</span> CameraGeometry&lt;PinholeProjection&lt;AtanDistortion&gt;&gt; PinholeAtanGeometry;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">typedef</span> CameraGeometry&lt;PinholeProjection&lt;EquidistantDistortion&gt;&gt;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    PinholeEquidistantGeometry;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">typedef</span> CameraGeometry&lt;PinholeProjection&lt;RadialTangentialDistortion&gt;&gt;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    PinholeRadTanGeometry;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">class </span>OmniGeometry;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classCamerasTest-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">CamerasTest Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>data_dir_</b> (defined in <a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>omni_cam_</b> (defined in <a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SetUp</b>() (defined in <a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classCamerasTest.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: CamerasTest Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classCamerasTest-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">CamerasTest Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for CamerasTest:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classCamerasTest__inherit__graph.png\" border=\"0\" usemap=\"#CamerasTest_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for CamerasTest:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classCamerasTest__coll__graph.png\" border=\"0\" usemap=\"#CamerasTest_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a516155f11ad317a540646f366eba39b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a516155f11ad317a540646f366eba39b4\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SetUp</b> ()</td></tr>\n<tr class=\"separator:a516155f11ad317a540646f366eba39b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a1dc28b4f6bcbc1cd849da0e8c3415353\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1dc28b4f6bcbc1cd849da0e8c3415353\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>data_dir_</b></td></tr>\n<tr class=\"separator:a1dc28b4f6bcbc1cd849da0e8c3415353\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d6a13e03aa56ccaf1029ab905fcc7c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d6a13e03aa56ccaf1029ab905fcc7c7\"></a>\nvk::cameras::CameraGeometryBase::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>omni_cam_</b></td></tr>\n<tr class=\"separator:a7d6a13e03aa56ccaf1029ab905fcc7c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/test/test_cameras.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classCamerasTest__coll__graph.md5",
    "content": "a1990e75d4330bf3afafdb16be7977f6"
  },
  {
    "path": "docs/classCamerasTest__inherit__graph.md5",
    "content": "3c2ca7b9d2655fa84d749abf7f0d6941"
  },
  {
    "path": "docs/classDvsReconstruction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">DvsReconstruction Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678\">c_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3\">camera_info_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d\">cur_ev_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611\">doReconstruction</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>DvsReconstruction</b>(ros::NodeHandle &amp;nh, ros::NodeHandle nh_private) (defined in <a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99\">event_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c\">eventCallback</a>(const dvs_msgs::EventArray::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78\">events_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3\">events_for_reconstruction_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013\">frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2\">map_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9\">mapCallback</a>(const sensor_msgs::PointCloud2::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mosaic_</b> (defined in <a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a\">tf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classDvsReconstruction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: DvsReconstruction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classDvsReconstruction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">DvsReconstruction Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for DvsReconstruction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classDvsReconstruction__coll__graph.png\" border=\"0\" usemap=\"#DvsReconstruction_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"DvsReconstruction_coll__map\" id=\"DvsReconstruction_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classMosaic.html\" title=\"Mosaic\" alt=\"\" coords=\"192,177,256,203\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7ddc7ba39896eec9410ff0fe57caa3e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ddc7ba39896eec9410ff0fe57caa3e1\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DvsReconstruction</b> (ros::NodeHandle &amp;nh, ros::NodeHandle nh_private)</td></tr>\n<tr class=\"separator:a7ddc7ba39896eec9410ff0fe57caa3e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a7f75e15a9a1616c5b704c8b225efab7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c\">eventCallback</a> (const dvs_msgs::EventArray::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a7f75e15a9a1616c5b704c8b225efab7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af56b5870c78987fb548229d94d7ba236\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:af56b5870c78987fb548229d94d7ba236\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5e20c4a2ed7c852eea161dc5aa2ca9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9\">mapCallback</a> (const sensor_msgs::PointCloud2::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a0c5e20c4a2ed7c852eea161dc5aa2ca9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d5026405780a0057fd7a947cda33611\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611\">doReconstruction</a> ()</td></tr>\n<tr class=\"separator:a1d5026405780a0057fd7a947cda33611\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aa3a70935ec5303794f5cb68c3c053372\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3a70935ec5303794f5cb68c3c053372\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:aa3a70935ec5303794f5cb68c3c053372\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ab9c1ac063ac28fa84c1bccc67d6daf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ab9c1ac063ac28fa84c1bccc67d6daf\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a9ab9c1ac063ac28fa84c1bccc67d6daf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f6d5f839a1c2b12a54a08a4b5a1ba5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f6d5f839a1c2b12a54a08a4b5a1ba5a\"></a>\ntf::TransformListener&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a\">tf_</a></td></tr>\n<tr class=\"memdesc:a7f6d5f839a1c2b12a54a08a4b5a1ba5a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">listen to camera poses, \"tf\" <br /></td></tr>\n<tr class=\"separator:a7f6d5f839a1c2b12a54a08a4b5a1ba5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16e383aa16075e01ebdff443d540e013\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a16e383aa16075e01ebdff443d540e013\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013\">frame_id_</a></td></tr>\n<tr class=\"memdesc:a16e383aa16075e01ebdff443d540e013\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera transform frame id, ROS param: \"dvs_frame_id\" <br /></td></tr>\n<tr class=\"separator:a16e383aa16075e01ebdff443d540e013\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92695355f8236dd77aa375b23f02da99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a92695355f8236dd77aa375b23f02da99\"></a>\nros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99\">event_sub_</a></td></tr>\n<tr class=\"memdesc:a92695355f8236dd77aa375b23f02da99\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">listen to events, \"events\" <br /></td></tr>\n<tr class=\"separator:a92695355f8236dd77aa375b23f02da99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac95e031f3489c189a35dad55ebb1f8e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3\">camera_info_sub_</a></td></tr>\n<tr class=\"separator:ac95e031f3489c189a35dad55ebb1f8e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae48c641119ec6c22b5f9e59d73e97e78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae48c641119ec6c22b5f9e59d73e97e78\"></a>\nstd::deque&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78\">events_</a></td></tr>\n<tr class=\"memdesc:ae48c641119ec6c22b5f9e59d73e97e78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">incoming events <br /></td></tr>\n<tr class=\"separator:ae48c641119ec6c22b5f9e59d73e97e78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afaaf3cf07a99a8f6cd87fc5286973aa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3\">events_for_reconstruction_</a></td></tr>\n<tr class=\"separator:afaaf3cf07a99a8f6cd87fc5286973aa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6f7f352e14e97b991227cc4de3cdd2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"add6f7f352e14e97b991227cc4de3cdd2\"></a>\nros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2\">map_sub_</a></td></tr>\n<tr class=\"memdesc:add6f7f352e14e97b991227cc4de3cdd2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">listen to map updates, \"map\" <br /></td></tr>\n<tr class=\"separator:add6f7f352e14e97b991227cc4de3cdd2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab40adb61fcc3250a1de5289f53dc2be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab40adb61fcc3250a1de5289f53dc2be\"></a>\npcl::PointCloud&lt; pcl::PointXYZ &gt;::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be\">map_</a></td></tr>\n<tr class=\"memdesc:aab40adb61fcc3250a1de5289f53dc2be\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">last published map <br /></td></tr>\n<tr class=\"separator:aab40adb61fcc3250a1de5289f53dc2be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1d281765b14c50502b3998fd89587f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1c1d281765b14c50502b3998fd89587f\"></a>\n<a class=\"el\" href=\"classMosaic.html\">Mosaic</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mosaic_</b></td></tr>\n<tr class=\"separator:a1c1d281765b14c50502b3998fd89587f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c285468e731463a3b75126ddac05678\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c285468e731463a3b75126ddac05678\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678\">c_</a></td></tr>\n<tr class=\"memdesc:a7c285468e731463a3b75126ddac05678\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera model <br /></td></tr>\n<tr class=\"separator:a7c285468e731463a3b75126ddac05678\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a824270ab2bf654fbe69ad9670861f34d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a824270ab2bf654fbe69ad9670861f34d\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d\">cur_ev_</a> = 0</td></tr>\n<tr class=\"memdesc:a824270ab2bf654fbe69ad9670861f34d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">current event <br /></td></tr>\n<tr class=\"separator:a824270ab2bf654fbe69ad9670861f34d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a4f09fa7ba3df24aded795f58b3c51802\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f09fa7ba3df24aded795f58b3c51802\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:a4f09fa7ba3df24aded795f58b3c51802\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root frame id of the tf system. <br /></td></tr>\n<tr class=\"separator:a4f09fa7ba3df24aded795f58b3c51802\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Node reconstructing images from events</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html\">Mosaic</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af56b5870c78987fb548229d94d7ba236\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af56b5870c78987fb548229d94d7ba236\">&#9670;&nbsp;</a></span>cameraInfoCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void DvsReconstruction::cameraInfoCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::CameraInfo::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Update camera info on first received message</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Message containing camera info </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a1d5026405780a0057fd7a947cda33611\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d5026405780a0057fd7a947cda33611\">&#9670;&nbsp;</a></span>doReconstruction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void DvsReconstruction::doReconstruction </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Compute the reconstruction using at most events_for_reconstruction_ events.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">Mosaic::compute</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a7f75e15a9a1616c5b704c8b225efab7c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f75e15a9a1616c5b704c8b225efab7c\">&#9670;&nbsp;</a></span>eventCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void DvsReconstruction::eventCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const dvs_msgs::EventArray::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Enqueue incoming events for later processing</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>incoming events </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a0c5e20c4a2ed7c852eea161dc5aa2ca9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c5e20c4a2ed7c852eea161dc5aa2ca9\">&#9670;&nbsp;</a></span>mapCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void DvsReconstruction::mapCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::PointCloud2::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Update current stored map and perform reconstruction</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>updated map</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611\">doReconstruction</a> </dd></dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac95e031f3489c189a35dad55ebb1f8e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac95e031f3489c189a35dad55ebb1f8e3\">&#9670;&nbsp;</a></span>camera_info_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber DvsReconstruction::camera_info_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236\">cameraInfoCallback</a> topic: \"camera_info\" </dd></dl>\n\n</div>\n</div>\n<a id=\"afaaf3cf07a99a8f6cd87fc5286973aa3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afaaf3cf07a99a8f6cd87fc5286973aa3\">&#9670;&nbsp;</a></span>events_for_reconstruction_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t DvsReconstruction::events_for_reconstruction_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>events required to reconstruct the image, \"events_for_reconstruction\" </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_reconstruction/src/dvs_reconstruction_ros.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classDvsReconstruction__coll__graph.md5",
    "content": "3985e28930d24a0c2ba900a2d30a883f"
  },
  {
    "path": "docs/classDvsTrackingNodelet-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">DvsTrackingNodelet Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>node_</b> (defined in <a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>onInit</b>() (defined in <a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classDvsTrackingNodelet.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: DvsTrackingNodelet Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classDvsTrackingNodelet-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">DvsTrackingNodelet Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for DvsTrackingNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classDvsTrackingNodelet__inherit__graph.png\" border=\"0\" usemap=\"#DvsTrackingNodelet_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for DvsTrackingNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classDvsTrackingNodelet__coll__graph.png\" border=\"0\" usemap=\"#DvsTrackingNodelet_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"DvsTrackingNodelet_coll__map\" id=\"DvsTrackingNodelet_coll__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classTracker.html\" title=\"Tracker\" alt=\"\" coords=\"112,305,179,332\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classLKSE3.html\" title=\"LKSE3\" alt=\"\" coords=\"205,199,267,225\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3e439e9ddc93f6afd284a6879df6e762\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e439e9ddc93f6afd284a6879df6e762\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>onInit</b> ()</td></tr>\n<tr class=\"separator:a3e439e9ddc93f6afd284a6879df6e762\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a4d8e0e7f5a2bc4298c7a7a1ffce846ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d8e0e7f5a2bc4298c7a7a1ffce846ad\"></a>\n<a class=\"el\" href=\"classTracker.html\">Tracker</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>node_</b></td></tr>\n<tr class=\"separator:a4d8e0e7f5a2bc4298c7a7a1ffce846ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_tracking/include/dvs_tracking/<a class=\"el\" href=\"dvs__tracking__nodelet_8h_source.html\">dvs_tracking_nodelet.h</a></li>\n<li>dvs_tracking/src/dvs_tracking_nodelet.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classDvsTrackingNodelet__coll__graph.md5",
    "content": "32a76326e4942b19e9524926d1815b2a"
  },
  {
    "path": "docs/classDvsTrackingNodelet__inherit__graph.md5",
    "content": "128a8940a7dc48d30b6ec62e82fc64dc"
  },
  {
    "path": "docs/classLKSE3-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">LKSE3 Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">batch_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">batches_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>c_</b> (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>c_ref_</b> (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">cx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">cy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">depth_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a>(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a>(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EventQueue</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">fx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">fy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">keypoints_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">kf_visibility_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">map_blur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">map_local_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Matrix6</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Matrix8</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">max_iterations_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">n_visible_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">new_img_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Point</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PointCloud</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">projectMap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">pyr_new_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">pyramid_levels_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">rect_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">ref_img_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SE3</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">T_cur_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">T_kf_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">T_ref_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">T_world_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">trackFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a>(const int offset, const int N, size_t pyr_lvl)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Vector6</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Vector8</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">weight_scale_rot_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">weight_scale_trans_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">x_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classLKSE3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: LKSE3 Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pri-types\">Private Types</a> &#124;\n<a href=\"classLKSE3-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">LKSE3 Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"lk__se3_8hpp_source.html\">lk_se3.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for LKSE3:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classLKSE3__inherit__graph.png\" border=\"0\" usemap=\"#LKSE3_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"LKSE3_inherit__map\" id=\"LKSE3_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classTracker.html\" title=\"Tracker\" alt=\"\" coords=\"5,80,72,107\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for LKSE3:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classLKSE3__coll__graph.png\" border=\"0\" usemap=\"#LKSE3_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aef7c5100126eab4747c87222f0a7785c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aef7c5100126eab4747c87222f0a7785c\"></a>\ntypedef pcl::PointXYZ&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Point</b></td></tr>\n<tr class=\"separator:aef7c5100126eab4747c87222f0a7785c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47c968c04300de01896762879080ca72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47c968c04300de01896762879080ca72\"></a>\ntypedef pcl::PointCloud&lt; Point &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointCloud</b></td></tr>\n<tr class=\"separator:a47c968c04300de01896762879080ca72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe4f87483d84ed0940258109dd257d7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe4f87483d84ed0940258109dd257d7a\"></a>\ntypedef std::deque&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EventQueue</b></td></tr>\n<tr class=\"separator:afe4f87483d84ed0940258109dd257d7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4585702181431949f70c1cf7c450e810\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4585702181431949f70c1cf7c450e810\"></a>\ntypedef Sophus::SE3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SE3</b></td></tr>\n<tr class=\"separator:a4585702181431949f70c1cf7c450e810\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:af83e375a213c2b8092fb21af3fe5172f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">projectMap</a> ()</td></tr>\n<tr class=\"separator:af83e375a213c2b8092fb21af3fe5172f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40a8dd6e220987bf08f12dc64fb6566c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a> ()</td></tr>\n<tr class=\"separator:a40a8dd6e220987bf08f12dc64fb6566c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3872f0d45c6550359f85ee08128c1e24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a> (EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td></tr>\n<tr class=\"separator:a3872f0d45c6550359f85ee08128c1e24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a62dbb224c11371ebbbe75a835f66e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a> (EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td></tr>\n<tr class=\"separator:a7a62dbb224c11371ebbbe75a835f66e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af61c47c8c61665f5796cd0af8d761547\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a> (const int offset, const int N, size_t pyr_lvl)</td></tr>\n<tr class=\"separator:af61c47c8c61665f5796cd0af8d761547\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1dcf848cd01686ef39bb7ee5a6a08446\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">trackFrame</a> ()</td></tr>\n<tr class=\"separator:a1dcf848cd01686ef39bb7ee5a6a08446\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7349f324c27c5b02700a513c9524da79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7349f324c27c5b02700a513c9524da79\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">batch_size_</a></td></tr>\n<tr class=\"memdesc:a7349f324c27c5b02700a513c9524da79\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of keypoints processed together (batch) <br /></td></tr>\n<tr class=\"separator:a7349f324c27c5b02700a513c9524da79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17593bcd462e3bea8bb1142968164266\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">max_iterations_</a></td></tr>\n<tr class=\"separator:a17593bcd462e3bea8bb1142968164266\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad29f3e4a058be67e50c63b724e5b8db1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">pyramid_levels_</a></td></tr>\n<tr class=\"separator:ad29f3e4a058be67e50c63b724e5b8db1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2101771947c5a50deca73658a43b567c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">batches_</a></td></tr>\n<tr class=\"separator:a2101771947c5a50deca73658a43b567c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06c0f5147576ee71f79185e57dd949b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a06c0f5147576ee71f79185e57dd949b0\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">weight_scale_trans_</a></td></tr>\n<tr class=\"memdesc:a06c0f5147576ee71f79185e57dd949b0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">weight update due to translational residual <br /></td></tr>\n<tr class=\"separator:a06c0f5147576ee71f79185e57dd949b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55eb23c7330e6ed6d7168cbee0ae35e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55eb23c7330e6ed6d7168cbee0ae35e6\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">weight_scale_rot_</a></td></tr>\n<tr class=\"memdesc:a55eb23c7330e6ed6d7168cbee0ae35e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">weight update due to rotational residual <br /></td></tr>\n<tr class=\"separator:a55eb23c7330e6ed6d7168cbee0ae35e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54124fd5d010a38f4df0cb2ec67036f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54124fd5d010a38f4df0cb2ec67036f4\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">map_blur_</a></td></tr>\n<tr class=\"memdesc:a54124fd5d010a38f4df0cb2ec67036f4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Blur value of map projected onto the img_ref_. <br /></td></tr>\n<tr class=\"separator:a54124fd5d010a38f4df0cb2ec67036f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace9861d1a3afefa09c08292a21d78021\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace9861d1a3afefa09c08292a21d78021\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">depth_median_</a></td></tr>\n<tr class=\"memdesc:ace9861d1a3afefa09c08292a21d78021\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">median depth in current scene (reference frame) <br /></td></tr>\n<tr class=\"separator:ace9861d1a3afefa09c08292a21d78021\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9622311a6ae9f81bcc2f1ea4945721a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a>, Eigen::aligned_allocator&lt; <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">keypoints_</a></td></tr>\n<tr class=\"memdesc:a9622311a6ae9f81bcc2f1ea4945721a7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keypoints in reference frame.  <a href=\"#a9622311a6ae9f81bcc2f1ea4945721a7\">More...</a><br /></td></tr>\n<tr class=\"separator:a9622311a6ae9f81bcc2f1ea4945721a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb8f03911b91548c624a5b324832a856\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">n_visible_</a></td></tr>\n<tr class=\"separator:acb8f03911b91548c624a5b324832a856\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66c26aa644e59eb9505fbaa61b6a6b2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">kf_visibility_</a></td></tr>\n<tr class=\"separator:a66c26aa644e59eb9505fbaa61b6a6b2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe174f15a8dbec80ba5bd07cd4ab0dcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe174f15a8dbec80ba5bd07cd4ab0dcb\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">map_</a></td></tr>\n<tr class=\"memdesc:afe174f15a8dbec80ba5bd07cd4ab0dcb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Map (built in the reference keyframe c_ref_) <br /></td></tr>\n<tr class=\"separator:afe174f15a8dbec80ba5bd07cd4ab0dcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab07de201b842f895e552cf33475ad2f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab07de201b842f895e552cf33475ad2f6\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">map_local_</a></td></tr>\n<tr class=\"memdesc:ab07de201b842f895e552cf33475ad2f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submap visible in the current frame. <br /></td></tr>\n<tr class=\"separator:ab07de201b842f895e552cf33475ad2f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f36df7081b6a221775b7c36e3c456f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f36df7081b6a221775b7c36e3c456f4\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">depth_ref_</a></td></tr>\n<tr class=\"memdesc:a2f36df7081b6a221775b7c36e3c456f4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth map in the reference keyframe. <br /></td></tr>\n<tr class=\"separator:a2f36df7081b6a221775b7c36e3c456f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8894f0d922f307d4ab06f7c772d098d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8894f0d922f307d4ab06f7c772d098d6\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">ref_img_</a></td></tr>\n<tr class=\"memdesc:a8894f0d922f307d4ab06f7c772d098d6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image of the reference keyframe. <br /></td></tr>\n<tr class=\"separator:a8894f0d922f307d4ab06f7c772d098d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab49e4489091b1343ff2094387a7aa4ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab49e4489091b1343ff2094387a7aa4ee\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">new_img_</a></td></tr>\n<tr class=\"memdesc:ab49e4489091b1343ff2094387a7aa4ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current image. <br /></td></tr>\n<tr class=\"separator:ab49e4489091b1343ff2094387a7aa4ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf67aa8aa635f5e39201f2e210196bce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf67aa8aa635f5e39201f2e210196bce\"></a>\nstd::vector&lt; cv::Mat &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">pyr_new_</a></td></tr>\n<tr class=\"memdesc:adf67aa8aa635f5e39201f2e210196bce\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image pyramid of the new image. <br /></td></tr>\n<tr class=\"separator:adf67aa8aa635f5e39201f2e210196bce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b988fec036657d62fdfe9c243aacd8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b988fec036657d62fdfe9c243aacd8f\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>c_</b></td></tr>\n<tr class=\"separator:a2b988fec036657d62fdfe9c243aacd8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d518c90e22e9c529e7c2c639a4b9d91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d518c90e22e9c529e7c2c639a4b9d91\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>c_ref_</b></td></tr>\n<tr class=\"separator:a9d518c90e22e9c529e7c2c639a4b9d91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a899546c1a1fde1e282ba55881ebab589\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a899546c1a1fde1e282ba55881ebab589\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">fx_</a></td></tr>\n<tr class=\"memdesc:a899546c1a1fde1e282ba55881ebab589\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image horizontal focal length <br /></td></tr>\n<tr class=\"separator:a899546c1a1fde1e282ba55881ebab589\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38f8f4fc76a8a8380554b4cc4c2fd3ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a38f8f4fc76a8a8380554b4cc4c2fd3ca\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">fy_</a></td></tr>\n<tr class=\"memdesc:a38f8f4fc76a8a8380554b4cc4c2fd3ca\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image vertical focal length <br /></td></tr>\n<tr class=\"separator:a38f8f4fc76a8a8380554b4cc4c2fd3ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30e4bb3541cf7fbd38f3be7673d58edc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30e4bb3541cf7fbd38f3be7673d58edc\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">cx_</a></td></tr>\n<tr class=\"memdesc:a30e4bb3541cf7fbd38f3be7673d58edc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image horizontal principal point <br /></td></tr>\n<tr class=\"separator:a30e4bb3541cf7fbd38f3be7673d58edc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09f43d7659d6b4f7e19f9449df749b08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09f43d7659d6b4f7e19f9449df749b08\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">cy_</a></td></tr>\n<tr class=\"memdesc:a09f43d7659d6b4f7e19f9449df749b08\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image vertical principal point <br /></td></tr>\n<tr class=\"separator:a09f43d7659d6b4f7e19f9449df749b08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adffc20c113bb95265b91bb3fe60a30e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adffc20c113bb95265b91bb3fe60a30e9\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">width_</a></td></tr>\n<tr class=\"memdesc:adffc20c113bb95265b91bb3fe60a30e9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image width <br /></td></tr>\n<tr class=\"separator:adffc20c113bb95265b91bb3fe60a30e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9c246374fbeb8eb5f96146496a82370\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9c246374fbeb8eb5f96146496a82370\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">height_</a></td></tr>\n<tr class=\"memdesc:ad9c246374fbeb8eb5f96146496a82370\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image height <br /></td></tr>\n<tr class=\"separator:ad9c246374fbeb8eb5f96146496a82370\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43337685ca3bdc7b78d5ea8a43a435f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43337685ca3bdc7b78d5ea8a43a435f5\"></a>\ncv::Rect&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">rect_</a></td></tr>\n<tr class=\"memdesc:a43337685ca3bdc7b78d5ea8a43a435f5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image container, width x height <br /></td></tr>\n<tr class=\"separator:a43337685ca3bdc7b78d5ea8a43a435f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2c888001a622a25fa07e41f3a2a25f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa2c888001a622a25fa07e41f3a2a25f1\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">T_world_kf_</a></td></tr>\n<tr class=\"memdesc:aa2c888001a622a25fa07e41f3a2a25f1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from keyframe to world frame. <br /></td></tr>\n<tr class=\"separator:aa2c888001a622a25fa07e41f3a2a25f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae940ac6eeeb100e9698d7a0a528e2986\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae940ac6eeeb100e9698d7a0a528e2986\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">T_kf_ref_</a></td></tr>\n<tr class=\"memdesc:ae940ac6eeeb100e9698d7a0a528e2986\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from reference frame to keyframe. <br /></td></tr>\n<tr class=\"separator:ae940ac6eeeb100e9698d7a0a528e2986\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a786c18da0f4b081cd32e37f433048a79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a786c18da0f4b081cd32e37f433048a79\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">T_ref_cam_</a></td></tr>\n<tr class=\"memdesc:a786c18da0f4b081cd32e37f433048a79\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from current frame to reference frame. <br /></td></tr>\n<tr class=\"separator:a786c18da0f4b081cd32e37f433048a79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad746e006ac2fc8211c0fdf47fe87c605\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad746e006ac2fc8211c0fdf47fe87c605\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">T_cur_ref_</a></td></tr>\n<tr class=\"memdesc:ad746e006ac2fc8211c0fdf47fe87c605\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from reference frame to current frame. <br /></td></tr>\n<tr class=\"separator:ad746e006ac2fc8211c0fdf47fe87c605\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae97a2513fbf49573cdd736c0b12ff31e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae97a2513fbf49573cdd736c0b12ff31e\"></a>\nEigen::VectorXf&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">x_</a> = Vector6::Zero()</td></tr>\n<tr class=\"memdesc:ae97a2513fbf49573cdd736c0b12ff31e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Twist vector &lt;-&gt; T_cur_ref. <br /></td></tr>\n<tr class=\"separator:ae97a2513fbf49573cdd736c0b12ff31e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-types\"></a>\nPrivate Types</h2></td></tr>\n<tr class=\"memitem:adc9c157286cf8437b413136155d89957\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adc9c157286cf8437b413136155d89957\"></a>\ntypedef Eigen::Matrix&lt; float, 6, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix6</b></td></tr>\n<tr class=\"separator:adc9c157286cf8437b413136155d89957\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42257048760fe3455ee689620b2097e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a42257048760fe3455ee689620b2097e5\"></a>\ntypedef Eigen::Matrix&lt; float, 8, 8 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix8</b></td></tr>\n<tr class=\"separator:a42257048760fe3455ee689620b2097e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa648a0944d940b714fd509a77434c919\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa648a0944d940b714fd509a77434c919\"></a>\ntypedef Eigen::Matrix&lt; float, 6, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector6</b></td></tr>\n<tr class=\"separator:aa648a0944d940b714fd509a77434c919\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52ce4a0220f6a748aed095aeeb61f8a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a52ce4a0220f6a748aed095aeeb61f8a4\"></a>\ntypedef Eigen::Matrix&lt; float, 8, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector8</b></td></tr>\n<tr class=\"separator:a52ce4a0220f6a748aed095aeeb61f8a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Generic LK tracker based on SE3 </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3872f0d45c6550359f85ee08128c1e24\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3872f0d45c6550359f85ee08128c1e24\">&#9670;&nbsp;</a></span>drawEvents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::drawEvents </td>\n          <td>(</td>\n          <td class=\"paramtype\">EventQueue::iterator&#160;</td>\n          <td class=\"paramname\"><em>ev_first</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">EventQueue::iterator&#160;</td>\n          <td class=\"paramname\"><em>ev_last</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>out</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Draws events given in rectified image (when visible after rectification) with bilinear interpolation</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">ev_first</td><td>iterator to first event in events container </td></tr>\n    <tr><td class=\"paramname\">ev_last</td><td>iterator representing end of events container (not last event!, e.g., vector.end()) </td></tr>\n    <tr><td class=\"paramname\">out</td><td>[output] image containing events drawed within</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\" title=\"image container, width x height \">rect_</a>, <a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a7a62dbb224c11371ebbbe75a835f66e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a62dbb224c11371ebbbe75a835f66e2\">&#9670;&nbsp;</a></span>drawEventsNN()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::drawEventsNN </td>\n          <td>(</td>\n          <td class=\"paramtype\">EventQueue::iterator&#160;</td>\n          <td class=\"paramname\"><em>ev_first</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">EventQueue::iterator&#160;</td>\n          <td class=\"paramname\"><em>ev_last</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>out</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Draws events given in rectified image (when visible after rectification)</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">ev_first</td><td>iterator to first event in events container </td></tr>\n    <tr><td class=\"paramname\">ev_last</td><td>iterator representing end of events container (not last event!, e.g., vector.end()) </td></tr>\n    <tr><td class=\"paramname\">out</td><td>[output] image containing events drawed within</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\" title=\"image container, width x height \">rect_</a>, <a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a40a8dd6e220987bf08f12dc64fb6566c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40a8dd6e220987bf08f12dc64fb6566c\">&#9670;&nbsp;</a></span>precomputeReferenceFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::precomputeReferenceFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Computes keypoints on the reference image ref_img_ to perform the KLT, with the Jacobian evaluated at each point of the transformation to fit</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"af83e375a213c2b8092fb21af3fe5172f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af83e375a213c2b8092fb21af3fe5172f\">&#9670;&nbsp;</a></span>projectMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::projectMap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Creates a new reference frame</p>\n<p>Project map onto the current reference frame (img_ref_), build local map (map_local_), evaluate quality of new reference frame (kf_visibility_, n_visible_), compute median depth of the scene (depth_median_) and precompute the data useful for the optimization in the tracking step.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a1dcf848cd01686ef39bb7ee5a6a08446\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1dcf848cd01686ef39bb7ee5a6a08446\">&#9670;&nbsp;</a></span>trackFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::trackFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Tracks frame updating the transformation at each pyramid_levels_ and for a maximum of max_iterations_</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"af61c47c8c61665f5796cd0af8d761547\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af61c47c8c61665f5796cd0af8d761547\">&#9670;&nbsp;</a></span>updateTransformation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LKSE3::updateTransformation </td>\n          <td>(</td>\n          <td class=\"paramtype\">const int&#160;</td>\n          <td class=\"paramname\"><em>offset</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const int&#160;</td>\n          <td class=\"paramname\"><em>N</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>pyr_lvl</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Updates transformation: one pass of stochastic gradient descent</p>\n<p>Remark: keypoints_ are already shuffled in precomputeReferenceFrame</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">offset</td><td>first keypoint to consider </td></tr>\n    <tr><td class=\"paramname\">N</td><td>number of keypoints to consider </td></tr>\n    <tr><td class=\"paramname\">pyr_lvl</td><td>level of the image pyramid </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2101771947c5a50deca73658a43b567c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2101771947c5a50deca73658a43b567c\">&#9670;&nbsp;</a></span>batches_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t LKSE3::batches_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>number of batches </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\" title=\"Keypoints in reference frame. \">keypoints_</a>, batches_size_ </dd></dl>\n\n</div>\n</div>\n<a id=\"a9622311a6ae9f81bcc2f1ea4945721a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9622311a6ae9f81bcc2f1ea4945721a7\">&#9670;&nbsp;</a></span>keypoints_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a>, Eigen::aligned_allocator&lt;<a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a>&gt; &gt; LKSE3::keypoints_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Keypoints in reference frame. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a66c26aa644e59eb9505fbaa61b6a6b2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66c26aa644e59eb9505fbaa61b6a6b2d\">&#9670;&nbsp;</a></span>kf_visibility_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float LKSE3::kf_visibility_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Percentage of keypoints of the reference frame visible in the current frame </p>\n\n</div>\n</div>\n<a id=\"a17593bcd462e3bea8bb1142968164266\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17593bcd462e3bea8bb1142968164266\">&#9670;&nbsp;</a></span>max_iterations_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t LKSE3::max_iterations_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>maximum number of iterations during the optimization step, </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a>, <a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a>, <a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"acb8f03911b91548c624a5b324832a856\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb8f03911b91548c624a5b324832a856\">&#9670;&nbsp;</a></span>n_visible_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int LKSE3::n_visible_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Number of keypoints of the reference frame visible in the current frame </p>\n\n</div>\n</div>\n<a id=\"ad29f3e4a058be67e50c63b724e5b8db1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad29f3e4a058be67e50c63b724e5b8db1\">&#9670;&nbsp;</a></span>pyramid_levels_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t LKSE3::pyramid_levels_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>number of levels in the image pyramid TODO: This could also be done relying on </p><dl class=\"section see\"><dt>See also</dt><dd>pyr_new_.size() </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_tracking/include/dvs_tracking/<a class=\"el\" href=\"lk__se3_8hpp_source.html\">lk_se3.hpp</a></li>\n<li>dvs_tracking/src/lk_se3.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classLKSE3__coll__graph.md5",
    "content": "bdc5cb59e35a6ccd5a71d1a6b72e0923"
  },
  {
    "path": "docs/classLKSE3__inherit__graph.md5",
    "content": "a89018faf0b270a36ec9f88a328d315b"
  },
  {
    "path": "docs/classMedianFilterTest-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">MedianFilterTest Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>img_</b> (defined in <a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print_array</b>(const cv::Mat &amp;arr, int cols, int rows) (defined in <a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>rng_</b> (defined in <a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SetUp</b>() (defined in <a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classMedianFilterTest.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: MedianFilterTest Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classMedianFilterTest-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">MedianFilterTest Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for MedianFilterTest:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classMedianFilterTest__inherit__graph.png\" border=\"0\" usemap=\"#MedianFilterTest_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for MedianFilterTest:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classMedianFilterTest__coll__graph.png\" border=\"0\" usemap=\"#MedianFilterTest_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a68406f7e1b15d4deb062f4daf382ba6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a68406f7e1b15d4deb062f4daf382ba6b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SetUp</b> ()</td></tr>\n<tr class=\"separator:a68406f7e1b15d4deb062f4daf382ba6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4235e1377f66fe17db30aa2de7616828\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4235e1377f66fe17db30aa2de7616828\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print_array</b> (const cv::Mat &amp;arr, int cols, int rows)</td></tr>\n<tr class=\"separator:a4235e1377f66fe17db30aa2de7616828\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ab4657db5314fdb315235828cca309197\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4657db5314fdb315235828cca309197\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_</b></td></tr>\n<tr class=\"separator:ab4657db5314fdb315235828cca309197\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e89ee987d9fb7906e2ef90750b118d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4e89ee987d9fb7906e2ef90750b118d9\"></a>\ncv::RNG&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rng_</b></td></tr>\n<tr class=\"separator:a4e89ee987d9fb7906e2ef90750b118d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_mapping/test/test_median_filter.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classMedianFilterTest__coll__graph.md5",
    "content": "aeb9a11b5de2a6215d25398e75604c93"
  },
  {
    "path": "docs/classMedianFilterTest__inherit__graph.md5",
    "content": "a7e14e376cd145fe4f5f1813c1d3208b"
  },
  {
    "path": "docs/classMosaic-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Mosaic Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">c_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">compute</a>(const std::vector&lt; dvs_msgs::Event &gt; &amp;evs, const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;map)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">cov</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Covariance</b> typedef (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">depthmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">getAbsoluteGradient</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">getReconstructedImage</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">grad</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Gradient</b> typedef (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">h_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">h_virt_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">image</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">init_cov_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>it_</b> (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">K_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">K_virt_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">KInv_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">KInv_virt_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">map_blur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic</a>(const float sigma_m, const float init_cov, int window_size, int map_blur, tf::TransformListener &amp;tf, ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">precomputeRectificationMap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">pub_depth_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">pub_img_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">publishDepthmap</a>(const cv::Mat &amp;depth)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">publishImageReconstruction</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_</b> (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">rectification_map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">reprojectDepthmap</a>(const tf::Transform &amp;T, cv::Mat &amp;_depthmap, bool virtual_cam=false)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Scalar</b> typedef (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">setCamModel</a>(image_geometry::PinholeCameraModel &amp;c)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tf_</b> (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Time</b> typedef (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">ts_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">update</a>(const cv::Mat &amp;new_grad, const ros::Time &amp;t0, const ros::Time &amp;t1)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Velocity</b> typedef (defined in <a class=\"el\" href=\"classMosaic.html\">Mosaic</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">w_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">w_virt_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">window_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classMosaic.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Mosaic Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classMosaic-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">Mosaic Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"mosaic_8hpp_source.html\">mosaic.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for Mosaic:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classMosaic__coll__graph.png\" border=\"0\" usemap=\"#Mosaic_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a2f686bf20ce0ec64c9401c4ca95906f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f686bf20ce0ec64c9401c4ca95906f3\"></a>\ntypedef cv::Vec2f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Velocity</b></td></tr>\n<tr class=\"separator:a2f686bf20ce0ec64c9401c4ca95906f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab726958664b713f88c93bb69bf4fae64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab726958664b713f88c93bb69bf4fae64\"></a>\ntypedef cv::Vec2f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Gradient</b></td></tr>\n<tr class=\"separator:ab726958664b713f88c93bb69bf4fae64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79c3b29a77aa64ff7b66f21e02da44af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79c3b29a77aa64ff7b66f21e02da44af\"></a>\ntypedef cv::Matx&lt; float, 2, 2 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Covariance</b></td></tr>\n<tr class=\"separator:a79c3b29a77aa64ff7b66f21e02da44af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb5fe38f2049c00cb92666f3d799d75b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb5fe38f2049c00cb92666f3d799d75b\"></a>\ntypedef cv::Matx&lt; float, 1, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Scalar</b></td></tr>\n<tr class=\"separator:acb5fe38f2049c00cb92666f3d799d75b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a004fd4d6830ee4db5c49cceddf8b6644\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a004fd4d6830ee4db5c49cceddf8b6644\"></a>\ntypedef double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Time</b></td></tr>\n<tr class=\"separator:a004fd4d6830ee4db5c49cceddf8b6644\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ade1f356723fa9f8f0427b7ce5829350f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic</a> (const float sigma_m, const float init_cov, int window_size, int map_blur, tf::TransformListener &amp;tf, ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</td></tr>\n<tr class=\"separator:ade1f356723fa9f8f0427b7ce5829350f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a5422c2b2ec65a9d18809bb03cd071b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">setCamModel</a> (image_geometry::PinholeCameraModel &amp;c)</td></tr>\n<tr class=\"separator:a0a5422c2b2ec65a9d18809bb03cd071b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8fa166741a0b96227d348072cae2ea4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">compute</a> (const std::vector&lt; dvs_msgs::Event &gt; &amp;evs, const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;map)</td></tr>\n<tr class=\"separator:ad8fa166741a0b96227d348072cae2ea4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b0a0ca054904c835a8e73657e9f3772\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">cv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">getAbsoluteGradient</a> ()</td></tr>\n<tr class=\"separator:a0b0a0ca054904c835a8e73657e9f3772\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa554763fc8027f7aaa388120001d5e09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">cv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">getReconstructedImage</a> ()</td></tr>\n<tr class=\"separator:aa554763fc8027f7aaa388120001d5e09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accda2a740d174b0d2188c9577c8fd2a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">reprojectDepthmap</a> (const tf::Transform &amp;T, cv::Mat &amp;_depthmap, bool virtual_cam=false)</td></tr>\n<tr class=\"separator:accda2a740d174b0d2188c9577c8fd2a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abf3db73be0330023eb59bb65a012538b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf3db73be0330023eb59bb65a012538b\"></a>\ncv::Mat_&lt; Gradient &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">grad</a></td></tr>\n<tr class=\"memdesc:abf3db73be0330023eb59bb65a012538b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">gradient map (2 channels of float) <br /></td></tr>\n<tr class=\"separator:abf3db73be0330023eb59bb65a012538b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d705ffa05effc9b4692c181aa115cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">cv::Mat_&lt; Covariance &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">cov</a></td></tr>\n<tr class=\"separator:a39d705ffa05effc9b4692c181aa115cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65b2ef6acb4ed91d4a09c4dacf316e7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65b2ef6acb4ed91d4a09c4dacf316e7a\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">depthmap</a></td></tr>\n<tr class=\"memdesc:a65b2ef6acb4ed91d4a09c4dacf316e7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Dense Depthmap projected in Map Frame. <br /></td></tr>\n<tr class=\"separator:a65b2ef6acb4ed91d4a09c4dacf316e7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa65f5a9c89892cc31196b6f0271c8e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa65f5a9c89892cc31196b6f0271c8e4\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">image</a></td></tr>\n<tr class=\"memdesc:aaa65f5a9c89892cc31196b6f0271c8e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reconstructed Image. <br /></td></tr>\n<tr class=\"separator:aaa65f5a9c89892cc31196b6f0271c8e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:ae16bd5cd096b8dd38cda50eeaae96c46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">update</a> (const cv::Mat &amp;new_grad, const ros::Time &amp;t0, const ros::Time &amp;t1)</td></tr>\n<tr class=\"separator:ae16bd5cd096b8dd38cda50eeaae96c46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b51f56ef447d56e030832edae88c4b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">precomputeRectificationMap</a> ()</td></tr>\n<tr class=\"separator:a4b51f56ef447d56e030832edae88c4b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3af6d4164d8a1f965321a6cdfbc39dd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">publishImageReconstruction</a> ()</td></tr>\n<tr class=\"separator:a3af6d4164d8a1f965321a6cdfbc39dd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad97f67d85ef30287348e1cf78a0a125e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">publishDepthmap</a> (const cv::Mat &amp;depth)</td></tr>\n<tr class=\"separator:ad97f67d85ef30287348e1cf78a0a125e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a9e5cbfb3d391b6936020a7668abfa951\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e5cbfb3d391b6936020a7668abfa951\"></a>\nros::NodeHandle &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a9e5cbfb3d391b6936020a7668abfa951\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89a5e70ef414456417231ead02af37a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a89a5e70ef414456417231ead02af37a1\"></a>\nros::NodeHandle &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a89a5e70ef414456417231ead02af37a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab8262e55b3e5191fe271ab3969716f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab8262e55b3e5191fe271ab3969716f7\"></a>\ntf::TransformListener &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_</b></td></tr>\n<tr class=\"separator:aab8262e55b3e5191fe271ab3969716f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16a19e38ac19d8d9e5242b3a2fad4deb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a16a19e38ac19d8d9e5242b3a2fad4deb\"></a>\nimage_transport::ImageTransport&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>it_</b></td></tr>\n<tr class=\"separator:a16a19e38ac19d8d9e5242b3a2fad4deb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5acd5f40cbee5c26d5ca1ab6680fa598\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5acd5f40cbee5c26d5ca1ab6680fa598\"></a>\nScalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_</b></td></tr>\n<tr class=\"separator:a5acd5f40cbee5c26d5ca1ab6680fa598\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c0a4a5d28cefce72d2d525022235170\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1c0a4a5d28cefce72d2d525022235170\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">init_cov_</a></td></tr>\n<tr class=\"memdesc:a1c0a4a5d28cefce72d2d525022235170\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">initial guess for the covariance of the EKF <br /></td></tr>\n<tr class=\"separator:a1c0a4a5d28cefce72d2d525022235170\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a95091b2b681537c0953833908da6de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a95091b2b681537c0953833908da6de\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">window_size_</a></td></tr>\n<tr class=\"memdesc:a8a95091b2b681537c0953833908da6de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">window of events between EKF updates <br /></td></tr>\n<tr class=\"separator:a8a95091b2b681537c0953833908da6de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afedc6f48c1efb28dda255b25c22d2742\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afedc6f48c1efb28dda255b25c22d2742\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">map_blur_</a></td></tr>\n<tr class=\"memdesc:afedc6f48c1efb28dda255b25c22d2742\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">gaussian blur kernel size <br /></td></tr>\n<tr class=\"separator:afedc6f48c1efb28dda255b25c22d2742\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc2b9dbc7f6f51df7c69a9a2fc22363e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc2b9dbc7f6f51df7c69a9a2fc22363e\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">depth_median_</a></td></tr>\n<tr class=\"memdesc:abc2b9dbc7f6f51df7c69a9a2fc22363e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">median scene depth <br /></td></tr>\n<tr class=\"separator:abc2b9dbc7f6f51df7c69a9a2fc22363e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a962d6b0d6ad32b9a425f0e86f6e2a5fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">image_transport::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">pub_img_</a></td></tr>\n<tr class=\"separator:a962d6b0d6ad32b9a425f0e86f6e2a5fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a217dcd4a95e50bafe98ded8ba553e481\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">image_transport::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">pub_depth_</a></td></tr>\n<tr class=\"separator:a217dcd4a95e50bafe98ded8ba553e481\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20353ba89de5fae20b608b04ca01b49f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Time&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">ts_ref_</a></td></tr>\n<tr class=\"separator:a20353ba89de5fae20b608b04ca01b49f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6766ab54811dbf49a92706f458d8f8f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6766ab54811dbf49a92706f458d8f8f5\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">frame_id_</a></td></tr>\n<tr class=\"memdesc:a6766ab54811dbf49a92706f458d8f8f5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera transformation frame id, \"dvs_frame_id\" <br /></td></tr>\n<tr class=\"separator:a6766ab54811dbf49a92706f458d8f8f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a372b4117e8e80a22de2a8f3100dfe002\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a372b4117e8e80a22de2a8f3100dfe002\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:a372b4117e8e80a22de2a8f3100dfe002\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root of the tf system. <br /></td></tr>\n<tr class=\"separator:a372b4117e8e80a22de2a8f3100dfe002\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93390709e5b74021d5a4edd36d3d6efd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; cv::Point2d &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">rectification_map_</a></td></tr>\n<tr class=\"separator:a93390709e5b74021d5a4edd36d3d6efd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a826ebc128647464ed1c24650e08f4761\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a826ebc128647464ed1c24650e08f4761\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">c_</a></td></tr>\n<tr class=\"memdesc:a826ebc128647464ed1c24650e08f4761\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera model <br /></td></tr>\n<tr class=\"separator:a826ebc128647464ed1c24650e08f4761\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a003358a147ccb575966016de5cde0bf3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a003358a147ccb575966016de5cde0bf3\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">w_</a></td></tr>\n<tr class=\"memdesc:a003358a147ccb575966016de5cde0bf3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image width <br /></td></tr>\n<tr class=\"separator:a003358a147ccb575966016de5cde0bf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad157f94d001d23cdcfbcf220abe6255c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad157f94d001d23cdcfbcf220abe6255c\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">h_</a></td></tr>\n<tr class=\"memdesc:ad157f94d001d23cdcfbcf220abe6255c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image height <br /></td></tr>\n<tr class=\"separator:ad157f94d001d23cdcfbcf220abe6255c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a178afd3f88bdf4531c6f5bce3a9c2c8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a178afd3f88bdf4531c6f5bce3a9c2c8b\"></a>\ntf::Matrix3x3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">K_</a></td></tr>\n<tr class=\"memdesc:a178afd3f88bdf4531c6f5bce3a9c2c8b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">intrinsic camera matrix <br /></td></tr>\n<tr class=\"separator:a178afd3f88bdf4531c6f5bce3a9c2c8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9de6c4db4cff9714a205f2d5d3f580f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9de6c4db4cff9714a205f2d5d3f580f7\"></a>\ntf::Matrix3x3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">KInv_</a></td></tr>\n<tr class=\"memdesc:a9de6c4db4cff9714a205f2d5d3f580f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">inverse of K_ <br /></td></tr>\n<tr class=\"separator:a9de6c4db4cff9714a205f2d5d3f580f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e4ad268d0e54b8c4db76a7ffffdd235\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e4ad268d0e54b8c4db76a7ffffdd235\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">w_virt_</a></td></tr>\n<tr class=\"memdesc:a9e4ad268d0e54b8c4db76a7ffffdd235\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">virtual camera width = s * w_ <br /></td></tr>\n<tr class=\"separator:a9e4ad268d0e54b8c4db76a7ffffdd235\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1a8d5f03e8f6651a8854f7d34f9927b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1a8d5f03e8f6651a8854f7d34f9927b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">h_virt_</a></td></tr>\n<tr class=\"memdesc:ab1a8d5f03e8f6651a8854f7d34f9927b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">virtual camera height = s * h_ <br /></td></tr>\n<tr class=\"separator:ab1a8d5f03e8f6651a8854f7d34f9927b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10fe521b7d59fef41086247db9a3c53d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10fe521b7d59fef41086247db9a3c53d\"></a>\ntf::Matrix3x3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">K_virt_</a></td></tr>\n<tr class=\"memdesc:a10fe521b7d59fef41086247db9a3c53d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">intrinsic camera matrix of virtual camera <br /></td></tr>\n<tr class=\"separator:a10fe521b7d59fef41086247db9a3c53d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1c6102c7e4614eef736dfbb8953a918\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1c6102c7e4614eef736dfbb8953a918\"></a>\ntf::Matrix3x3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">KInv_virt_</a></td></tr>\n<tr class=\"memdesc:ac1c6102c7e4614eef736dfbb8953a918\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">inverse of K_virt_ <br /></td></tr>\n<tr class=\"separator:ac1c6102c7e4614eef736dfbb8953a918\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba58a0d6482ecf38a45ca83815569443\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba58a0d6482ecf38a45ca83815569443\"></a>\nstd::vector&lt; tf::Vector3 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">map_</a></td></tr>\n<tr class=\"memdesc:aba58a0d6482ecf38a45ca83815569443\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D Point Cloud for Depthmap <br /></td></tr>\n<tr class=\"separator:aba58a0d6482ecf38a45ca83815569443\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Reconstructs image from events using poisson equation solver</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"laplace_8h_source.html\">laplace.h</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ade1f356723fa9f8f0427b7ce5829350f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade1f356723fa9f8f0427b7ce5829350f\">&#9670;&nbsp;</a></span>Mosaic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Mosaic::Mosaic </td>\n          <td>(</td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>sigma_m</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>init_cov</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>window_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>map_blur</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">tf::TransformListener &amp;&#160;</td>\n          <td class=\"paramname\"><em>tf</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">ros::NodeHandle &amp;&#160;</td>\n          <td class=\"paramname\"><em>nh</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">ros::NodeHandle &amp;&#160;</td>\n          <td class=\"paramname\"><em>nhp</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Constructor of image reconstructor</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">sigma_m</td><td>sigma_m for the EKF </td></tr>\n    <tr><td class=\"paramname\">init_cov</td><td>initial guess for the EKF covariance </td></tr>\n    <tr><td class=\"paramname\">window_size</td><td>window of events between EKF update </td></tr>\n    <tr><td class=\"paramname\">map_blur</td><td>kernel of map reprojection blur </td></tr>\n    <tr><td class=\"paramname\">tf</td><td>ros transform listener </td></tr>\n    <tr><td class=\"paramname\">nh</td><td>node handle </td></tr>\n    <tr><td class=\"paramname\">nhp</td><td>private node handle </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad8fa166741a0b96227d348072cae2ea4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8fa166741a0b96227d348072cae2ea4\">&#9670;&nbsp;</a></span>compute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::compute </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::vector&lt; dvs_msgs::Event &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>evs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>map</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Processes a batch of events and compute image reconstruction </p><pre class=\"fragment\"> ROS params:\n     dvs_frame_id) frame id of the estimated pose\n     world_frame_id) world frame id\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">evs</td><td>events to process in order to reconstruct the image </td></tr>\n    <tr><td class=\"paramname\">map</td><td>scene map used to get 3d information</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">update</a>, <a class=\"el\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">reprojectDepthmap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a0b0a0ca054904c835a8e73657e9f3772\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b0a0ca054904c835a8e73657e9f3772\">&#9670;&nbsp;</a></span>getAbsoluteGradient()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">cv::Mat Mosaic::getAbsoluteGradient </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Returns the magnitude of the gradient values stored in grad, normalized (MINMAX) between 0 and 1.</p>\n<dl class=\"section return\"><dt>Returns</dt><dd>the magnitude of the normalized (MINMAX) gradient at each pixel </dd></dl>\n\n</div>\n</div>\n<a id=\"aa554763fc8027f7aaa388120001d5e09\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa554763fc8027f7aaa388120001d5e09\">&#9670;&nbsp;</a></span>getReconstructedImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">cv::Mat Mosaic::getReconstructedImage </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Calculate second derivative (adjacent differences) and solve for M_xx + M_yy = F using Poisson solver</p>\n<dl class=\"section see\"><dt>See also</dt><dd>pde::poisolve </dd></dl>\n\n</div>\n</div>\n<a id=\"a4b51f56ef447d56e030832edae88c4b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b51f56ef447d56e030832edae88c4b1\">&#9670;&nbsp;</a></span>precomputeRectificationMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::precomputeRectificationMap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Computes values for rectification_map_, that maps the pixel values to their corresponding rectified. If outside boundaries (-1, -1) is used. </p>\n\n</div>\n</div>\n<a id=\"ad97f67d85ef30287348e1cf78a0a125e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad97f67d85ef30287348e1cf78a0a125e\">&#9670;&nbsp;</a></span>publishDepthmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::publishDepthmap </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes depthmap (normalized) with colormap: cv::COLORMAP_JET</p>\n<p>Topic: \"dvs_reconstruction/depthmap\"</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>depthmap to publish </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a3af6d4164d8a1f965321a6cdfbc39dd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3af6d4164d8a1f965321a6cdfbc39dd7\">&#9670;&nbsp;</a></span>publishImageReconstruction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::publishImageReconstruction </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes image reconstruction</p>\n<p>Topic: \"dvs_reconstruction/image\"</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">getReconstructedImage()</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"accda2a740d174b0d2188c9577c8fd2a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#accda2a740d174b0d2188c9577c8fd2a7\">&#9670;&nbsp;</a></span>reprojectDepthmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::reprojectDepthmap </td>\n          <td>(</td>\n          <td class=\"paramtype\">const tf::Transform &amp;&#160;</td>\n          <td class=\"paramname\"><em>T</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>_depthmap</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>virtual_cam</em> = <code>false</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Reproject the map and compute the depth</p>\n<p>For each point, its depth is distributed in a patch around its projection in the current image accordingly to a gaussian scheme. The total depth is then normalized with the total sum of the weights used in each pixel. Each pixel with a value smaller then 0.1 is filled with the median depth value. Finally, a median filtering is performed.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">T</td><td>from reference frame of the map to current frame </td></tr>\n    <tr><td class=\"paramname\">_depthmap</td><td>[output] resulting depth map </td></tr>\n    <tr><td class=\"paramname\">virtual_cam</td><td>whether to use or not super resolution </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a0a5422c2b2ec65a9d18809bb03cd071b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a5422c2b2ec65a9d18809bb03cd071b\">&#9670;&nbsp;</a></span>setCamModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::setCamModel </td>\n          <td>(</td>\n          <td class=\"paramtype\">image_geometry::PinholeCameraModel &amp;&#160;</td>\n          <td class=\"paramname\"><em>c</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Setups camera model, store intrinsic matrix, prepare virtual camera (super-resolution) and pre-compute rectification map. </p><pre class=\"fragment\"> ROS params:\n     super_resolution_factor) super resolution of the reconstruction\n         algorithm\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">c</td><td>pinhole camera model</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">precomputeRectificationMap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ae16bd5cd096b8dd38cda50eeaae96c46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae16bd5cd096b8dd38cda50eeaae96c46\">&#9670;&nbsp;</a></span>update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Mosaic::update </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>new_grad</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>t0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>t1</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Performs the update step of the EKF (update grad, cov) for each pixel </p><pre class=\"fragment\"> ROS params:\n     dvs_frame_id) frame id of the estimated pose\n     world_frame_id) world frame id\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">new_grad</td><td>new gradient of the image </td></tr>\n    <tr><td class=\"paramname\">t0</td><td>time of last update </td></tr>\n    <tr><td class=\"paramname\">t1</td><td>time of current update </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a39d705ffa05effc9b4692c181aa115cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39d705ffa05effc9b4692c181aa115cb\">&#9670;&nbsp;</a></span>cov</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">cv::Mat_&lt;Covariance&gt; Mosaic::cov</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>gradient covariances (2x2 matrix stored in 4 channels of float) </p>\n\n</div>\n</div>\n<a id=\"a217dcd4a95e50bafe98ded8ba553e481\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a217dcd4a95e50bafe98ded8ba553e481\">&#9670;&nbsp;</a></span>pub_depth_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">image_transport::Publisher Mosaic::pub_depth_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">publishDepthmap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a962d6b0d6ad32b9a425f0e86f6e2a5fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">&#9670;&nbsp;</a></span>pub_img_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">image_transport::Publisher Mosaic::pub_img_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">publishImageReconstruction</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a93390709e5b74021d5a4edd36d3d6efd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93390709e5b74021d5a4edd36d3d6efd\">&#9670;&nbsp;</a></span>rectification_map_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;cv::Point2d&gt; Mosaic::rectification_map_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">precomputeRectificationMap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a20353ba89de5fae20b608b04ca01b49f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20353ba89de5fae20b608b04ca01b49f\">&#9670;&nbsp;</a></span>ts_ref_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Time Mosaic::ts_ref_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>reference timestamp, used to recover the pose and re-construct the image </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_reconstruction/include/dvs_reconstruction/<a class=\"el\" href=\"mosaic_8hpp_source.html\">mosaic.hpp</a></li>\n<li>dvs_reconstruction/src/mosaic.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classMosaic__coll__graph.md5",
    "content": "37e04c4120b323be9ac1e599193d68f9"
  },
  {
    "path": "docs/classTracker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Tracker Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classTracker.html\">Tracker</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>auto_trigger_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">batch_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">batches_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>c_</b> (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>c_ref_</b> (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">camera_info_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">clearEventQueue</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cur_ev_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">cx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">cy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">data_mutex_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">depth_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a>(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a>(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">estimateTrajectory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>event_rate_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">event_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">eventCallback</a>(const dvs_msgs::EventArray::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EventQueue</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">events_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>frame_id_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_size_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">fx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">fy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">getFilteredPose</a>(tf::StampedTransform &amp;pose)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">idle_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">initialize</a>(const ros::Time &amp;ts)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>it_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">keypoints_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kf_ev_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">kf_visibility_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">map_blur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">map_local_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">map_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">mapCallback</a>(const sensor_msgs::PointCloud2::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">max_iterations_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">n_visible_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">new_img_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>noise_rate_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Point</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PointCloud</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>poses_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>poses_filtered_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">poses_pub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">postCameraLoaded</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">projectMap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">publishMapOverlapThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">publishPose</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">publishTF</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">pyr_new_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">pyramid_levels_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">rect_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">ref_img_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ade9360c0b7392539943229150027677a\">remote_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">remoteCallback</a>(const std_msgs::String::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SE3</b> typedef (defined in <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>step_size_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">T_cur_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">T_kf_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">T_ref_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">T_world_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tf_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tf_pub_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">tf_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">tfCallback</a>(const tf::tfMessagePtr &amp;msgs)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker</a>(ros::NodeHandle &amp;nh, ros::NodeHandle nh_private)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">trackFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">trackingThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">updateMap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a>(const int offset, const int N, size_t pyr_lvl)</td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">weight_scale_rot_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">weight_scale_trans_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>world_frame_id_</b> (defined in <a class=\"el\" href=\"classTracker.html\">Tracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classTracker.html\">Tracker</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">x_</a></td><td class=\"entry\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classTracker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Tracker Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classTracker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">Tracker Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"tracker_8hpp_source.html\">tracker.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for Tracker:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classTracker__inherit__graph.png\" border=\"0\" usemap=\"#Tracker_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"Tracker_inherit__map\" id=\"Tracker_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classLKSE3.html\" title=\"LKSE3\" alt=\"\" coords=\"7,5,70,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for Tracker:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classTracker__coll__graph.png\" border=\"0\" usemap=\"#Tracker_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"Tracker_coll__map\" id=\"Tracker_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classLKSE3.html\" title=\"LKSE3\" alt=\"\" coords=\"113,199,176,225\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae9dc66adb4d765082edfd481bab4b8bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker</a> (ros::NodeHandle &amp;nh, ros::NodeHandle nh_private)</td></tr>\n<tr class=\"separator:ae9dc66adb4d765082edfd481bab4b8bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:aad0ee6051f26b875f9b9fe7462e59d65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">eventCallback</a> (const dvs_msgs::EventArray::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:aad0ee6051f26b875f9b9fe7462e59d65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae71f93339e51c3b24927ace0b2d2cc92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">mapCallback</a> (const sensor_msgs::PointCloud2::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:ae71f93339e51c3b24927ace0b2d2cc92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3477d93ca1724ed9696c12c7ec005be0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">remoteCallback</a> (const std_msgs::String::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a3477d93ca1724ed9696c12c7ec005be0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1029bfd35553535ccba3159101cd70b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">tfCallback</a> (const tf::tfMessagePtr &amp;msgs)</td></tr>\n<tr class=\"separator:a1029bfd35553535ccba3159101cd70b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24fe7008c32f3edc748b2acae8dbe7e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a24fe7008c32f3edc748b2acae8dbe7e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acdba100d3ccfcb260d1843f7dd7815d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">initialize</a> (const ros::Time &amp;ts)</td></tr>\n<tr class=\"separator:acdba100d3ccfcb260d1843f7dd7815d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb05d74ae2ff6fa10272668fba396516\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">reset</a> ()</td></tr>\n<tr class=\"separator:acb05d74ae2ff6fa10272668fba396516\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a701c875240036fde1bf0df16665859ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">estimateTrajectory</a> ()</td></tr>\n<tr class=\"separator:a701c875240036fde1bf0df16665859ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af25a49bbecabdad9baf35ae7d5fdbcf6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">updateMap</a> ()</td></tr>\n<tr class=\"separator:af25a49bbecabdad9baf35ae7d5fdbcf6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7909d4888dcb35f254a4e6ad9d7d0f0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">getFilteredPose</a> (tf::StampedTransform &amp;pose)</td></tr>\n<tr class=\"separator:a7909d4888dcb35f254a4e6ad9d7d0f0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae701ed9604790939eeefd0dcd4024a6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">trackingThread</a> ()</td></tr>\n<tr class=\"separator:ae701ed9604790939eeefd0dcd4024a6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2279b2b5f7be0fde95c54820fba976fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">publishMapOverlapThread</a> ()</td></tr>\n<tr class=\"separator:a2279b2b5f7be0fde95c54820fba976fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc8c60ff0710bf5c131379fcbf8e7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">publishTF</a> ()</td></tr>\n<tr class=\"separator:a34dc8c60ff0710bf5c131379fcbf8e7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af34bb1f5e11bd2fef1130fc3ef80d61f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">publishPose</a> ()</td></tr>\n<tr class=\"separator:af34bb1f5e11bd2fef1130fc3ef80d61f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a269a1f966b13dd619a7b06ff96b07e84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">clearEventQueue</a> ()</td></tr>\n<tr class=\"separator:a269a1f966b13dd619a7b06ff96b07e84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3aa7f4bc38d80b5d90e53f8b30915ca9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">postCameraLoaded</a> ()</td></tr>\n<tr class=\"separator:a3aa7f4bc38d80b5d90e53f8b30915ca9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a45076ed21f53f8656b149979d6c46a29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a45076ed21f53f8656b149979d6c46a29\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a45076ed21f53f8656b149979d6c46a29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57731fd0aa24c313b706d4dfe55569b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a57731fd0aa24c313b706d4dfe55569b7\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a57731fd0aa24c313b706d4dfe55569b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9b9796d5ba0556e0cb1a77285c647c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac9b9796d5ba0556e0cb1a77285c647c7\"></a>\nimage_transport::ImageTransport&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>it_</b></td></tr>\n<tr class=\"separator:ac9b9796d5ba0556e0cb1a77285c647c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64dab44c21206864016916c8d7c99478\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64dab44c21206864016916c8d7c99478\"></a>\ntf::Transformer&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_</b></td></tr>\n<tr class=\"separator:a64dab44c21206864016916c8d7c99478\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1ffd938076e3c03a9d33d93ad771a7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1ffd938076e3c03a9d33d93ad771a7b\"></a>\ntf::TransformBroadcaster&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_pub_</b></td></tr>\n<tr class=\"separator:ab1ffd938076e3c03a9d33d93ad771a7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03e620f13a98ac9895069762c00cc3a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">event_sub_</a></td></tr>\n<tr class=\"separator:a03e620f13a98ac9895069762c00cc3a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f79c6e96b703e1e979439d9345fa5f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">map_sub_</a></td></tr>\n<tr class=\"separator:a6f79c6e96b703e1e979439d9345fa5f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade9360c0b7392539943229150027677a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ade9360c0b7392539943229150027677a\">remote_sub_</a></td></tr>\n<tr class=\"separator:ade9360c0b7392539943229150027677a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a3563aa35ce596b1ef84b5353e7ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">tf_sub_</a></td></tr>\n<tr class=\"separator:ab39a3563aa35ce596b1ef84b5353e7ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a4accfc84b455232a1fe11ad7d34658\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">camera_info_sub_</a></td></tr>\n<tr class=\"separator:a5a4accfc84b455232a1fe11ad7d34658\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3e255d370f7ad0381f9683ef2dfdbe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">poses_pub_</a></td></tr>\n<tr class=\"separator:ae3e255d370f7ad0381f9683ef2dfdbe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadc7ae10faf7b3c2719292beb470ed2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aadc7ae10faf7b3c2719292beb470ed2a\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_id_</b></td></tr>\n<tr class=\"separator:aadc7ae10faf7b3c2719292beb470ed2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b74466b6c72cf133a8f0308b088b4c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8b74466b6c72cf133a8f0308b088b4c1\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>world_frame_id_</b></td></tr>\n<tr class=\"separator:a8b74466b6c72cf133a8f0308b088b4c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58bf1175127d9fedbc07fa94a7d02937\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a58bf1175127d9fedbc07fa94a7d02937\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">idle_</a></td></tr>\n<tr class=\"memdesc:a58bf1175127d9fedbc07fa94a7d02937\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">whether the tracking is idle or active <br /></td></tr>\n<tr class=\"separator:a58bf1175127d9fedbc07fa94a7d02937\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4357f4055315cb02f22a646f73b42fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4357f4055315cb02f22a646f73b42fb\"></a>\nEventQueue&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">events_</a></td></tr>\n<tr class=\"memdesc:ab4357f4055315cb02f22a646f73b42fb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">already processed and to process events <br /></td></tr>\n<tr class=\"separator:ab4357f4055315cb02f22a646f73b42fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47ca9b4d232ad9becda9310083935738\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47ca9b4d232ad9becda9310083935738\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cur_ev_</b></td></tr>\n<tr class=\"separator:a47ca9b4d232ad9becda9310083935738\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a307f998b48f8eca141a3284df10fe0f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a307f998b48f8eca141a3284df10fe0f3\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kf_ev_</b></td></tr>\n<tr class=\"separator:a307f998b48f8eca141a3284df10fe0f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0683afe28049b2f426937480d428f22d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0683afe28049b2f426937480d428f22d\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>noise_rate_</b></td></tr>\n<tr class=\"separator:a0683afe28049b2f426937480d428f22d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0952e2d7422a1b03326e1ae98a199c86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0952e2d7422a1b03326e1ae98a199c86\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_size_</b></td></tr>\n<tr class=\"separator:a0952e2d7422a1b03326e1ae98a199c86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf896aac84a239315840b8d076a50da6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf896aac84a239315840b8d076a50da6\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>step_size_</b></td></tr>\n<tr class=\"separator:abf896aac84a239315840b8d076a50da6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3048464e2fb55f75bd12598dc427f1fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3048464e2fb55f75bd12598dc427f1fa\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>event_rate_</b></td></tr>\n<tr class=\"separator:a3048464e2fb55f75bd12598dc427f1fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7eee7fff41165d9bebe8e26cdd77467\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad7eee7fff41165d9bebe8e26cdd77467\"></a>\nstd::vector&lt; tf::StampedTransform &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>poses_</b></td></tr>\n<tr class=\"separator:ad7eee7fff41165d9bebe8e26cdd77467\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad646208ca6cac48863bfc3c42419d892\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad646208ca6cac48863bfc3c42419d892\"></a>\nstd::vector&lt; tf::StampedTransform &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>poses_filtered_</b></td></tr>\n<tr class=\"separator:ad646208ca6cac48863bfc3c42419d892\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a5d3f77e102c6414c56948fbdf635df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2a5d3f77e102c6414c56948fbdf635df\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">data_mutex_</a></td></tr>\n<tr class=\"memdesc:a2a5d3f77e102c6414c56948fbdf635df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">mutex to own when accessing data <br /></td></tr>\n<tr class=\"separator:a2a5d3f77e102c6414c56948fbdf635df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7898341552130e677c3b1152a401b942\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7898341552130e677c3b1152a401b942\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>auto_trigger_</b></td></tr>\n<tr class=\"separator:a7898341552130e677c3b1152a401b942\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classLKSE3\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classLKSE3')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td></tr>\n<tr class=\"memitem:aef7c5100126eab4747c87222f0a7785c inherit pub_types_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aef7c5100126eab4747c87222f0a7785c\"></a>\ntypedef pcl::PointXYZ&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Point</b></td></tr>\n<tr class=\"separator:aef7c5100126eab4747c87222f0a7785c inherit pub_types_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47c968c04300de01896762879080ca72 inherit pub_types_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47c968c04300de01896762879080ca72\"></a>\ntypedef pcl::PointCloud&lt; Point &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointCloud</b></td></tr>\n<tr class=\"separator:a47c968c04300de01896762879080ca72 inherit pub_types_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe4f87483d84ed0940258109dd257d7a inherit pub_types_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe4f87483d84ed0940258109dd257d7a\"></a>\ntypedef std::deque&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EventQueue</b></td></tr>\n<tr class=\"separator:afe4f87483d84ed0940258109dd257d7a inherit pub_types_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4585702181431949f70c1cf7c450e810 inherit pub_types_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4585702181431949f70c1cf7c450e810\"></a>\ntypedef Sophus::SE3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SE3</b></td></tr>\n<tr class=\"separator:a4585702181431949f70c1cf7c450e810 inherit pub_types_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classLKSE3\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classLKSE3')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td></tr>\n<tr class=\"memitem:af83e375a213c2b8092fb21af3fe5172f inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">projectMap</a> ()</td></tr>\n<tr class=\"separator:af83e375a213c2b8092fb21af3fe5172f inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40a8dd6e220987bf08f12dc64fb6566c inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a> ()</td></tr>\n<tr class=\"separator:a40a8dd6e220987bf08f12dc64fb6566c inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3872f0d45c6550359f85ee08128c1e24 inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a> (EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td></tr>\n<tr class=\"separator:a3872f0d45c6550359f85ee08128c1e24 inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a62dbb224c11371ebbbe75a835f66e2 inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a> (EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</td></tr>\n<tr class=\"separator:a7a62dbb224c11371ebbbe75a835f66e2 inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af61c47c8c61665f5796cd0af8d761547 inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a> (const int offset, const int N, size_t pyr_lvl)</td></tr>\n<tr class=\"separator:af61c47c8c61665f5796cd0af8d761547 inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1dcf848cd01686ef39bb7ee5a6a08446 inherit pro_methods_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">trackFrame</a> ()</td></tr>\n<tr class=\"separator:a1dcf848cd01686ef39bb7ee5a6a08446 inherit pro_methods_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classLKSE3\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classLKSE3')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></td></tr>\n<tr class=\"memitem:a7349f324c27c5b02700a513c9524da79 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7349f324c27c5b02700a513c9524da79\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">batch_size_</a></td></tr>\n<tr class=\"memdesc:a7349f324c27c5b02700a513c9524da79 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of keypoints processed together (batch) <br /></td></tr>\n<tr class=\"separator:a7349f324c27c5b02700a513c9524da79 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17593bcd462e3bea8bb1142968164266 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">max_iterations_</a></td></tr>\n<tr class=\"separator:a17593bcd462e3bea8bb1142968164266 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad29f3e4a058be67e50c63b724e5b8db1 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">pyramid_levels_</a></td></tr>\n<tr class=\"separator:ad29f3e4a058be67e50c63b724e5b8db1 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2101771947c5a50deca73658a43b567c inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">batches_</a></td></tr>\n<tr class=\"separator:a2101771947c5a50deca73658a43b567c inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06c0f5147576ee71f79185e57dd949b0 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a06c0f5147576ee71f79185e57dd949b0\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">weight_scale_trans_</a></td></tr>\n<tr class=\"memdesc:a06c0f5147576ee71f79185e57dd949b0 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">weight update due to translational residual <br /></td></tr>\n<tr class=\"separator:a06c0f5147576ee71f79185e57dd949b0 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55eb23c7330e6ed6d7168cbee0ae35e6 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55eb23c7330e6ed6d7168cbee0ae35e6\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">weight_scale_rot_</a></td></tr>\n<tr class=\"memdesc:a55eb23c7330e6ed6d7168cbee0ae35e6 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">weight update due to rotational residual <br /></td></tr>\n<tr class=\"separator:a55eb23c7330e6ed6d7168cbee0ae35e6 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54124fd5d010a38f4df0cb2ec67036f4 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54124fd5d010a38f4df0cb2ec67036f4\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">map_blur_</a></td></tr>\n<tr class=\"memdesc:a54124fd5d010a38f4df0cb2ec67036f4 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Blur value of map projected onto the img_ref_. <br /></td></tr>\n<tr class=\"separator:a54124fd5d010a38f4df0cb2ec67036f4 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace9861d1a3afefa09c08292a21d78021 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace9861d1a3afefa09c08292a21d78021\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">depth_median_</a></td></tr>\n<tr class=\"memdesc:ace9861d1a3afefa09c08292a21d78021 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">median depth in current scene (reference frame) <br /></td></tr>\n<tr class=\"separator:ace9861d1a3afefa09c08292a21d78021 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9622311a6ae9f81bcc2f1ea4945721a7 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a>, Eigen::aligned_allocator&lt; <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">keypoints_</a></td></tr>\n<tr class=\"memdesc:a9622311a6ae9f81bcc2f1ea4945721a7 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keypoints in reference frame.  <a href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">More...</a><br /></td></tr>\n<tr class=\"separator:a9622311a6ae9f81bcc2f1ea4945721a7 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb8f03911b91548c624a5b324832a856 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">n_visible_</a></td></tr>\n<tr class=\"separator:acb8f03911b91548c624a5b324832a856 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66c26aa644e59eb9505fbaa61b6a6b2d inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">kf_visibility_</a></td></tr>\n<tr class=\"separator:a66c26aa644e59eb9505fbaa61b6a6b2d inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe174f15a8dbec80ba5bd07cd4ab0dcb inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe174f15a8dbec80ba5bd07cd4ab0dcb\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">map_</a></td></tr>\n<tr class=\"memdesc:afe174f15a8dbec80ba5bd07cd4ab0dcb inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Map (built in the reference keyframe c_ref_) <br /></td></tr>\n<tr class=\"separator:afe174f15a8dbec80ba5bd07cd4ab0dcb inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab07de201b842f895e552cf33475ad2f6 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab07de201b842f895e552cf33475ad2f6\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">map_local_</a></td></tr>\n<tr class=\"memdesc:ab07de201b842f895e552cf33475ad2f6 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submap visible in the current frame. <br /></td></tr>\n<tr class=\"separator:ab07de201b842f895e552cf33475ad2f6 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f36df7081b6a221775b7c36e3c456f4 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f36df7081b6a221775b7c36e3c456f4\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">depth_ref_</a></td></tr>\n<tr class=\"memdesc:a2f36df7081b6a221775b7c36e3c456f4 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth map in the reference keyframe. <br /></td></tr>\n<tr class=\"separator:a2f36df7081b6a221775b7c36e3c456f4 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8894f0d922f307d4ab06f7c772d098d6 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8894f0d922f307d4ab06f7c772d098d6\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">ref_img_</a></td></tr>\n<tr class=\"memdesc:a8894f0d922f307d4ab06f7c772d098d6 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image of the reference keyframe. <br /></td></tr>\n<tr class=\"separator:a8894f0d922f307d4ab06f7c772d098d6 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab49e4489091b1343ff2094387a7aa4ee inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab49e4489091b1343ff2094387a7aa4ee\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">new_img_</a></td></tr>\n<tr class=\"memdesc:ab49e4489091b1343ff2094387a7aa4ee inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current image. <br /></td></tr>\n<tr class=\"separator:ab49e4489091b1343ff2094387a7aa4ee inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf67aa8aa635f5e39201f2e210196bce inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf67aa8aa635f5e39201f2e210196bce\"></a>\nstd::vector&lt; cv::Mat &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">pyr_new_</a></td></tr>\n<tr class=\"memdesc:adf67aa8aa635f5e39201f2e210196bce inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image pyramid of the new image. <br /></td></tr>\n<tr class=\"separator:adf67aa8aa635f5e39201f2e210196bce inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b988fec036657d62fdfe9c243aacd8f inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b988fec036657d62fdfe9c243aacd8f\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>c_</b></td></tr>\n<tr class=\"separator:a2b988fec036657d62fdfe9c243aacd8f inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d518c90e22e9c529e7c2c639a4b9d91 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d518c90e22e9c529e7c2c639a4b9d91\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>c_ref_</b></td></tr>\n<tr class=\"separator:a9d518c90e22e9c529e7c2c639a4b9d91 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a899546c1a1fde1e282ba55881ebab589 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a899546c1a1fde1e282ba55881ebab589\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">fx_</a></td></tr>\n<tr class=\"memdesc:a899546c1a1fde1e282ba55881ebab589 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image horizontal focal length <br /></td></tr>\n<tr class=\"separator:a899546c1a1fde1e282ba55881ebab589 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38f8f4fc76a8a8380554b4cc4c2fd3ca inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a38f8f4fc76a8a8380554b4cc4c2fd3ca\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">fy_</a></td></tr>\n<tr class=\"memdesc:a38f8f4fc76a8a8380554b4cc4c2fd3ca inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image vertical focal length <br /></td></tr>\n<tr class=\"separator:a38f8f4fc76a8a8380554b4cc4c2fd3ca inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30e4bb3541cf7fbd38f3be7673d58edc inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30e4bb3541cf7fbd38f3be7673d58edc\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">cx_</a></td></tr>\n<tr class=\"memdesc:a30e4bb3541cf7fbd38f3be7673d58edc inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image horizontal principal point <br /></td></tr>\n<tr class=\"separator:a30e4bb3541cf7fbd38f3be7673d58edc inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09f43d7659d6b4f7e19f9449df749b08 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09f43d7659d6b4f7e19f9449df749b08\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">cy_</a></td></tr>\n<tr class=\"memdesc:a09f43d7659d6b4f7e19f9449df749b08 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image vertical principal point <br /></td></tr>\n<tr class=\"separator:a09f43d7659d6b4f7e19f9449df749b08 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adffc20c113bb95265b91bb3fe60a30e9 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adffc20c113bb95265b91bb3fe60a30e9\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">width_</a></td></tr>\n<tr class=\"memdesc:adffc20c113bb95265b91bb3fe60a30e9 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image width <br /></td></tr>\n<tr class=\"separator:adffc20c113bb95265b91bb3fe60a30e9 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9c246374fbeb8eb5f96146496a82370 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9c246374fbeb8eb5f96146496a82370\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">height_</a></td></tr>\n<tr class=\"memdesc:ad9c246374fbeb8eb5f96146496a82370 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image height <br /></td></tr>\n<tr class=\"separator:ad9c246374fbeb8eb5f96146496a82370 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43337685ca3bdc7b78d5ea8a43a435f5 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43337685ca3bdc7b78d5ea8a43a435f5\"></a>\ncv::Rect&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">rect_</a></td></tr>\n<tr class=\"memdesc:a43337685ca3bdc7b78d5ea8a43a435f5 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image container, width x height <br /></td></tr>\n<tr class=\"separator:a43337685ca3bdc7b78d5ea8a43a435f5 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2c888001a622a25fa07e41f3a2a25f1 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa2c888001a622a25fa07e41f3a2a25f1\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">T_world_kf_</a></td></tr>\n<tr class=\"memdesc:aa2c888001a622a25fa07e41f3a2a25f1 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from keyframe to world frame. <br /></td></tr>\n<tr class=\"separator:aa2c888001a622a25fa07e41f3a2a25f1 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae940ac6eeeb100e9698d7a0a528e2986 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae940ac6eeeb100e9698d7a0a528e2986\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">T_kf_ref_</a></td></tr>\n<tr class=\"memdesc:ae940ac6eeeb100e9698d7a0a528e2986 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from reference frame to keyframe. <br /></td></tr>\n<tr class=\"separator:ae940ac6eeeb100e9698d7a0a528e2986 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a786c18da0f4b081cd32e37f433048a79 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a786c18da0f4b081cd32e37f433048a79\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">T_ref_cam_</a></td></tr>\n<tr class=\"memdesc:a786c18da0f4b081cd32e37f433048a79 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from current frame to reference frame. <br /></td></tr>\n<tr class=\"separator:a786c18da0f4b081cd32e37f433048a79 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad746e006ac2fc8211c0fdf47fe87c605 inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad746e006ac2fc8211c0fdf47fe87c605\"></a>\nEigen::Affine3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">T_cur_ref_</a></td></tr>\n<tr class=\"memdesc:ad746e006ac2fc8211c0fdf47fe87c605 inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Trasformation from reference frame to current frame. <br /></td></tr>\n<tr class=\"separator:ad746e006ac2fc8211c0fdf47fe87c605 inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae97a2513fbf49573cdd736c0b12ff31e inherit pro_attribs_classLKSE3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae97a2513fbf49573cdd736c0b12ff31e\"></a>\nEigen::VectorXf&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">x_</a> = Vector6::Zero()</td></tr>\n<tr class=\"memdesc:ae97a2513fbf49573cdd736c0b12ff31e inherit pro_attribs_classLKSE3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Twist vector &lt;-&gt; T_cur_ref. <br /></td></tr>\n<tr class=\"separator:ae97a2513fbf49573cdd736c0b12ff31e inherit pro_attribs_classLKSE3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Tracking node </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae9dc66adb4d765082edfd481bab4b8bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9dc66adb4d765082edfd481bab4b8bb\">&#9670;&nbsp;</a></span>Tracker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Tracker::Tracker </td>\n          <td>(</td>\n          <td class=\"paramtype\">ros::NodeHandle &amp;&#160;</td>\n          <td class=\"paramname\"><em>nh</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">ros::NodeHandle&#160;</td>\n          <td class=\"paramname\"><em>nh_private</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>ROS params passed to <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>: batch_size) <a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\" title=\"number of keypoints processed together (batch) \">LKSE3::batch_size_</a> batch-gradient descent batch size max_iterations) <a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">LKSE3::max_iterations_</a> maximum number of iterations in the optimization map_blur) <a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\" title=\"Blur value of map projected onto the img_ref_. \">LKSE3::map_blur_</a> sigma of the gaussian filter applied to the reprojected map pyramid_levels) <a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">LKSE3::pyramid_levels_</a> number of pyramid levels used in the KLT process weight_scale_translation) LKSE3::weight_scale_translation_ weight used in the translation error weight_scale_rotation) LKSE3::weight_scale_rotation_ weight used in the rotation error</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">nh</td><td>ROS node handle </td></tr>\n    <tr><td class=\"paramname\">nh_private</td><td>ROS private node handle </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a24fe7008c32f3edc748b2acae8dbe7e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24fe7008c32f3edc748b2acae8dbe7e6\">&#9670;&nbsp;</a></span>cameraInfoCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::cameraInfoCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::CameraInfo::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Update camera info on callback</p>\n<p>topic: \"camera_info\"</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Camera info msg </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a269a1f966b13dd619a7b06ff96b07e84\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a269a1f966b13dd619a7b06ff96b07e84\">&#9670;&nbsp;</a></span>clearEventQueue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::clearEventQueue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Removes events to keep an history (already processed) of events at most long TRACKER_EVENT_HISTORY_SIZE. </p>\n\n</div>\n</div>\n<a id=\"a701c875240036fde1bf0df16665859ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a701c875240036fde1bf0df16665859ed\">&#9670;&nbsp;</a></span>estimateTrajectory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::estimateTrajectory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>If active, regularly estimates trajectory based on currently stored events </p><pre class=\"fragment\">ROS params:\n    max_event_rate) events processed are randomly sampled so that\n         the rate is below this value\n    events_per_kf) events required for a new keyframe\n    frame_size) window of events considered\n    step_size) minimum number of new events to wait before a pose\n         update\n    noise_rate) if events rate is below this value, the frame is\n         skipped\n</pre><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">estimateTrajectory</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aad0ee6051f26b875f9b9fe7462e59d65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad0ee6051f26b875f9b9fe7462e59d65\">&#9670;&nbsp;</a></span>eventCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::eventCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const dvs_msgs::EventArray::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Stores incoming events and removes older ones </p><pre class=\"fragment\">ROS params:\n     discard_events_when_idle) whether not to collect events when\n</pre><p> idle</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Message containing incoming events </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a7909d4888dcb35f254a4e6ad9d7d0f0b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7909d4888dcb35f254a4e6ad9d7d0f0b\">&#9670;&nbsp;</a></span>getFilteredPose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool Tracker::getFilteredPose </td>\n          <td>(</td>\n          <td class=\"paramtype\">tf::StampedTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>pose</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Get median filtered poses </p><pre class=\"fragment\">ROS params:\n    pose_mean_filter_size) median filter size for the filtered\n         trajectory\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">pose</td><td>[output] median filtered pose</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>true if the median filtering has been performed and the pose assigned, false otherwise </dd></dl>\n\n</div>\n</div>\n<a id=\"acdba100d3ccfcb260d1843f7dd7815d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acdba100d3ccfcb260d1843f7dd7815d4\">&#9670;&nbsp;</a></span>initialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::initialize </td>\n          <td>(</td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>ts</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Initializes the transformations of <a class=\"el\" href=\"classLKSE3.html\">LKSE3</a> and update the map </p><pre class=\"fragment\">ROS params:\n    dvs_bootstrap_frame_id) get first pose from last published in\n         this frame\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">ts</td><td>Timestamp at which initialize the pose (last reliable pose)</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">updateMap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ae71f93339e51c3b24927ace0b2d2cc92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae71f93339e51c3b24927ace0b2d2cc92\">&#9670;&nbsp;</a></span>mapCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::mapCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::PointCloud2::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Updates map_ with the new published point cloud</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Message containing the point cloud representing the new map </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a3aa7f4bc38d80b5d90e53f8b30915ca9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3aa7f4bc38d80b5d90e53f8b30915ca9\">&#9670;&nbsp;</a></span>postCameraLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::postCameraLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after dvs_cam_ has been loaded </p><pre class=\"fragment\">ROS params:\n    virtual_width) voxel grid width\n    virtual_height) voxel grid height\n    fov_virtual_camera_deg) voxel grid fov</pre> \n</div>\n</div>\n<a id=\"a2279b2b5f7be0fde95c54820fba976fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2279b2b5f7be0fde95c54820fba976fd\">&#9670;&nbsp;</a></span>publishMapOverlapThread()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::publishMapOverlapThread </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Separates thread taking the event image (built by drawing the events received onto the image) and overlaying the points in the local map </p><pre class=\"fragment\">ROS params:\n    event_map_overlap_rate) publishing rate of the thread\n    max_depth) maximum expected depth in the scene\n    min_depth) minimum expected depth in the scene\n</pre><p>topic: \"event_map_overlap\", where the image is published </p>\n\n</div>\n</div>\n<a id=\"af34bb1f5e11bd2fef1130fc3ef80d61f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af34bb1f5e11bd2fef1130fc3ef80d61f\">&#9670;&nbsp;</a></span>publishPose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::publishPose </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes last pose in poses_ </p><pre class=\"fragment\">ROS params:\n    world_frame_id) world frame id\n    dvs_frame_id) frame id of the published pose</pre> \n</div>\n</div>\n<a id=\"a34dc8c60ff0710bf5c131379fcbf8e7c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34dc8c60ff0710bf5c131379fcbf8e7c\">&#9670;&nbsp;</a></span>publishTF()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::publishTF </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes new median filtered pose, after building the last pose</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">publishPose</a>, <a class=\"el\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">getFilteredPose</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a3477d93ca1724ed9696c12c7ec005be0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3477d93ca1724ed9696c12c7ec005be0\">&#9670;&nbsp;</a></span>remoteCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::remoteCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std_msgs::String::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>On remote command, initializes or resets </p><pre class=\"fragment\"> Commands:\n     switch) initialize\n     reset) reset\n     bootstrap) activate automatic startup procedure\n</pre><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">initialize</a>, <a class=\"el\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">reset</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"acb05d74ae2ff6fa10272668fba396516\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb05d74ae2ff6fa10272668fba396516\">&#9670;&nbsp;</a></span>reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::reset </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Sets the tracker state to idle_ = true and clears variables </p>\n\n</div>\n</div>\n<a id=\"a1029bfd35553535ccba3159101cd70b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1029bfd35553535ccba3159101cd70b9\">&#9670;&nbsp;</a></span>tfCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::tfCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const tf::tfMessagePtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msgs</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Adds published transforms to the tf_ data structure </p>\n\n</div>\n</div>\n<a id=\"ae701ed9604790939eeefd0dcd4024a6a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae701ed9604790939eeefd0dcd4024a6a\">&#9670;&nbsp;</a></span>trackingThread()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::trackingThread </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>If active, regularly estimate trajectory based on currently stored events</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">estimateTrajectory</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"af25a49bbecabdad9baf35ae7d5fdbcf6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af25a49bbecabdad9baf35ae7d5fdbcf6\">&#9670;&nbsp;</a></span>updateMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Tracker::updateMap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Set current frame as reference frame and project the map </p><pre class=\"fragment\">ROS params:\n     min_map_size) minimum number of map points to proceed with the\n         update\n     min_n_keypoints) minimum number of extracted keypoints\n             (LKSE3::keypoints_) required for a reliable tracking\n</pre><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">LKSE3::projectMap</a> </dd></dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5a4accfc84b455232a1fe11ad7d34658\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a4accfc84b455232a1fe11ad7d34658\">&#9670;&nbsp;</a></span>camera_info_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber Tracker::camera_info_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">cameraInfoCallback</a> topic: \"camera_info\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a03e620f13a98ac9895069762c00cc3a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03e620f13a98ac9895069762c00cc3a0\">&#9670;&nbsp;</a></span>event_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber Tracker::event_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">eventCallback</a> topic: \"events\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a6f79c6e96b703e1e979439d9345fa5f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f79c6e96b703e1e979439d9345fa5f6\">&#9670;&nbsp;</a></span>map_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber Tracker::map_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">mapCallback</a> topic: \"pointcloud\" </dd></dl>\n\n</div>\n</div>\n<a id=\"ae3e255d370f7ad0381f9683ef2dfdbe7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3e255d370f7ad0381f9683ef2dfdbe7\">&#9670;&nbsp;</a></span>poses_pub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Publisher Tracker::poses_pub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">publishPose</a> topic: \"evo/pose\" </dd></dl>\n\n</div>\n</div>\n<a id=\"ade9360c0b7392539943229150027677a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade9360c0b7392539943229150027677a\">&#9670;&nbsp;</a></span>remote_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber Tracker::remote_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">remoteCallback</a> topic: \"remote_key\" </dd></dl>\n\n</div>\n</div>\n<a id=\"ab39a3563aa35ce596b1ef84b5353e7ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab39a3563aa35ce596b1ef84b5353e7ee\">&#9670;&nbsp;</a></span>tf_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber Tracker::tf_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">tfCallback</a> topic: \"tf\" </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_tracking/include/dvs_tracking/<a class=\"el\" href=\"tracker_8hpp_source.html\">tracker.hpp</a></li>\n<li>dvs_tracking/src/tracker.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classTracker__coll__graph.md5",
    "content": "a13e2150856a36d1d3aed33f8061ec8f"
  },
  {
    "path": "docs/classTracker__inherit__graph.md5",
    "content": "262c46fe8936c22798a02c10ce9b8684"
  },
  {
    "path": "docs/classaslam_1_1common_1_1NumericalDiff-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiff&lt; _Functor, mode &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>epsfcn</b> (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Functor</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getJacobianNumerical</b>(const InputType &amp;_x, JacobianType &amp;jac) const (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InputsAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>InputType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>JacobianType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>NumericalDiff</b>(const Functor &amp;f, Scalar _epsfcn=0.) (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const NumericalDiff &amp;) (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Scalar</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ValuesAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ValueType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classaslam_1_1common_1_1NumericalDiff.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::NumericalDiff&lt; _Functor, mode &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classaslam_1_1common_1_1NumericalDiff-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiff&lt; _Functor, mode &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Modified numerical differentiation code from unsupported/Eigen library.  \n <a href=\"classaslam_1_1common_1_1NumericalDiff.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for aslam::common::NumericalDiff&lt; _Functor, mode &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classaslam_1_1common_1_1NumericalDiff__inherit__graph.png\" border=\"0\" usemap=\"#aslam_1_1common_1_1NumericalDiff_3_01__Functor_00_01mode_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for aslam::common::NumericalDiff&lt; _Functor, mode &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classaslam_1_1common_1_1NumericalDiff__coll__graph.png\" border=\"0\" usemap=\"#aslam_1_1common_1_1NumericalDiff_3_01__Functor_00_01mode_01_4_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ae0506825455e2c463efe1c4affb98bbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae0506825455e2c463efe1c4affb98bbc\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <b>InputsAtCompileTime</b> = Functor::InputsAtCompileTime, \n<b>ValuesAtCompileTime</b> = Functor::ValuesAtCompileTime\n }</td></tr>\n<tr class=\"separator:ae0506825455e2c463efe1c4affb98bbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3408eddb26e7e0dd67daf049f5ee79d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3408eddb26e7e0dd67daf049f5ee79d5\"></a>\ntypedef _Functor&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Functor</b></td></tr>\n<tr class=\"separator:a3408eddb26e7e0dd67daf049f5ee79d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb8dd81d5bcd95ec2d9950d82509c6fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb8dd81d5bcd95ec2d9950d82509c6fc\"></a>\ntypedef Functor::Scalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Scalar</b></td></tr>\n<tr class=\"separator:afb8dd81d5bcd95ec2d9950d82509c6fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e58d2090a0ac0286826986fe81ad876\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7e58d2090a0ac0286826986fe81ad876\"></a>\ntypedef Functor::InputType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InputType</b></td></tr>\n<tr class=\"separator:a7e58d2090a0ac0286826986fe81ad876\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a309902a1355504d08792160ba826113d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a309902a1355504d08792160ba826113d\"></a>\ntypedef Functor::ValueType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ValueType</b></td></tr>\n<tr class=\"separator:a309902a1355504d08792160ba826113d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af68654960564d985a88c5e6009852f9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af68654960564d985a88c5e6009852f9c\"></a>\ntypedef Functor::JacobianType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JacobianType</b></td></tr>\n<tr class=\"separator:af68654960564d985a88c5e6009852f9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad74e44da46504120d483921b81543d25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad74e44da46504120d483921b81543d25\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NumericalDiff</b> (const Functor &amp;f, Scalar _epsfcn=0.)</td></tr>\n<tr class=\"separator:ad74e44da46504120d483921b81543d25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf667bbce962a6d8c1ed7f9d2c415a3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf667bbce962a6d8c1ed7f9d2c415a3e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getJacobianNumerical</b> (const InputType &amp;_x, JacobianType &amp;jac) const</td></tr>\n<tr class=\"separator:acf667bbce962a6d8c1ed7f9d2c415a3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:ae26bedba04e98e5eb9a242fa9824af63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae26bedba04e98e5eb9a242fa9824af63\"></a>\n<a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a> &amp;)</td></tr>\n<tr class=\"separator:ae26bedba04e98e5eb9a242fa9824af63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a6a8af2204d2440df6824ea87d107cbf2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a8af2204d2440df6824ea87d107cbf2\"></a>\nScalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>epsfcn</b></td></tr>\n<tr class=\"separator:a6a8af2204d2440df6824ea87d107cbf2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><h3>template&lt;typename _Functor, NumericalDiffMode mode = CentralSecond&gt;<br />\nclass aslam::common::NumericalDiff&lt; _Functor, mode &gt;</h3>\n\n<p>Modified numerical differentiation code from unsupported/Eigen library. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classaslam_1_1common_1_1NumericalDiff__coll__graph.md5",
    "content": "45c15cf70718c70c15ebaf16beee744f"
  },
  {
    "path": "docs/classaslam_1_1common_1_1NumericalDiff__inherit__graph.md5",
    "content": "7fa43d375e8d15a2be059024214777de"
  },
  {
    "path": "docs/classaslam_1_1common_1_1ZeroNumericalDiff-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Functor</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getJacobianNumerical</b>(const InputType &amp;, JacobianType &amp;) const (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>InputsAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InputType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>JacobianType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Scalar</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ValuesAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ValueType</b> typedef (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ZeroNumericalDiff</b>(const Functor &amp;, Scalar) (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ZeroNumericalDiff</b>() (defined in <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classaslam_1_1common_1_1ZeroNumericalDiff.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classaslam_1_1common_1_1ZeroNumericalDiff-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a4a4a78d67ecc3dbe371c5bc8c7f18d33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4a4a78d67ecc3dbe371c5bc8c7f18d33\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <b>InputsAtCompileTime</b> = _Functor::InputsAtCompileTime, \n<b>ValuesAtCompileTime</b> = _Functor::ValuesAtCompileTime\n }</td></tr>\n<tr class=\"separator:a4a4a78d67ecc3dbe371c5bc8c7f18d33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ef0c1fcb16cdac81b926fad49a142c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8ef0c1fcb16cdac81b926fad49a142c6\"></a>\ntypedef _Functor&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Functor</b></td></tr>\n<tr class=\"separator:a8ef0c1fcb16cdac81b926fad49a142c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78974698fc409d11261de167c3a5bc03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78974698fc409d11261de167c3a5bc03\"></a>\ntypedef Functor::Scalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Scalar</b></td></tr>\n<tr class=\"separator:a78974698fc409d11261de167c3a5bc03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa271209459fc868fc91e2e47dc8e8049\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa271209459fc868fc91e2e47dc8e8049\"></a>\ntypedef Functor::InputType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InputType</b></td></tr>\n<tr class=\"separator:aa271209459fc868fc91e2e47dc8e8049\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95380e4b0538292d2a9a73329095d1cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95380e4b0538292d2a9a73329095d1cb\"></a>\ntypedef Functor::ValueType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ValueType</b></td></tr>\n<tr class=\"separator:a95380e4b0538292d2a9a73329095d1cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54d9b5a89ade5c16fff092abb3cdba65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54d9b5a89ade5c16fff092abb3cdba65\"></a>\ntypedef Functor::JacobianType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JacobianType</b></td></tr>\n<tr class=\"separator:a54d9b5a89ade5c16fff092abb3cdba65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a8c887454a551dd1bdd6cd50b79ed59fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8c887454a551dd1bdd6cd50b79ed59fd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ZeroNumericalDiff</b> (const Functor &amp;, Scalar)</td></tr>\n<tr class=\"separator:a8c887454a551dd1bdd6cd50b79ed59fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a429c923e01537bbf4dab33049b7a77af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a429c923e01537bbf4dab33049b7a77af\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getJacobianNumerical</b> (const InputType &amp;, JacobianType &amp;) const</td></tr>\n<tr class=\"separator:a429c923e01537bbf4dab33049b7a77af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecomp-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecomp Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_Hnorm</b> (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>decompose</b>(std::vector&lt; CameraMotion &gt; &amp;camMotions)=0 (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a>(const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; CameraMotion &gt; &amp;camMotions)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getHnorm</b>() const (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a>(const cv::Matx33d &amp;R, const double epsilon=0.01)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>normalize</b>(const cv::Matx33d &amp;H, const cv::Matx33d &amp;K) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>passesSameSideOfPlaneConstraint</b>(CameraMotion &amp;motion) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>removeScale</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: cv::HomographyDecomposition::HomographyDecomp Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecomp Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for cv::HomographyDecomposition::HomographyDecomp:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp__inherit__graph.png\" border=\"0\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecomp_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecomp_inherit__map\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecomp_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecompInria\" alt=\"\" coords=\"259,5,464,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecompZhang\" alt=\"\" coords=\"259,71,464,112\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a237e5e1ab93f806ca8f836e5f547792d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a237e5e1ab93f806ca8f836e5f547792d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a> (const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)</td></tr>\n<tr class=\"memdesc:a237e5e1ab93f806ca8f836e5f547792d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">main routine to decompose homography <br /></td></tr>\n<tr class=\"separator:a237e5e1ab93f806ca8f836e5f547792d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d8f0efba934cf90855db28944d1ec1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a> (const cv::Matx33d &amp;R, const double epsilon=0.01)</td></tr>\n<tr class=\"separator:a39d8f0efba934cf90855db28944d1ec1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:ad0a8ee5497cafcdf6bee31577675582a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0a8ee5497cafcdf6bee31577675582a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>passesSameSideOfPlaneConstraint</b> (<a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &amp;motion)</td></tr>\n<tr class=\"separator:ad0a8ee5497cafcdf6bee31577675582a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af46e535403c446da7a270a8d47f0bfd4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af46e535403c446da7a270a8d47f0bfd4\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decompose</b> (std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)=0</td></tr>\n<tr class=\"separator:af46e535403c446da7a270a8d47f0bfd4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7e068bc3155afdf007f8f9ec4477584\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7e068bc3155afdf007f8f9ec4477584\"></a>\nconst cv::Matx33d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getHnorm</b> () const</td></tr>\n<tr class=\"separator:aa7e068bc3155afdf007f8f9ec4477584\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a189525bbe9249834cc3b475e99234cf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a189525bbe9249834cc3b475e99234cf9\"></a>\ncv::Matx33d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>normalize</b> (const cv::Matx33d &amp;H, const cv::Matx33d &amp;K)</td></tr>\n<tr class=\"separator:a189525bbe9249834cc3b475e99234cf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61d822fdd4c33afd8bfac48467f13056\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a61d822fdd4c33afd8bfac48467f13056\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>removeScale</b> ()</td></tr>\n<tr class=\"separator:a61d822fdd4c33afd8bfac48467f13056\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:abbc95625a811c4a175301819dc1c7ba5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abbc95625a811c4a175301819dc1c7ba5\"></a>\ncv::Matx33d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_Hnorm</b></td></tr>\n<tr class=\"separator:abbc95625a811c4a175301819dc1c7ba5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a39d8f0efba934cf90855db28944d1ec1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39d8f0efba934cf90855db28944d1ec1\">&#9670;&nbsp;</a></span>isRotationValid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool cv::HomographyDecomposition::HomographyDecomp::isRotationValid </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Matx33d &amp;&#160;</td>\n          <td class=\"paramname\"><em>R</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const double&#160;</td>\n          <td class=\"paramname\"><em>epsilon</em> = <code>0.01</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>This checks that the input is a pure rotation matrix 'm'. The conditions for this are: R' * R = I and det(R) = 1 (proper rotation matrix) </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"homography__decomp_8h_source.html\">homography_decomp.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompInria-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecompInria Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">decompose</a>(std::vector&lt; CameraMotion &gt; &amp;camMotions)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a>(const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; CameraMotion &gt; &amp;camMotions)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>findRmatFrom_tstar_n</b>(const cv::Vec3d &amp;tstar, const cv::Vec3d &amp;n, const double v, cv::Matx33d &amp;R) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getHnorm</b>() const (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>HomographyDecompInria</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a>(const cv::Matx33d &amp;R, const double epsilon=0.01)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>oppositeOfMinor</b>(const cv::Matx33d &amp;M, const int row, const int col) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>passesSameSideOfPlaneConstraint</b>(CameraMotion &amp;motion) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~HomographyDecompInria</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: cv::HomographyDecomposition::HomographyDecompInria Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecompInria Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for cv::HomographyDecomposition::HomographyDecompInria:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria__inherit__graph.png\" border=\"0\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecompInria_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecompInria_inherit__map\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecompInria_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecomp\" alt=\"\" coords=\"5,5,211,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for cv::HomographyDecomposition::HomographyDecompInria:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria__coll__graph.png\" border=\"0\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecompInria_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecompInria_coll__map\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecompInria_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecomp\" alt=\"\" coords=\"5,5,211,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a7ca4aa99a328cb296590ad1b59adce61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">decompose</a> (std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)</td></tr>\n<tr class=\"separator:a7ca4aa99a328cb296590ad1b59adce61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac4100869c85c41799e903bb4c00320\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeac4100869c85c41799e903bb4c00320\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>oppositeOfMinor</b> (const cv::Matx33d &amp;M, const int row, const int col)</td></tr>\n<tr class=\"separator:aeac4100869c85c41799e903bb4c00320\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4c6171f28971396aadcedff4f4c789c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4c6171f28971396aadcedff4f4c789c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>findRmatFrom_tstar_n</b> (const cv::Vec3d &amp;tstar, const cv::Vec3d &amp;n, const double v, cv::Matx33d &amp;R)</td></tr>\n<tr class=\"separator:af4c6171f28971396aadcedff4f4c789c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td></tr>\n<tr class=\"memitem:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a237e5e1ab93f806ca8f836e5f547792d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a> (const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)</td></tr>\n<tr class=\"memdesc:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">main routine to decompose homography <br /></td></tr>\n<tr class=\"separator:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d8f0efba934cf90855db28944d1ec1 inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a> (const cv::Matx33d &amp;R, const double epsilon=0.01)</td></tr>\n<tr class=\"separator:a39d8f0efba934cf90855db28944d1ec1 inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td></tr>\n<tr class=\"memitem:ad0a8ee5497cafcdf6bee31577675582a inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0a8ee5497cafcdf6bee31577675582a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>passesSameSideOfPlaneConstraint</b> (<a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &amp;motion)</td></tr>\n<tr class=\"separator:ad0a8ee5497cafcdf6bee31577675582a inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7e068bc3155afdf007f8f9ec4477584 inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7e068bc3155afdf007f8f9ec4477584\"></a>\nconst cv::Matx33d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getHnorm</b> () const</td></tr>\n<tr class=\"separator:aa7e068bc3155afdf007f8f9ec4477584 inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a7ca4aa99a328cb296590ad1b59adce61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ca4aa99a328cb296590ad1b59adce61\">&#9670;&nbsp;</a></span>decompose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void cv::HomographyDecomposition::HomographyDecompInria::decompose </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>camMotions</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Compute nvectors </p>\n\n<p>Implements <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"homography__decomp_8h_source.html\">homography_decomp.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompInria__coll__graph.md5",
    "content": "e05b22c5c8027c99e3a3a1500501ca07"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompInria__inherit__graph.md5",
    "content": "36a4f07b5b074cec9d9c74758f20afb7"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecompZhang Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">decompose</a>(std::vector&lt; CameraMotion &gt; &amp;camMotions)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a>(const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; CameraMotion &gt; &amp;camMotions)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>findMotionFrom_tstar_n</b>(const cv::Vec3d &amp;tstar, const cv::Vec3d &amp;n, CameraMotion &amp;motion) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getHnorm</b>() const (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>HomographyDecompZhang</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a>(const cv::Matx33d &amp;R, const double epsilon=0.01)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>passesSameSideOfPlaneConstraint</b>(CameraMotion &amp;motion) (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~HomographyDecomp</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~HomographyDecompZhang</b>() (defined in <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: cv::HomographyDecomposition::HomographyDecompZhang Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::HomographyDecompZhang Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for cv::HomographyDecomposition::HomographyDecompZhang:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang__inherit__graph.png\" border=\"0\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_inherit__map\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecomp\" alt=\"\" coords=\"5,5,211,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for cv::HomographyDecomposition::HomographyDecompZhang:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang__coll__graph.png\" border=\"0\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_coll__map\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecompZhang_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecomp\" alt=\"\" coords=\"5,5,211,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:ad9d5cff3e5c64a5998162a64dc7abe79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">decompose</a> (std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)</td></tr>\n<tr class=\"separator:ad9d5cff3e5c64a5998162a64dc7abe79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab91102cf9cc65c6cf3aba9c5bbeade41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab91102cf9cc65c6cf3aba9c5bbeade41\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>findMotionFrom_tstar_n</b> (const cv::Vec3d &amp;tstar, const cv::Vec3d &amp;n, <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &amp;motion)</td></tr>\n<tr class=\"separator:ab91102cf9cc65c6cf3aba9c5bbeade41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td></tr>\n<tr class=\"memitem:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a237e5e1ab93f806ca8f836e5f547792d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">decomposeHomography</a> (const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;camMotions)</td></tr>\n<tr class=\"memdesc:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">main routine to decompose homography <br /></td></tr>\n<tr class=\"separator:a237e5e1ab93f806ca8f836e5f547792d inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d8f0efba934cf90855db28944d1ec1 inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">isRotationValid</a> (const cv::Matx33d &amp;R, const double epsilon=0.01)</td></tr>\n<tr class=\"separator:a39d8f0efba934cf90855db28944d1ec1 inherit pub_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></td></tr>\n<tr class=\"memitem:ad0a8ee5497cafcdf6bee31577675582a inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0a8ee5497cafcdf6bee31577675582a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>passesSameSideOfPlaneConstraint</b> (<a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &amp;motion)</td></tr>\n<tr class=\"separator:ad0a8ee5497cafcdf6bee31577675582a inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7e068bc3155afdf007f8f9ec4477584 inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7e068bc3155afdf007f8f9ec4477584\"></a>\nconst cv::Matx33d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getHnorm</b> () const</td></tr>\n<tr class=\"separator:aa7e068bc3155afdf007f8f9ec4477584 inherit pro_methods_classcv_1_1HomographyDecomposition_1_1HomographyDecomp\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad9d5cff3e5c64a5998162a64dc7abe79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9d5cff3e5c64a5998162a64dc7abe79\">&#9670;&nbsp;</a></span>decompose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void cv::HomographyDecomposition::HomographyDecompZhang::decompose </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>camMotions</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Solution group A</p>\n<p>Solution group B </p>\n\n<p>Implements <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"homography__decomp_8h_source.html\">homography_decomp.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang__coll__graph.md5",
    "content": "cf0bfb28fd7c91d28e4e524e3537e351"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang__inherit__graph.md5",
    "content": "fe940061ffaf58101d017af1ef5d3dd8"
  },
  {
    "path": "docs/classcv_1_1HomographyDecomposition_1_1HomographyDecomp__inherit__graph.md5",
    "content": "936b26b6290643b1a18a055afc64852e"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthFromDefocusNode-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DepthFromDefocusNode Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">accumulatePointcloud</a>(const cv::Mat &amp;depth, const cv::Mat &amp;mask, const cv::Mat &amp;confidence, const Eigen::Matrix3d R_world_ref, const Eigen::Vector3d t_world_ref, const ros::Time &amp;timestamp)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">adaptive_threshold_c_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">adaptive_threshold_kernel_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">auto_trigger_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">bootstrap_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">camera_info_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">clearEventQueue</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">confidence_mask_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">copilot_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">copilotCallback</a>(const std_msgs::Bool &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">current_event_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">DepthFromDefocusNode</a>(const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;pnh, const image_geometry::PinholeCameraModel &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depths_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">dvs_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>event_queue_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">event_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">events_to_recreate_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">getPoseAt</a>(const ros::Time &amp;t, evo_utils::geometry::Transformation &amp;T)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>it_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">K_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">last_kf_update_event_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">max_depth_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">median_filter_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">min_depth_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">min_num_neighbors_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">newest_tracked_event_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">nh_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">num_depth_cells_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">pc_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">pc_global_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pnh_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">postCameraLoaded</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">precomputed_rectified_points_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">precomputeRectifiedPoints</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">processEventArray</a>(const dvs_msgs::EventArray::ConstPtr &amp;event_array)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">processEventQueue</a>(bool reset=false)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">projectEventsToVoxelGrid</a>(const std::vector&lt; Eigen::Vector4f &gt; &amp;events, const std::vector&lt; Eigen::Vector3f &gt; &amp;centers)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">pub_depth_map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">pub_pc_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">pub_pc_global_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">pub_voxel_grid_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">publishDepthmap</a>(const cv::Mat &amp;depth, const cv::Mat &amp;mask)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">publishVoxelGrid</a>(const evo_utils::geometry::Transformation &amp;T_w_ref) const</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">radius_search_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>raw_depths_vec_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">ref_voxel_grid_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">regular_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">remote_key_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">remoteKeyCallback</a>(const std_msgs::String::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">resetMapper</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">resetVoxelGrid</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">setupVoxelGrid</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">state_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">synthesizeAndPublishDepth</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">synthesizePointCloudFromVoxelGrid</a>(cv::Mat &amp;depth, cv::Mat &amp;confidence)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">synthesizePointCloudFromVoxelGridContrast</a>(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">synthesizePointCloudFromVoxelGridGradMag</a>(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">synthesizePointCloudFromVoxelGridLinf</a>(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">T_ref_w_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tf_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">tf_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">tfCallback</a>(const tf::tfMessage::ConstPtr &amp;tf_msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">type_focus_measure_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">virtual_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">voteForCell</a>(const float x_f, const float y_f, Vote *grid)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">voteForCellBilinear</a>(const float x_f, const float y_f, Vote *grid)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">voxel_filter_leaf_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">voxelGridAt</a>(const std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z) const</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">voxelGridAt</a>(std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">~DepthFromDefocusNode</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthFromDefocusNode.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: depth_from_defocus::DepthFromDefocusNode Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DepthFromDefocusNode Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__defocus__node_8hpp_source.html\">depth_defocus_node.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for depth_from_defocus::DepthFromDefocusNode:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1DepthFromDefocusNode__coll__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1DepthFromDefocusNode_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"depth__from__defocus_1_1DepthFromDefocusNode_coll__map\" id=\"depth__from__defocus_1_1DepthFromDefocusNode_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\" title=\"evo_utils::camera::\\lPinholeCamera\" alt=\"\" coords=\"5,331,139,372\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\" title=\"depth_from_defocus\\l::InverseDepthVector\" alt=\"\" coords=\"232,331,379,372\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; InverseDepth\\lVector \\&gt;\" alt=\"\" coords=\"221,95,414,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a34a786d7ed8c846f3d10e6c4ea44ca1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">DepthFromDefocusNode</a> (const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;pnh, const image_geometry::PinholeCameraModel &amp;cam)</td></tr>\n<tr class=\"separator:a34a786d7ed8c846f3d10e6c4ea44ca1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa040d5d769ec0fe374456e5bab56ed4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">~DepthFromDefocusNode</a> ()</td></tr>\n<tr class=\"separator:afa040d5d769ec0fe374456e5bab56ed4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66af9d6f400f5ba558891c3e96ccefc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">processEventArray</a> (const dvs_msgs::EventArray::ConstPtr &amp;event_array)</td></tr>\n<tr class=\"separator:a66af9d6f400f5ba558891c3e96ccefc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a410d73cc0f5560fd523f00611bd6d662\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">tfCallback</a> (const tf::tfMessage::ConstPtr &amp;tf_msg)</td></tr>\n<tr class=\"separator:a410d73cc0f5560fd523f00611bd6d662\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9947eae416456401f19a6191ca5f7ea7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">remoteKeyCallback</a> (const std_msgs::String::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a9947eae416456401f19a6191ca5f7ea7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98c7bb325b87b98a5246f5413bdfccda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a98c7bb325b87b98a5246f5413bdfccda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e50df3e30a2cb737f9ebba7abf309f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">copilotCallback</a> (const std_msgs::Bool &amp;msg)</td></tr>\n<tr class=\"separator:a8e50df3e30a2cb737f9ebba7abf309f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a0b4316dd5d3f7a0f9f9022fa7cb062e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">resetMapper</a> ()</td></tr>\n<tr class=\"separator:a0b4316dd5d3f7a0f9f9022fa7cb062e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdfd142fd0150cdf4db973a7e4cf2446\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">projectEventsToVoxelGrid</a> (const std::vector&lt; Eigen::Vector4f &gt; &amp;events, const std::vector&lt; Eigen::Vector3f &gt; &amp;centers)</td></tr>\n<tr class=\"separator:afdfd142fd0150cdf4db973a7e4cf2446\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c3e65bb3ddb235e484574d851a08c48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">resetVoxelGrid</a> ()</td></tr>\n<tr class=\"separator:a6c3e65bb3ddb235e484574d851a08c48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf8dc50f440375fdf193e512a73409a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">processEventQueue</a> (bool reset=false)</td></tr>\n<tr class=\"separator:acf8dc50f440375fdf193e512a73409a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad015324f82f688def03d52386161e706\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">getPoseAt</a> (const ros::Time &amp;t, evo_utils::geometry::Transformation &amp;T)</td></tr>\n<tr class=\"separator:ad015324f82f688def03d52386161e706\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1d09c207960dc16c44ab095b0b0c012\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">setupVoxelGrid</a> ()</td></tr>\n<tr class=\"separator:ac1d09c207960dc16c44ab095b0b0c012\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdae5a3c5364f7134a6db87b291d4c2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">voteForCell</a> (const float x_f, const float y_f, Vote *grid)</td></tr>\n<tr class=\"separator:afdae5a3c5364f7134a6db87b291d4c2b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be7fc72e0cc3fed64e4e84136c3f8d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">voteForCellBilinear</a> (const float x_f, const float y_f, Vote *grid)</td></tr>\n<tr class=\"separator:a9be7fc72e0cc3fed64e4e84136c3f8d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabf95d4de38430266604af8ada0dc552\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">precomputeRectifiedPoints</a> ()</td></tr>\n<tr class=\"separator:aabf95d4de38430266604af8ada0dc552\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a077406511ce2fe2dafcc318bb02bc518\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">synthesizeAndPublishDepth</a> ()</td></tr>\n<tr class=\"separator:a077406511ce2fe2dafcc318bb02bc518\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9789403c30791c6e1c5a8a2cb2dc7f81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">synthesizePointCloudFromVoxelGrid</a> (cv::Mat &amp;depth, cv::Mat &amp;confidence)</td></tr>\n<tr class=\"separator:a9789403c30791c6e1c5a8a2cb2dc7f81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6cc30aaa1c12a87e22cb23762b1d29f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">synthesizePointCloudFromVoxelGridLinf</a> (cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td></tr>\n<tr class=\"separator:ae6cc30aaa1c12a87e22cb23762b1d29f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a782327cddbfd08861a32365a63f993b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">synthesizePointCloudFromVoxelGridContrast</a> (cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td></tr>\n<tr class=\"separator:a782327cddbfd08861a32365a63f993b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e387f433c5952219e29ea75aa539c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">synthesizePointCloudFromVoxelGridGradMag</a> (cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</td></tr>\n<tr class=\"separator:a20e387f433c5952219e29ea75aa539c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1623778e6e3a6879c7a96919943ebb32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">accumulatePointcloud</a> (const cv::Mat &amp;depth, const cv::Mat &amp;mask, const cv::Mat &amp;confidence, const Eigen::Matrix3d R_world_ref, const Eigen::Vector3d t_world_ref, const ros::Time &amp;timestamp)</td></tr>\n<tr class=\"separator:a1623778e6e3a6879c7a96919943ebb32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63265d395f08ffcc3754dfbd8fddcf9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">publishVoxelGrid</a> (const evo_utils::geometry::Transformation &amp;T_w_ref) const</td></tr>\n<tr class=\"separator:a63265d395f08ffcc3754dfbd8fddcf9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38737d443d893b1a30d423e13563ec9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">publishDepthmap</a> (const cv::Mat &amp;depth, const cv::Mat &amp;mask)</td></tr>\n<tr class=\"separator:a38737d443d893b1a30d423e13563ec9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94b54fd9870f48adb1e52e88975cdc45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a> ()</td></tr>\n<tr class=\"separator:a94b54fd9870f48adb1e52e88975cdc45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b8c08338af40686a2584e8454f98f53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">clearEventQueue</a> ()</td></tr>\n<tr class=\"separator:a8b8c08338af40686a2584e8454f98f53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d17eba64b62fb1b3e9ce82ae067f3e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">postCameraLoaded</a> ()</td></tr>\n<tr class=\"separator:a0d17eba64b62fb1b3e9ce82ae067f3e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaece6ded781928540cf7b3b848d0833d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const Vote &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">voxelGridAt</a> (const std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z) const</td></tr>\n<tr class=\"separator:aaece6ded781928540cf7b3b848d0833d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35190fd60fd5e8bb7ff5b8979a4a8a70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Vote &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">voxelGridAt</a> (std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z)</td></tr>\n<tr class=\"separator:a35190fd60fd5e8bb7ff5b8979a4a8a70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08b55e09a6c2e7bc1714c06cf9f847c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">update</a> ()</td></tr>\n<tr class=\"separator:a08b55e09a6c2e7bc1714c06cf9f847c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a332088b877233c941a41edeed681a57e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">nh_</a></td></tr>\n<tr class=\"separator:a332088b877233c941a41edeed681a57e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d3dbf25af83e5e530163b9df91f6f31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d3dbf25af83e5e530163b9df91f6f31\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pnh_</b></td></tr>\n<tr class=\"separator:a0d3dbf25af83e5e530163b9df91f6f31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adca6f9f8eb3ff9a9ad568525a2bc79c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adca6f9f8eb3ff9a9ad568525a2bc79c0\"></a>\nimage_transport::ImageTransport&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>it_</b></td></tr>\n<tr class=\"separator:adca6f9f8eb3ff9a9ad568525a2bc79c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb6a055c5cd4515fe7eb5818911b7d50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">pub_pc_</a></td></tr>\n<tr class=\"separator:abb6a055c5cd4515fe7eb5818911b7d50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae83baae63ad0f9e266e3a1e323d01b4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">pub_pc_global_</a></td></tr>\n<tr class=\"separator:ae83baae63ad0f9e266e3a1e323d01b4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5aff4f76d8c1697d12a9eaf3b1a25f67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">pub_voxel_grid_</a></td></tr>\n<tr class=\"separator:a5aff4f76d8c1697d12a9eaf3b1a25f67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a489a220948a3742cb67c3f3ee9c17ab7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">image_transport::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">pub_depth_map_</a></td></tr>\n<tr class=\"separator:a489a220948a3742cb67c3f3ee9c17ab7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab80ebeb058562a6834726a1781c569c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">event_sub_</a></td></tr>\n<tr class=\"separator:ab80ebeb058562a6834726a1781c569c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefbd42bbebb0de0bbd7282ce67afc0c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">tf_sub_</a></td></tr>\n<tr class=\"separator:aefbd42bbebb0de0bbd7282ce67afc0c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39e537b8e2385d06156df91dc1f2e190\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">remote_key_</a></td></tr>\n<tr class=\"separator:a39e537b8e2385d06156df91dc1f2e190\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35a3692d84034741bce050cfbf1858cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">camera_info_sub_</a></td></tr>\n<tr class=\"separator:a35a3692d84034741bce050cfbf1858cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67c78059b53cd51fb551418970f76572\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">copilot_sub_</a></td></tr>\n<tr class=\"separator:a67c78059b53cd51fb551418970f76572\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dd83f7db94b2615d40a03892dcdcbe0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">MapperState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">state_</a></td></tr>\n<tr class=\"memdesc:a0dd83f7db94b2615d40a03892dcdcbe0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">state of the mapper,  <a href=\"#a0dd83f7db94b2615d40a03892dcdcbe0\">More...</a><br /></td></tr>\n<tr class=\"separator:a0dd83f7db94b2615d40a03892dcdcbe0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae99eca2579b25fc757930b5540adc54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae99eca2579b25fc757930b5540adc54\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:aae99eca2579b25fc757930b5540adc54\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root frame id of the tf system. <br /></td></tr>\n<tr class=\"separator:aae99eca2579b25fc757930b5540adc54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b8f9a445431a5432f2a30c4f0bcc302\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b8f9a445431a5432f2a30c4f0bcc302\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">frame_id_</a></td></tr>\n<tr class=\"memdesc:a2b8f9a445431a5432f2a30c4f0bcc302\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">currently used frame id <br /></td></tr>\n<tr class=\"separator:a2b8f9a445431a5432f2a30c4f0bcc302\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b632eb6d82e259230d3cb2bda830539\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b632eb6d82e259230d3cb2bda830539\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">regular_frame_id_</a></td></tr>\n<tr class=\"memdesc:a9b632eb6d82e259230d3cb2bda830539\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">frame id to use during regular operation <br /></td></tr>\n<tr class=\"separator:a9b632eb6d82e259230d3cb2bda830539\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c4fa8b85060c7bad51a26e77d7cb532\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4c4fa8b85060c7bad51a26e77d7cb532\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">bootstrap_frame_id_</a></td></tr>\n<tr class=\"memdesc:a4c4fa8b85060c7bad51a26e77d7cb532\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">frame id to use during bootstrapping <br /></td></tr>\n<tr class=\"separator:a4c4fa8b85060c7bad51a26e77d7cb532\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1a8d004db32afa6cf958d8c0dca020c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad1a8d004db32afa6cf958d8c0dca020c\"></a>\nstd::shared_ptr&lt; tf::Transformer &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_</b></td></tr>\n<tr class=\"separator:ad1a8d004db32afa6cf958d8c0dca020c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a313454c2e14b5d530145cdea7cb353d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a313454c2e14b5d530145cdea7cb353d8\"></a>\nevo_utils::geometry::Transformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">T_ref_w_</a></td></tr>\n<tr class=\"memdesc:a313454c2e14b5d530145cdea7cb353d8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera pose <br /></td></tr>\n<tr class=\"separator:a313454c2e14b5d530145cdea7cb353d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8090033f289e75e5c8848d8d607776fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">image_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">dvs_cam_</a></td></tr>\n<tr class=\"memdesc:a8090033f289e75e5c8848d8d607776fa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">dvs sensor model retrieved from configuration file  <a href=\"#a8090033f289e75e5c8848d8d607776fa\">More...</a><br /></td></tr>\n<tr class=\"separator:a8090033f289e75e5c8848d8d607776fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a726d1f1162353f1caecdebf2278a015d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a726d1f1162353f1caecdebf2278a015d\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">width_</a></td></tr>\n<tr class=\"memdesc:a726d1f1162353f1caecdebf2278a015d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera width <br /></td></tr>\n<tr class=\"separator:a726d1f1162353f1caecdebf2278a015d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1746a5424d4c6fb08c07415d00cb8561\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1746a5424d4c6fb08c07415d00cb8561\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">height_</a></td></tr>\n<tr class=\"memdesc:a1746a5424d4c6fb08c07415d00cb8561\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera height <br /></td></tr>\n<tr class=\"separator:a1746a5424d4c6fb08c07415d00cb8561\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68691a0697108ba82a6cd0a674d84ae3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a68691a0697108ba82a6cd0a674d84ae3\"></a>\n<a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">virtual_cam_</a></td></tr>\n<tr class=\"memdesc:a68691a0697108ba82a6cd0a674d84ae3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">To extend the functionalities of PinholeCameraModel. <br /></td></tr>\n<tr class=\"separator:a68691a0697108ba82a6cd0a674d84ae3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22cd4237f65478939011561af75e326c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a22cd4237f65478939011561af75e326c\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a></td></tr>\n<tr class=\"memdesc:a22cd4237f65478939011561af75e326c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">virtual width <br /></td></tr>\n<tr class=\"separator:a22cd4237f65478939011561af75e326c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7870dbb15d8db5b442bc8ae80333c62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae7870dbb15d8db5b442bc8ae80333c62\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a></td></tr>\n<tr class=\"memdesc:ae7870dbb15d8db5b442bc8ae80333c62\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">virtual height <br /></td></tr>\n<tr class=\"separator:ae7870dbb15d8db5b442bc8ae80333c62\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a632c50ae671224d4fdb90d04649eed3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a632c50ae671224d4fdb90d04649eed3d\"></a>\nEigen::Matrix3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">K_</a></td></tr>\n<tr class=\"memdesc:a632c50ae671224d4fdb90d04649eed3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">intrinsic matrix <br /></td></tr>\n<tr class=\"separator:a632c50ae671224d4fdb90d04649eed3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d0ad9955f82c132884ac72ec2265002\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Vote &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">ref_voxel_grid_</a></td></tr>\n<tr class=\"memdesc:a6d0ad9955f82c132884ac72ec2265002\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Voxel grid vote counters.  <a href=\"#a6d0ad9955f82c132884ac72ec2265002\">More...</a><br /></td></tr>\n<tr class=\"separator:a6d0ad9955f82c132884ac72ec2265002\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e2c40e443e860ce9cd1cd9ec0278005\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e2c40e443e860ce9cd1cd9ec0278005\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">confidence_mask_</a></td></tr>\n<tr class=\"memdesc:a3e2c40e443e860ce9cd1cd9ec0278005\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Confidence associated to each voxel. <br /></td></tr>\n<tr class=\"separator:a3e2c40e443e860ce9cd1cd9ec0278005\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acff32750da61643c9d76f3de42afcc56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">voxel_filter_leaf_size_</a></td></tr>\n<tr class=\"separator:acff32750da61643c9d76f3de42afcc56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a971d6b1bf08a82afa9f6457a3efd0252\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">events_to_recreate_kf_</a></td></tr>\n<tr class=\"separator:a971d6b1bf08a82afa9f6457a3efd0252\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fc0bac204374e6d8f001bccc91f42f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">type_focus_measure_</a></td></tr>\n<tr class=\"separator:a9fc0bac204374e6d8f001bccc91f42f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb731a5a3862a81d979ddfba21c0e81a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Eigen::Matrix2Xf&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">precomputed_rectified_points_</a></td></tr>\n<tr class=\"separator:afb731a5a3862a81d979ddfba21c0e81a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9bbd8fd1f19afcb05609eb8390ed203\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">current_event_</a></td></tr>\n<tr class=\"separator:ad9bbd8fd1f19afcb05609eb8390ed203\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace0ad5d9ed7f95e6478803c2340a1a30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">newest_tracked_event_</a></td></tr>\n<tr class=\"separator:ace0ad5d9ed7f95e6478803c2340a1a30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace0e5758c89defe7c49b6116203e77e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">last_kf_update_event_</a></td></tr>\n<tr class=\"separator:ace0e5758c89defe7c49b6116203e77e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2895c252f408091cad463462343dd44b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2895c252f408091cad463462343dd44b\"></a>\nstd::deque&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>event_queue_</b></td></tr>\n<tr class=\"separator:a2895c252f408091cad463462343dd44b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63f8adce923276393dc12edaad4c4d66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63f8adce923276393dc12edaad4c4d66\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">pc_</a></td></tr>\n<tr class=\"memdesc:a63f8adce923276393dc12edaad4c4d66\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Local map. <br /></td></tr>\n<tr class=\"separator:a63f8adce923276393dc12edaad4c4d66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2144912eab70d469e16448ae24f71a7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">PointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">pc_global_</a></td></tr>\n<tr class=\"memdesc:a2144912eab70d469e16448ae24f71a7d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Global map,.  <a href=\"#a2144912eab70d469e16448ae24f71a7d\">More...</a><br /></td></tr>\n<tr class=\"separator:a2144912eab70d469e16448ae24f71a7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a635b56c3ef2453da9e5881c920eb0059\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">evo_utils::geometry::Depth&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">min_depth_</a></td></tr>\n<tr class=\"separator:a635b56c3ef2453da9e5881c920eb0059\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac65d0e128be514ed1a396e4ff1b38daf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">evo_utils::geometry::Depth&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">max_depth_</a></td></tr>\n<tr class=\"separator:ac65d0e128be514ed1a396e4ff1b38daf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a5d1f3d4b60664b3dbedfd93672f89d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">num_depth_cells_</a></td></tr>\n<tr class=\"separator:a4a5d1f3d4b60664b3dbedfd93672f89d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afddf16f4d9c8139a54eee1941743d751\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afddf16f4d9c8139a54eee1941743d751\"></a>\n<a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depths_vec_</a></td></tr>\n<tr class=\"memdesc:afddf16f4d9c8139a54eee1941743d751\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">precomputed vector of num_depth_cells_ inverse depths <br /></td></tr>\n<tr class=\"separator:afddf16f4d9c8139a54eee1941743d751\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef81a26a5116e6e8b659c55ac4aa51d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aef81a26a5116e6e8b659c55ac4aa51d0\"></a>\nstd::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>raw_depths_vec_</b></td></tr>\n<tr class=\"separator:aef81a26a5116e6e8b659c55ac4aa51d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1033e661af53d8d1f162830f13ef0db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">radius_search_</a></td></tr>\n<tr class=\"separator:af1033e661af53d8d1f162830f13ef0db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace24950e40764734e448abb9abbb65dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">min_num_neighbors_</a></td></tr>\n<tr class=\"separator:ace24950e40764734e448abb9abbb65dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a981fb5f234a53aa96aa24c93da86f423\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">median_filter_size_</a></td></tr>\n<tr class=\"separator:a981fb5f234a53aa96aa24c93da86f423\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40b8f1fcd91c8f9917660cdd22297475\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">adaptive_threshold_kernel_size_</a></td></tr>\n<tr class=\"separator:a40b8f1fcd91c8f9917660cdd22297475\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af60735b8c6cde0dcdeb5e083807479cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">adaptive_threshold_c_</a></td></tr>\n<tr class=\"separator:af60735b8c6cde0dcdeb5e083807479cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c537264ea3455e4924ef8a3a5833d21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9c537264ea3455e4924ef8a3a5833d21\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">auto_trigger_</a></td></tr>\n<tr class=\"memdesc:a9c537264ea3455e4924ef8a3a5833d21\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">whether to start on first pose received <br /></td></tr>\n<tr class=\"separator:a9c537264ea3455e4924ef8a3a5833d21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Mapping node </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a34a786d7ed8c846f3d10e6c4ea44ca1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34a786d7ed8c846f3d10e6c4ea44ca1c\">&#9670;&nbsp;</a></span>DepthFromDefocusNode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">depth_from_defocus::DepthFromDefocusNode::DepthFromDefocusNode </td>\n          <td>(</td>\n          <td class=\"paramtype\">const ros::NodeHandle &amp;&#160;</td>\n          <td class=\"paramname\"><em>nh</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const ros::NodeHandle &amp;&#160;</td>\n          <td class=\"paramname\"><em>pnh</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const image_geometry::PinholeCameraModel &amp;&#160;</td>\n          <td class=\"paramname\"><em>cam</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Constructor of the <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a></p>\n<p>Load parameters and setup the voxel grid, precomputing useful values </p>\n\n</div>\n</div>\n<a id=\"afa040d5d769ec0fe374456e5bab56ed4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa040d5d769ec0fe374456e5bab56ed4\">&#9670;&nbsp;</a></span>~DepthFromDefocusNode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">depth_from_defocus::DepthFromDefocusNode::~DepthFromDefocusNode </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Publishes the final voxel grid, the depth map and the global map </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1623778e6e3a6879c7a96919943ebb32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1623778e6e3a6879c7a96919943ebb32\">&#9670;&nbsp;</a></span>accumulatePointcloud()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::accumulatePointcloud </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>mask</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>confidence</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Matrix3d&#160;</td>\n          <td class=\"paramname\"><em>R_world_ref</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d&#160;</td>\n          <td class=\"paramname\"><em>t_world_ref</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>timestamp</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Builds point cloud from depth map and pose, and publish it</p>\n<p>Each pixel not masked out from mask is backprojected at the distance provided in depth. The point cloud is filtered with a radius filter (each point is not considered an outlier iff it is at a distance smaller than radius_search_ from min_num_neighbors_ other points). Topic: \"pointcloud\" </p><pre class=\"fragment\">ROS params:\n    radius_search) radius filter radius size\n    min_num_neighbors) minimum number of neighbors for radius filter\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>depth map associating each pixel to a depth value </td></tr>\n    <tr><td class=\"paramname\">mask</td><td>pixels to be considered </td></tr>\n    <tr><td class=\"paramname\">R_world_ref</td><td>orientation </td></tr>\n    <tr><td class=\"paramname\">t_world_ref</td><td>position </td></tr>\n    <tr><td class=\"paramname\">timestamp</td><td>timestamp of the message to publish </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a98c7bb325b87b98a5246f5413bdfccda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98c7bb325b87b98a5246f5413bdfccda\">&#9670;&nbsp;</a></span>cameraInfoCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::cameraInfoCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::CameraInfo::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Update camera info on callback</p>\n<p>topic: \"camera_info\"</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Camera info msg </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a8b8c08338af40686a2584e8454f98f53\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b8c08338af40686a2584e8454f98f53\">&#9670;&nbsp;</a></span>clearEventQueue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::clearEventQueue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Removes events to keep an history (already processed) of events at most long DEPTH_DEFOCUS_EVENT_HISTORY_SIZE. </p>\n\n</div>\n</div>\n<a id=\"a8e50df3e30a2cb737f9ebba7abf309f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e50df3e30a2cb737f9ebba7abf309f7\">&#9670;&nbsp;</a></span>copilotCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::copilotCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std_msgs::Bool &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Switch from bootstrap_frame_id_ to frame_id_ </p><pre class=\"fragment\">ROS params:\n     dvs_frame_id) frame id to consider after the bootstrapping\n     dvs_bootstrap_frame_id) frame id to consider during\n         bootstrapping\n     world_frame_id) world frame id to consider\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Message telling whether to switch </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ad015324f82f688def03d52386161e706\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad015324f82f688def03d52386161e706\">&#9670;&nbsp;</a></span>getPoseAt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool depth_from_defocus::DepthFromDefocusNode::getPoseAt </td>\n          <td>(</td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>t</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">evo_utils::geometry::Transformation &amp;&#160;</td>\n          <td class=\"paramname\"><em>T</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Retrieve the pose of the camera frame with respect to the world frame at time t</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">t</td><td>time at which the pose has to be retrieved </td></tr>\n    <tr><td class=\"paramname\">T</td><td>[output] pose at time t</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>whether it is possible to convert from world frame to camera frame </dd></dl>\n\n</div>\n</div>\n<a id=\"a0d17eba64b62fb1b3e9ce82ae067f3e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d17eba64b62fb1b3e9ce82ae067f3e7\">&#9670;&nbsp;</a></span>postCameraLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::postCameraLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after dvs_cam_ has been loaded </p><pre class=\"fragment\">ROS params:\n     fov_virtual_camera_deg) fov virtual camera (voxel grid)\n     virtual_width) voxel grid width\n     virtual_height) voxel grid height</pre> \n</div>\n</div>\n<a id=\"aabf95d4de38430266604af8ada0dc552\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabf95d4de38430266604af8ada0dc552\">&#9670;&nbsp;</a></span>precomputeRectifiedPoints()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::precomputeRectifiedPoints </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Computes and stores the rectification of each pixels of the cam_, to speed up image rectification in consecutive stages </p>\n\n</div>\n</div>\n<a id=\"a66af9d6f400f5ba558891c3e96ccefc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66af9d6f400f5ba558891c3e96ccefc8\">&#9670;&nbsp;</a></span>processEventArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::processEventArray </td>\n          <td>(</td>\n          <td class=\"paramtype\">const dvs_msgs::EventArray::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>event_array</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Processes incoming events</p>\n<p>Store events in the event queue and set first pose to origin, timestamped as the first event arrived</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">event_array</td><td>Events array to process and store </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"acf8dc50f440375fdf193e512a73409a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf8dc50f440375fdf193e512a73409a5\">&#9670;&nbsp;</a></span>processEventQueue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::processEventQueue </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>reset</em> = <code>false</code></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Process event queue and update voxel grid</p>\n<p>When there is a minimum number of events to process (min_batch_size_), process events in event queue and update the voxel grid. Events are eventually skipped if reset is true (skip_batches_reset_, skip_batches_normal_). If not, the number of batches to skip is also adapted so that the events rate is smaller than max_event_rate_.</p>\n<p>The events are grouped in batches, and the position of the camera for that batch is assumed to be the position at the middle of the timespan of the batch. These poses are the centers of the projectEventsToVoxelGrid.</p>\n<p>For each of these batches, the events are projected (homography) to the reference frame and the voxel grid is updated accordingly. </p><pre class=\"fragment\">ROS params:\n    skip_batches) amount of batches of events to skip during\n         optimization\n    skip_batches_for_reset) same as skip_batches when reset = true\n    max_event_rate) max # of events, eventually drops events to\n         ensure this\n    frame_size) number of events to aggregate when computing new map\n    min_batch_size) minimum number of new events required for a map\n         update\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">reset</td><td>Whether the \"reset\" command has been sent</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">projectEventsToVoxelGrid</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"afdfd142fd0150cdf4db973a7e4cf2446\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdfd142fd0150cdf4db973a7e4cf2446\">&#9670;&nbsp;</a></span>projectEventsToVoxelGrid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::projectEventsToVoxelGrid </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::vector&lt; Eigen::Vector4f &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>events</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const std::vector&lt; Eigen::Vector3f &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>centers</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Backproject events from the frame centers and vote the intersecting voxel grids</p>\n<p>The events are evenly divided between the frame centers, and backprojected to intersect the voxel grid The voxel are then voted accordingly to </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">voteForCellBilinear</a>.</dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">events</td><td>collected events </td></tr>\n    <tr><td class=\"paramname\">centers</td><td>frame centers from which the events have been collected </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a38737d443d893b1a30d423e13563ec9d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38737d443d893b1a30d423e13563ec9d\">&#9670;&nbsp;</a></span>publishDepthmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::publishDepthmap </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes depth map</p>\n<p>Normalizes (minmax) depth map and apply color map before publishing it</p>\n<p>Remark: it publishes only if there are subscribers</p>\n<p>Topic: /dvs_mapping/depthmap</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>Depth associated to each pixel </td></tr>\n    <tr><td class=\"paramname\">mask</td><td>Pixels to be considered </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a94b54fd9870f48adb1e52e88975cdc45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94b54fd9870f48adb1e52e88975cdc45\">&#9670;&nbsp;</a></span>publishGlobalMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::publishGlobalMap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes global map, after updating it (pc_global_) adding the local point cloud (pc_) under the \"pointcloud_global\" topic.</p>\n<p>Remark: it publishes (and updates the pc_global_ point cloud) only if there is at least one subscriber to the topic \"pointcloud_global\". </p><pre class=\"fragment\">ROS params:\n    voxel_filter_leaf_size) voxel filter granularity</pre> \n</div>\n</div>\n<a id=\"a63265d395f08ffcc3754dfbd8fddcf9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63265d395f08ffcc3754dfbd8fddcf9a\">&#9670;&nbsp;</a></span>publishVoxelGrid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::publishVoxelGrid </td>\n          <td>(</td>\n          <td class=\"paramtype\">const evo_utils::geometry::Transformation &amp;&#160;</td>\n          <td class=\"paramname\"><em>T_w_ref</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes voxel grid relative to pose</p>\n<p>Topic: \"voxel_grid\"</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">T_w_ref</td><td>camera pose </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9947eae416456401f19a6191ca5f7ea7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9947eae416456401f19a6191ca5f7ea7\">&#9670;&nbsp;</a></span>remoteKeyCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::remoteKeyCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std_msgs::String::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Callback to remote_key commands</p>\n<p>Implements the state machine described in </p><dl class=\"section see\"><dt>See also</dt><dd>MapperState</dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>String message representing the command received </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a0b4316dd5d3f7a0f9f9022fa7cb062e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">&#9670;&nbsp;</a></span>resetMapper()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::resetMapper </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Clear events, transformations, point clouds and voxel grid </p>\n\n</div>\n</div>\n<a id=\"a6c3e65bb3ddb235e484574d851a08c48\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c3e65bb3ddb235e484574d851a08c48\">&#9670;&nbsp;</a></span>resetVoxelGrid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::resetVoxelGrid </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Clear voxel grid and set current_event_ to mark from which event in the history of events the algorithm has to start to build a new map voxel grid </p>\n\n</div>\n</div>\n<a id=\"ac1d09c207960dc16c44ab095b0b0c012\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1d09c207960dc16c44ab095b0b0c012\">&#9670;&nbsp;</a></span>setupVoxelGrid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::setupVoxelGrid </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Load params related to the voxel grid and allocate memory for it </p><pre class=\"fragment\">ROS params:\n    min_depth) voxel grid minimum depth\n    max_depth) voxel grid maximum depth\n    num_depth_cells) number of depth cells\n    adaptive_threshold_kernel_size) size of the adaptive threshold\n        filter\n    size adaptive_threshold_c) constant offset of the adaptive\n        thresholding</pre> \n</div>\n</div>\n<a id=\"a077406511ce2fe2dafcc318bb02bc518\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a077406511ce2fe2dafcc318bb02bc518\">&#9670;&nbsp;</a></span>synthesizeAndPublishDepth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::synthesizeAndPublishDepth </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Calculate depth and publish it</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">synthesizePointCloudFromVoxelGrid</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">accumulatePointcloud</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">publishVoxelGrid</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">publishDepthmap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a9789403c30791c6e1c5a8a2cb2dc7f81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9789403c30791c6e1c5a8a2cb2dc7f81\">&#9670;&nbsp;</a></span>synthesizePointCloudFromVoxelGrid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGrid </td>\n          <td>(</td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>confidence</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Build point cloud from voxel grid maximizing the desired focus measure</p>\n<p>Calls the method defined by type_focus_measure_, </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">synthesizePointCloudFromVoxelGridGradMag</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">synthesizePointCloudFromVoxelGridContrast</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">synthesizePointCloudFromVoxelGridLinf</a>. The confidence map is normalized (min/max), then it is adaptively thresholded and finally it is median filtered. <pre class=\"fragment\">ROS params:\n    type_focus_measure) type of focus measure to use.\n</pre></dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>[output] depth map </td></tr>\n    <tr><td class=\"paramname\">confidence</td><td>[output] confidence of the depth </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a782327cddbfd08861a32365a63f993b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a782327cddbfd08861a32365a63f993b3\">&#9670;&nbsp;</a></span>synthesizePointCloudFromVoxelGridContrast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridContrast </td>\n          <td>(</td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth_cell_indices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>confidence</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Build point cloud from voxel grid maximizing the contrast on the depth plane</p>\n<p>For each pixel, the depth is chosen as the maximum along the optimal ray of the gradient magnitude in the DSI. The confidence is represented by the magnitude of the gradient. The 2d gradient is calculated for each depth plane, and the idea is to maximize this focus measure. </p><pre class=\"fragment\">ROS params:\n    half_patchsize) size of the gaussian filter to estimate contrast\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth_cell_indices</td><td>[output] discrete cell index in the depth axis corresponding to the maxima </td></tr>\n    <tr><td class=\"paramname\">confidence</td><td>[output] contrast value in the voxel where the maxima is found </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a20e387f433c5952219e29ea75aa539c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20e387f433c5952219e29ea75aa539c7\">&#9670;&nbsp;</a></span>synthesizePointCloudFromVoxelGridGradMag()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridGradMag </td>\n          <td>(</td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth_cell_indices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>confidence</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Build point cloud from voxel grid maximizing the gradient magnitude on the depth plane</p>\n<p>For each pixel, the depth is chosen as the maximum along the optimal ray of the gradient magnitude in the DSI. The confidence is represented by the magnitude of the gradient. The 2d gradient is calculated for each depth plane, and the idea is to maximize this focus measure. </p><pre class=\"fragment\">ROS params:\n    half_patchsize) size of the sobel filter to compute algebraic\n         derivatives\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth_cell_indices</td><td>[output] discrete cell index in the depth axis corresponding to the maxima </td></tr>\n    <tr><td class=\"paramname\">confidence</td><td>[output] magnitude gradient in the voxel where the maxima is found </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ae6cc30aaa1c12a87e22cb23762b1d29f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6cc30aaa1c12a87e22cb23762b1d29f\">&#9670;&nbsp;</a></span>synthesizePointCloudFromVoxelGridLinf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridLinf </td>\n          <td>(</td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>depth_cell_indices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>confidence</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Build point cloud from voxel grid using Linf norm on optical ray</p>\n<p>For each pixel, the depth is chosen as the maximum along the optimal ray of the number of votes in the DSI. The confidence is represented by the number of votes.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth_cell_indices</td><td>[output] discrete cell index in the depth axis corresponding to the maxima </td></tr>\n    <tr><td class=\"paramname\">confidence</td><td>[output] number of votes in the voxel where the maxima is found </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a410d73cc0f5560fd523f00611bd6d662\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a410d73cc0f5560fd523f00611bd6d662\">&#9670;&nbsp;</a></span>tfCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::tfCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const tf::tfMessage::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>tf_msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>For each transform published, mark the last event for which the pose is known (newest_tracked_event_) </p><pre class=\"fragment\">ROS params:\n    dvs_frame_id) frame id to consider after the bootstrapping\n    dvs_bootstrap_frame_id) frame id to consider during bootstrapping\n    world_frame_id) world frame id to consider\n    auto_trigger) whether to automatically trigger the first map\n        update, when enough events to create a keyframe are collected\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">tf_msg</td><td>Transform message </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a08b55e09a6c2e7bc1714c06cf9f847c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08b55e09a6c2e7bc1714c06cf9f847c4\">&#9670;&nbsp;</a></span>update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Performs map update</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">resetVoxelGrid</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">processEventQueue</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">synthesizeAndPublishDepth</a>, <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"afdae5a3c5364f7134a6db87b291d4c2b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdae5a3c5364f7134a6db87b291d4c2b\">&#9670;&nbsp;</a></span>voteForCell()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::voteForCell </td>\n          <td>(</td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>x_f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>y_f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Vote *&#160;</td>\n          <td class=\"paramname\"><em>grid</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Increase the vote counter of a specific cell in the vote grid</p>\n<p>The coordinates x_f and y_f are converted to the nearest discrete cell. If the cell exists (not out of bound), the vote counter at that cell is increased. If the cell does not exist, nothing happens.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">x_f</td><td>location of the vote in the continuous horizontal axis </td></tr>\n    <tr><td class=\"paramname\">y_f</td><td>location of the vote in the continuour vertical axis </td></tr>\n    <tr><td class=\"paramname\">grid</td><td>the grid in which to increase the vote </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9be7fc72e0cc3fed64e4e84136c3f8d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9be7fc72e0cc3fed64e4e84136c3f8d7\">&#9670;&nbsp;</a></span>voteForCellBilinear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void depth_from_defocus::DepthFromDefocusNode::voteForCellBilinear </td>\n          <td>(</td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>x_f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const float&#160;</td>\n          <td class=\"paramname\"><em>y_f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Vote *&#160;</td>\n          <td class=\"paramname\"><em>grid</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Increase the vote counter in the vote grid acoordingly to a bilinear interpolation of the continuous coordinates</p>\n<p>The coordinates are used to increase proportionally all the four discrete locations near to the continuous space location, dividing the single vote based on their distance from it. If at least one of these four cells do not exist, the vote is not incremented.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">x_f</td><td>location of the vote in the continuous horizontal axis </td></tr>\n    <tr><td class=\"paramname\">y_f</td><td>location of the vote in the continuour vertical axis </td></tr>\n    <tr><td class=\"paramname\">grid</td><td>the grid in which to increase the votes </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aaece6ded781928540cf7b3b848d0833d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaece6ded781928540cf7b3b848d0833d\">&#9670;&nbsp;</a></span>voxelGridAt() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const Vote&amp; depth_from_defocus::DepthFromDefocusNode::voxelGridAt </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::vector&lt; Vote &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>grid</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>z</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Retrieves vote counter of a specific (x,y,z) location of the grid</p>\n<p>This is a util function used for clarity</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">grid</td><td>Grid containing the vote counters </td></tr>\n    <tr><td class=\"paramname\">x</td><td>x coordinate </td></tr>\n    <tr><td class=\"paramname\">y</td><td>y coordinate </td></tr>\n    <tr><td class=\"paramname\">z</td><td>z coordinate </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a35190fd60fd5e8bb7ff5b8979a4a8a70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35190fd60fd5e8bb7ff5b8979a4a8a70\">&#9670;&nbsp;</a></span>voxelGridAt() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Vote&amp; depth_from_defocus::DepthFromDefocusNode::voxelGridAt </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; Vote &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>grid</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>z</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Retrieve vote counter of a specific (x,y,z) location of the grid</p>\n<p>This is a util function used for clarity</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">grid</td><td>Grid containing the vote counters </td></tr>\n    <tr><td class=\"paramname\">x</td><td>x coordinate </td></tr>\n    <tr><td class=\"paramname\">y</td><td>y coordinate </td></tr>\n    <tr><td class=\"paramname\">z</td><td>z coordinate </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af60735b8c6cde0dcdeb5e083807479cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af60735b8c6cde0dcdeb5e083807479cc\">&#9670;&nbsp;</a></span>adaptive_threshold_c_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int depth_from_defocus::DepthFromDefocusNode::adaptive_threshold_c_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>adaptive threshold constant, sum to the weighted average of the neighbors pixel values ROS param: \"adaptive_threshold_c\" </p>\n\n</div>\n</div>\n<a id=\"a40b8f1fcd91c8f9917660cdd22297475\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40b8f1fcd91c8f9917660cdd22297475\">&#9670;&nbsp;</a></span>adaptive_threshold_kernel_size_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int depth_from_defocus::DepthFromDefocusNode::adaptive_threshold_kernel_size_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>size of the gaussian kernel used to compute the adaptive threshold ROS param: \"adaptive_threshold_kernel_size\" </p>\n\n</div>\n</div>\n<a id=\"a35a3692d84034741bce050cfbf1858cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35a3692d84034741bce050cfbf1858cd\">&#9670;&nbsp;</a></span>camera_info_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber depth_from_defocus::DepthFromDefocusNode::camera_info_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">cameraInfoCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a67c78059b53cd51fb551418970f76572\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67c78059b53cd51fb551418970f76572\">&#9670;&nbsp;</a></span>copilot_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber depth_from_defocus::DepthFromDefocusNode::copilot_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">copilotCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ad9bbd8fd1f19afcb05609eb8390ed203\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9bbd8fd1f19afcb05609eb8390ed203\">&#9670;&nbsp;</a></span>current_event_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t depth_from_defocus::DepthFromDefocusNode::current_event_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Process events next event to process </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">processEventQueue</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a8090033f289e75e5c8848d8d607776fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8090033f289e75e5c8848d8d607776fa\">&#9670;&nbsp;</a></span>dvs_cam_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">image_geometry::PinholeCameraModel depth_from_defocus::DepthFromDefocusNode::dvs_cam_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>dvs sensor model retrieved from configuration file </p>\n<p>Camera variables </p>\n\n</div>\n</div>\n<a id=\"ab80ebeb058562a6834726a1781c569c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab80ebeb058562a6834726a1781c569c5\">&#9670;&nbsp;</a></span>event_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber depth_from_defocus::DepthFromDefocusNode::event_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">processEventArray</a> topic: \"events\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a971d6b1bf08a82afa9f6457a3efd0252\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a971d6b1bf08a82afa9f6457a3efd0252\">&#9670;&nbsp;</a></span>events_to_recreate_kf_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t depth_from_defocus::DepthFromDefocusNode::events_to_recreate_kf_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Maximum number of events considered to center the voxel grid at a specific pose. ROS param: \"events_to_recreate_kf\" </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">resetVoxelGrid</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ace0e5758c89defe7c49b6116203e77e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace0e5758c89defe7c49b6116203e77e2\">&#9670;&nbsp;</a></span>last_kf_update_event_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t depth_from_defocus::DepthFromDefocusNode::last_kf_update_event_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>last event at which the map has been updated, </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">remoteKeyCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"ac65d0e128be514ed1a396e4ff1b38daf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac65d0e128be514ed1a396e4ff1b38daf\">&#9670;&nbsp;</a></span>max_depth_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">evo_utils::geometry::Depth depth_from_defocus::DepthFromDefocusNode::max_depth_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Upper bound in depth range ROS param: \"max_depth\" </p>\n\n</div>\n</div>\n<a id=\"a981fb5f234a53aa96aa24c93da86f423\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a981fb5f234a53aa96aa24c93da86f423\">&#9670;&nbsp;</a></span>median_filter_size_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int depth_from_defocus::DepthFromDefocusNode::median_filter_size_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>size of the median filter </p><dl class=\"section see\"><dt>See also</dt><dd>evo_utils::camera::huangMedianFilter; ROS param: \"median_filter_size\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a635b56c3ef2453da9e5881c920eb0059\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a635b56c3ef2453da9e5881c920eb0059\">&#9670;&nbsp;</a></span>min_depth_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">evo_utils::geometry::Depth depth_from_defocus::DepthFromDefocusNode::min_depth_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Depth space Lower bound in depth range ROS param: \"min_depth\" </p>\n\n</div>\n</div>\n<a id=\"ace24950e40764734e448abb9abbb65dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace24950e40764734e448abb9abbb65dd\">&#9670;&nbsp;</a></span>min_num_neighbors_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int depth_from_defocus::DepthFromDefocusNode::min_num_neighbors_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>radius filter: min number of neighbors within patch to be considered inlier; ROS param: \"min_num_neighbors\" </p>\n\n</div>\n</div>\n<a id=\"ace0ad5d9ed7f95e6478803c2340a1a30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace0ad5d9ed7f95e6478803c2340a1a30\">&#9670;&nbsp;</a></span>newest_tracked_event_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t depth_from_defocus::DepthFromDefocusNode::newest_tracked_event_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>first event for which the position is unknown, </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">tfCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a332088b877233c941a41edeed681a57e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a332088b877233c941a41edeed681a57e\">&#9670;&nbsp;</a></span>nh_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::NodeHandle depth_from_defocus::DepthFromDefocusNode::nh_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>ROS </p>\n\n</div>\n</div>\n<a id=\"a4a5d1f3d4b60664b3dbedfd93672f89d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a5d1f3d4b60664b3dbedfd93672f89d\">&#9670;&nbsp;</a></span>num_depth_cells_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t depth_from_defocus::DepthFromDefocusNode::num_depth_cells_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Number of discrete depth cells ROS param: \"num_depth_cells\" </p>\n\n</div>\n</div>\n<a id=\"a2144912eab70d469e16448ae24f71a7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2144912eab70d469e16448ae24f71a7d\">&#9670;&nbsp;</a></span>pc_global_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">PointCloud::Ptr depth_from_defocus::DepthFromDefocusNode::pc_global_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Global map,. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"afb731a5a3862a81d979ddfba21c0e81a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb731a5a3862a81d979ddfba21c0e81a\">&#9670;&nbsp;</a></span>precomputed_rectified_points_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Eigen::Matrix2Xf depth_from_defocus::DepthFromDefocusNode::precomputed_rectified_points_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">precomputeRectifiedPoints</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a489a220948a3742cb67c3f3ee9c17ab7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a489a220948a3742cb67c3f3ee9c17ab7\">&#9670;&nbsp;</a></span>pub_depth_map_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">image_transport::Publisher depth_from_defocus::DepthFromDefocusNode::pub_depth_map_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd>publishDepthMap topic: /dvs_mapping/depthmap </dd></dl>\n\n</div>\n</div>\n<a id=\"abb6a055c5cd4515fe7eb5818911b7d50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb6a055c5cd4515fe7eb5818911b7d50\">&#9670;&nbsp;</a></span>pub_pc_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Publisher depth_from_defocus::DepthFromDefocusNode::pub_pc_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">accumulatePointcloud</a>; topic: \"pointcloud\" </dd></dl>\n\n</div>\n</div>\n<a id=\"ae83baae63ad0f9e266e3a1e323d01b4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae83baae63ad0f9e266e3a1e323d01b4f\">&#9670;&nbsp;</a></span>pub_pc_global_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Publisher depth_from_defocus::DepthFromDefocusNode::pub_pc_global_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a>; topic: \"pointcloud_global\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a5aff4f76d8c1697d12a9eaf3b1a25f67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5aff4f76d8c1697d12a9eaf3b1a25f67\">&#9670;&nbsp;</a></span>pub_voxel_grid_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Publisher depth_from_defocus::DepthFromDefocusNode::pub_voxel_grid_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">publishVoxelGrid</a> callback; topic: \"voxel_grid\" </dd></dl>\n\n</div>\n</div>\n<a id=\"af1033e661af53d8d1f162830f13ef0db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1033e661af53d8d1f162830f13ef0db\">&#9670;&nbsp;</a></span>radius_search_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float depth_from_defocus::DepthFromDefocusNode::radius_search_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>radius filter: patch radius; ROS param: \"radius_search\" </p>\n\n</div>\n</div>\n<a id=\"a6d0ad9955f82c132884ac72ec2265002\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d0ad9955f82c132884ac72ec2265002\">&#9670;&nbsp;</a></span>ref_voxel_grid_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;Vote&gt; depth_from_defocus::DepthFromDefocusNode::ref_voxel_grid_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Voxel grid vote counters. </p>\n<p>Voxel grid variables </p>\n\n</div>\n</div>\n<a id=\"a39e537b8e2385d06156df91dc1f2e190\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39e537b8e2385d06156df91dc1f2e190\">&#9670;&nbsp;</a></span>remote_key_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber depth_from_defocus::DepthFromDefocusNode::remote_key_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">remoteKeyCallback</a> topic \"remote_key\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a0dd83f7db94b2615d40a03892dcdcbe0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0dd83f7db94b2615d40a03892dcdcbe0\">&#9670;&nbsp;</a></span>state_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">MapperState depth_from_defocus::DepthFromDefocusNode::state_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>state of the mapper, </p>\n<dl class=\"section see\"><dt>See also</dt><dd>MapperState </dd></dl>\n\n</div>\n</div>\n<a id=\"aefbd42bbebb0de0bbd7282ce67afc0c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefbd42bbebb0de0bbd7282ce67afc0c6\">&#9670;&nbsp;</a></span>tf_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber depth_from_defocus::DepthFromDefocusNode::tf_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">tfCallback</a> topic: \"tf\" </dd></dl>\n\n</div>\n</div>\n<a id=\"a9fc0bac204374e6d8f001bccc91f42f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fc0bac204374e6d8f001bccc91f42f9\">&#9670;&nbsp;</a></span>type_focus_measure_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int depth_from_defocus::DepthFromDefocusNode::type_focus_measure_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">synthesizePointCloudFromVoxelGrid</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"acff32750da61643c9d76f3de42afcc56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acff32750da61643c9d76f3de42afcc56\">&#9670;&nbsp;</a></span>voxel_filter_leaf_size_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float depth_from_defocus::DepthFromDefocusNode::voxel_filter_leaf_size_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Size of the cubic voxel; ROS param: \"voxel_filter_leaf_size\" </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_mapping/include/dvs_depth_from_defocus/<a class=\"el\" href=\"depth__defocus__node_8hpp_source.html\">depth_defocus_node.hpp</a></li>\n<li>dvs_mapping/src/depth_defocus_node.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthFromDefocusNode__coll__graph.md5",
    "content": "1769bc01440e6cfae85b025062c074cd"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthVector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a>(size_t i)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_to_cell_idx_multiplier_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a>(float depth)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a>(float depth)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>DepthVector</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a>(float min_depth, float max_depth, size_t num_depth_cells)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>derived</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>max_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>min_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>num_depth_cells_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>vec_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthVector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classdepth__from__defocus_1_1DepthVector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1DepthVector__coll__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1DepthVector_3_01DerivedDepthVector_01_4_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4010ecaa51910a35b2a42df5976bccb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4010ecaa51910a35b2a42df5976bccb4\"></a>\nDerivedDepthVector &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>derived</b> ()</td></tr>\n<tr class=\"separator:a4010ecaa51910a35b2a42df5976bccb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba9d68160a167d073a7ee98721015dd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a> (float min_depth, float max_depth, size_t num_depth_cells)</td></tr>\n<tr class=\"separator:aba9d68160a167d073a7ee98721015dd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff41ef5fbcb0af35781db96d68359242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a> () const</td></tr>\n<tr class=\"separator:aff41ef5fbcb0af35781db96d68359242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2870a5fa611c5e8bd81e2355714167a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a> (size_t i)</td></tr>\n<tr class=\"separator:aa2870a5fa611c5e8bd81e2355714167a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a486e355df4bb77541f70a8b454212fb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a> (float depth)</td></tr>\n<tr class=\"separator:a486e355df4bb77541f70a8b454212fb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82088f77d80e09f2292c613cc33b6b8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a> (float depth)</td></tr>\n<tr class=\"separator:a82088f77d80e09f2292c613cc33b6b8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731508f6ba2d90aa2432da004c10fc1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a> ()</td></tr>\n<tr class=\"separator:a731508f6ba2d90aa2432da004c10fc1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5d302cfa4723a9b289999d8d0edeee66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5d302cfa4723a9b289999d8d0edeee66\"></a>\nstd::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>vec_</b></td></tr>\n<tr class=\"separator:a5d302cfa4723a9b289999d8d0edeee66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd9aadbcfaadaa3793aeedaa33e9418\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aacd9aadbcfaadaa3793aeedaa33e9418\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_depth_cells_</b></td></tr>\n<tr class=\"separator:aacd9aadbcfaadaa3793aeedaa33e9418\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a463fb0c7d657532bf4351773aaa08fae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a463fb0c7d657532bf4351773aaa08fae\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_depth_</b></td></tr>\n<tr class=\"separator:a463fb0c7d657532bf4351773aaa08fae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79d4976d04536eb79476cb1718a630fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79d4976d04536eb79476cb1718a630fa\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_depth_</b></td></tr>\n<tr class=\"separator:a79d4976d04536eb79476cb1718a630fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10840d8375023a31e49c2adb4c461836\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10840d8375023a31e49c2adb4c461836\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_to_cell_idx_multiplier_</b></td></tr>\n<tr class=\"separator:a10840d8375023a31e49c2adb4c461836\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><h3>template&lt;class DerivedDepthVector&gt;<br />\nclass depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</h3>\n\n<p>Stores a set of data associations index &lt;-&gt; depth Used to abstract how the depth is sampled </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aba9d68160a167d073a7ee98721015dd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba9d68160a167d073a7ee98721015dd7\">&#9670;&nbsp;</a></span>DepthVector()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::<a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>min_depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>max_depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>num_depth_cells</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Create depth vector</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">min_depth</td><td>Lower bound on depth range </td></tr>\n    <tr><td class=\"paramname\">max_depth</td><td>Upper bound on depth range </td></tr>\n    <tr><td class=\"paramname\">num_depth_cells</td><td>Number of descrete cells in the depth axis</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section pre\"><dt>Precondition</dt><dd>min_depth &gt; 0 </dd>\n<dd>\nmax_depth &gt; 0 </dd>\n<dd>\nmax_depth &gt; min_depth </dd>\n<dd>\nnum_depth_cells &gt;= 1 </dd></dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa2870a5fa611c5e8bd81e2355714167a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2870a5fa611c5e8bd81e2355714167a\">&#9670;&nbsp;</a></span>cellIndexToDepth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::cellIndexToDepth </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>i</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>DSI util function: from cell index to depth</p>\n<p>The depth axis is evenly divided in DepthVector::Size cells, and ranges within DepthVector::min_depth_ and DepthVector::max_depth_. The conversion is a linear interpolation.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">i</td><td>Cell index in the discrete depth axis </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a82088f77d80e09f2292c613cc33b6b8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82088f77d80e09f2292c613cc33b6b8b\">&#9670;&nbsp;</a></span>depthToCell()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::depthToCell </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>depth</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>DSI util function: from depth to cell value</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>depth depth to convert</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a486e355df4bb77541f70a8b454212fb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a486e355df4bb77541f70a8b454212fb0\">&#9670;&nbsp;</a></span>depthToCellIndex()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::depthToCellIndex </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>depth</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>DSI util function: from depth to cell index</p>\n<p>The depth axis is evenly divided in DepthVector::Size cells, and ranges within DepthVector::min_depth_ and DepthVector::max_depth_. The conversion is rounding to the closest cell index.</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">depth</td><td>Depth to convert </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a731508f6ba2d90aa2432da004c10fc1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a731508f6ba2d90aa2432da004c10fc1a\">&#9670;&nbsp;</a></span>getDepthVector()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;float&gt; <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::getDepthVector </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Get the <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> container</p>\n<dl class=\"section return\"><dt>Returns</dt><dd>vector s.t. v[i] is the depth value for the i-th cell </dd></dl>\n\n</div>\n</div>\n<a id=\"aff41ef5fbcb0af35781db96d68359242\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff41ef5fbcb0af35781db96d68359242\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;class DerivedDepthVector&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a>&lt; DerivedDepthVector &gt;::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Number of discrete cells in the depth axis</p>\n<dl class=\"section return\"><dt>Returns</dt><dd>number of descrete cells in the depth axis </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_mapping/include/dvs_depth_from_defocus/<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DepthVector__coll__graph.md5",
    "content": "cbbcfd52eb920344ad40e157ab72e96e"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DvsMappingNodelet-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">DvsMappingNodelet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DvsMappingNodelet Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>node_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>onInit</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DvsMappingNodelet.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: depth_from_defocus::DvsMappingNodelet Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">DvsMappingNodelet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdepth__from__defocus_1_1DvsMappingNodelet-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::DvsMappingNodelet Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for depth_from_defocus::DvsMappingNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1DvsMappingNodelet__inherit__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1DvsMappingNodelet_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for depth_from_defocus::DvsMappingNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1DvsMappingNodelet__coll__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1DvsMappingNodelet_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"depth__from__defocus_1_1DvsMappingNodelet_coll__map\" id=\"depth__from__defocus_1_1DvsMappingNodelet_coll__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\" title=\"depth_from_defocus\\l::DepthFromDefocusNode\" alt=\"\" coords=\"116,435,291,476\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\" title=\"evo_utils::camera::\\lPinholeCamera\" alt=\"\" coords=\"33,331,166,372\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\" title=\"depth_from_defocus\\l::InverseDepthVector\" alt=\"\" coords=\"259,331,406,372\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; InverseDepth\\lVector \\&gt;\" alt=\"\" coords=\"248,95,441,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa6171c2d5c41116d2d2fa132839c277e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa6171c2d5c41116d2d2fa132839c277e\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>onInit</b> ()</td></tr>\n<tr class=\"separator:aa6171c2d5c41116d2d2fa132839c277e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ad2ef2476ae984b4f436962afd441a3e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad2ef2476ae984b4f436962afd441a3e5\"></a>\n<a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>node_</b></td></tr>\n<tr class=\"separator:ad2ef2476ae984b4f436962afd441a3e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_mapping/include/dvs_depth_from_defocus/<a class=\"el\" href=\"dvs__mapping__nodelet_8h_source.html\">dvs_mapping_nodelet.h</a></li>\n<li>dvs_mapping/src/dvs_mapping_nodelet.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DvsMappingNodelet__coll__graph.md5",
    "content": "d89e8a310f2577ec167c43daed5467b1"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1DvsMappingNodelet__inherit__graph.md5",
    "content": "f2f25345c4265b94a9beed92712107ea"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1InverseDepthVector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::InverseDepthVector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cellIndexToDepth</b>(size_t i) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_to_cell_idx_multiplier_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depthToCell</b>(float depth) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depthToCellIndex</b>(float depth) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>DepthVector</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a>(float min_depth, float max_depth, size_t num_depth_cells)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>derived</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>init</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>inv_max_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>inv_min_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InverseDepthVector</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>InverseDepthVector</b>(float min_depth, float max_depth, size_t num_depth_cells) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>max_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>min_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>num_depth_cells_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>vec_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1InverseDepthVector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: depth_from_defocus::InverseDepthVector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdepth__from__defocus_1_1InverseDepthVector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::InverseDepthVector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for depth_from_defocus::InverseDepthVector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1InverseDepthVector__inherit__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1InverseDepthVector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"depth__from__defocus_1_1InverseDepthVector_inherit__map\" id=\"depth__from__defocus_1_1InverseDepthVector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; InverseDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,5,199,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for depth_from_defocus::InverseDepthVector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1InverseDepthVector__coll__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1InverseDepthVector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"depth__from__defocus_1_1InverseDepthVector_coll__map\" id=\"depth__from__defocus_1_1InverseDepthVector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; InverseDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,95,199,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a60356b49718ed5dec10eaa8aadf859b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60356b49718ed5dec10eaa8aadf859b5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InverseDepthVector</b> (float min_depth, float max_depth, size_t num_depth_cells)</td></tr>\n<tr class=\"separator:a60356b49718ed5dec10eaa8aadf859b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab982c57e001d392c3e17769818bde0ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab982c57e001d392c3e17769818bde0ab\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init</b> ()</td></tr>\n<tr class=\"separator:ab982c57e001d392c3e17769818bde0ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64c60fe0aa3b6a4a64d30faff4104a89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64c60fe0aa3b6a4a64d30faff4104a89\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cellIndexToDepth</b> (size_t i)</td></tr>\n<tr class=\"separator:a64c60fe0aa3b6a4a64d30faff4104a89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade4f3fe620d5a6fb13138fa34fec1ad1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade4f3fe620d5a6fb13138fa34fec1ad1\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depthToCellIndex</b> (float depth)</td></tr>\n<tr class=\"separator:ade4f3fe620d5a6fb13138fa34fec1ad1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a110df92cc1244b545fe6139e545305ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a110df92cc1244b545fe6139e545305ba\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depthToCell</b> (float depth)</td></tr>\n<tr class=\"separator:a110df92cc1244b545fe6139e545305ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classdepth__from__defocus_1_1DepthVector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classdepth__from__defocus_1_1DepthVector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td></tr>\n<tr class=\"memitem:a4010ecaa51910a35b2a42df5976bccb4 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4010ecaa51910a35b2a42df5976bccb4\"></a>\n<a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>derived</b> ()</td></tr>\n<tr class=\"separator:a4010ecaa51910a35b2a42df5976bccb4 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba9d68160a167d073a7ee98721015dd7 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a> (float min_depth, float max_depth, size_t num_depth_cells)</td></tr>\n<tr class=\"separator:aba9d68160a167d073a7ee98721015dd7 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff41ef5fbcb0af35781db96d68359242 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a> () const</td></tr>\n<tr class=\"separator:aff41ef5fbcb0af35781db96d68359242 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2870a5fa611c5e8bd81e2355714167a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a> (size_t i)</td></tr>\n<tr class=\"separator:aa2870a5fa611c5e8bd81e2355714167a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a486e355df4bb77541f70a8b454212fb0 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a> (float depth)</td></tr>\n<tr class=\"separator:a486e355df4bb77541f70a8b454212fb0 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82088f77d80e09f2292c613cc33b6b8b inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a> (float depth)</td></tr>\n<tr class=\"separator:a82088f77d80e09f2292c613cc33b6b8b inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731508f6ba2d90aa2432da004c10fc1a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a> ()</td></tr>\n<tr class=\"separator:a731508f6ba2d90aa2432da004c10fc1a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a5c116346bf1a96df64975e464575a04f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5c116346bf1a96df64975e464575a04f\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>inv_min_depth_</b></td></tr>\n<tr class=\"separator:a5c116346bf1a96df64975e464575a04f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3358912cba1c310a6dea82a0531b4744\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3358912cba1c310a6dea82a0531b4744\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>inv_max_depth_</b></td></tr>\n<tr class=\"separator:a3358912cba1c310a6dea82a0531b4744\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classdepth__from__defocus_1_1DepthVector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td></tr>\n<tr class=\"memitem:a5d302cfa4723a9b289999d8d0edeee66 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5d302cfa4723a9b289999d8d0edeee66\"></a>\nstd::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>vec_</b></td></tr>\n<tr class=\"separator:a5d302cfa4723a9b289999d8d0edeee66 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd9aadbcfaadaa3793aeedaa33e9418 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aacd9aadbcfaadaa3793aeedaa33e9418\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_depth_cells_</b></td></tr>\n<tr class=\"separator:aacd9aadbcfaadaa3793aeedaa33e9418 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a463fb0c7d657532bf4351773aaa08fae inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a463fb0c7d657532bf4351773aaa08fae\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_depth_</b></td></tr>\n<tr class=\"separator:a463fb0c7d657532bf4351773aaa08fae inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79d4976d04536eb79476cb1718a630fa inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79d4976d04536eb79476cb1718a630fa\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_depth_</b></td></tr>\n<tr class=\"separator:a79d4976d04536eb79476cb1718a630fa inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10840d8375023a31e49c2adb4c461836 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10840d8375023a31e49c2adb4c461836\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_to_cell_idx_multiplier_</b></td></tr>\n<tr class=\"separator:a10840d8375023a31e49c2adb4c461836 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> dealing with inverse depth (1/d) axis </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_mapping/include/dvs_depth_from_defocus/<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1InverseDepthVector__coll__graph.md5",
    "content": "4a051a269e6f5a9e97e5ce290e63553e"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1InverseDepthVector__inherit__graph.md5",
    "content": "164535e61a6986f34b9256ad27308c58"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1LinearDepthVector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::LinearDepthVector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cellIndexToDepth</b>(size_t i) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_to_cell_idx_multiplier_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depthToCell</b>(float depth) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depthToCellIndex</b>(float depth) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>DepthVector</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a>(float min_depth, float max_depth, size_t num_depth_cells)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>derived</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>init</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>LinearDepthVector</b>() (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>LinearDepthVector</b>(float min_depth, float max_depth, size_t num_depth_cells) (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>max_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>min_depth_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>num_depth_cells_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>vec_</b> (defined in <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1LinearDepthVector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: depth_from_defocus::LinearDepthVector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>depth_from_defocus</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classdepth__from__defocus_1_1LinearDepthVector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">depth_from_defocus::LinearDepthVector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for depth_from_defocus::LinearDepthVector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1LinearDepthVector__inherit__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1LinearDepthVector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"depth__from__defocus_1_1LinearDepthVector_inherit__map\" id=\"depth__from__defocus_1_1LinearDepthVector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; LinearDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,5,191,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for depth_from_defocus::LinearDepthVector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdepth__from__defocus_1_1LinearDepthVector__coll__graph.png\" border=\"0\" usemap=\"#depth__from__defocus_1_1LinearDepthVector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"depth__from__defocus_1_1LinearDepthVector_coll__map\" id=\"depth__from__defocus_1_1LinearDepthVector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; LinearDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,95,191,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af99cad6647a77b5f6295737cfca20d58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af99cad6647a77b5f6295737cfca20d58\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>LinearDepthVector</b> (float min_depth, float max_depth, size_t num_depth_cells)</td></tr>\n<tr class=\"separator:af99cad6647a77b5f6295737cfca20d58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8adbed6d63c1d18f0aa714e65a69b53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8adbed6d63c1d18f0aa714e65a69b53\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init</b> ()</td></tr>\n<tr class=\"separator:aa8adbed6d63c1d18f0aa714e65a69b53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7a3c2b7f887d9bdc8a7a65e74a818b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae7a3c2b7f887d9bdc8a7a65e74a818b2\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cellIndexToDepth</b> (size_t i)</td></tr>\n<tr class=\"separator:ae7a3c2b7f887d9bdc8a7a65e74a818b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7736ecaa8d953cdc6716abc216be5c36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7736ecaa8d953cdc6716abc216be5c36\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depthToCellIndex</b> (float depth)</td></tr>\n<tr class=\"separator:a7736ecaa8d953cdc6716abc216be5c36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a472bd15f5eeb3a603997a7b538a7ce3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a472bd15f5eeb3a603997a7b538a7ce3e\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depthToCell</b> (float depth)</td></tr>\n<tr class=\"separator:a472bd15f5eeb3a603997a7b538a7ce3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classdepth__from__defocus_1_1DepthVector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classdepth__from__defocus_1_1DepthVector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td></tr>\n<tr class=\"memitem:a4010ecaa51910a35b2a42df5976bccb4 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4010ecaa51910a35b2a42df5976bccb4\"></a>\n<a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>derived</b> ()</td></tr>\n<tr class=\"separator:a4010ecaa51910a35b2a42df5976bccb4 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba9d68160a167d073a7ee98721015dd7 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a> (float min_depth, float max_depth, size_t num_depth_cells)</td></tr>\n<tr class=\"separator:aba9d68160a167d073a7ee98721015dd7 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff41ef5fbcb0af35781db96d68359242 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a> () const</td></tr>\n<tr class=\"separator:aff41ef5fbcb0af35781db96d68359242 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2870a5fa611c5e8bd81e2355714167a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a> (size_t i)</td></tr>\n<tr class=\"separator:aa2870a5fa611c5e8bd81e2355714167a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a486e355df4bb77541f70a8b454212fb0 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a> (float depth)</td></tr>\n<tr class=\"separator:a486e355df4bb77541f70a8b454212fb0 inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82088f77d80e09f2292c613cc33b6b8b inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a> (float depth)</td></tr>\n<tr class=\"separator:a82088f77d80e09f2292c613cc33b6b8b inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731508f6ba2d90aa2432da004c10fc1a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a> ()</td></tr>\n<tr class=\"separator:a731508f6ba2d90aa2432da004c10fc1a inherit pub_methods_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classdepth__from__defocus_1_1DepthVector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td></tr>\n<tr class=\"memitem:a5d302cfa4723a9b289999d8d0edeee66 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5d302cfa4723a9b289999d8d0edeee66\"></a>\nstd::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>vec_</b></td></tr>\n<tr class=\"separator:a5d302cfa4723a9b289999d8d0edeee66 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd9aadbcfaadaa3793aeedaa33e9418 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aacd9aadbcfaadaa3793aeedaa33e9418\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_depth_cells_</b></td></tr>\n<tr class=\"separator:aacd9aadbcfaadaa3793aeedaa33e9418 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a463fb0c7d657532bf4351773aaa08fae inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a463fb0c7d657532bf4351773aaa08fae\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_depth_</b></td></tr>\n<tr class=\"separator:a463fb0c7d657532bf4351773aaa08fae inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79d4976d04536eb79476cb1718a630fa inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79d4976d04536eb79476cb1718a630fa\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_depth_</b></td></tr>\n<tr class=\"separator:a79d4976d04536eb79476cb1718a630fa inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10840d8375023a31e49c2adb4c461836 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10840d8375023a31e49c2adb4c461836\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_to_cell_idx_multiplier_</b></td></tr>\n<tr class=\"separator:a10840d8375023a31e49c2adb4c461836 inherit pro_attribs_classdepth__from__defocus_1_1DepthVector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> dealing with linear depth axis </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_mapping/include/dvs_depth_from_defocus/<a class=\"el\" href=\"depth__vector_8hpp_source.html\">depth_vector.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1LinearDepthVector__coll__graph.md5",
    "content": "62ce3122db3b007a2c0ee9b05cb7d2b9"
  },
  {
    "path": "docs/classdepth__from__defocus_1_1LinearDepthVector__inherit__graph.md5",
    "content": "89b50bd938698e3fc7f79c95ffc21c86"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1Bootstrapper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::Bootstrapper Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Bootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cam_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">camera_info_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">event_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">eventCallback</a>(const dvs_msgs::EventArray::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">postBootstrapCalled</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">postCameraLoaded</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">remote_sub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a>(const std_msgs::String::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Bootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1Bootstrapper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping::Bootstrapper Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdvs__bootstrapping_1_1Bootstrapper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::Bootstrapper Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for dvs_bootstrapping::Bootstrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdvs__bootstrapping_1_1Bootstrapper__inherit__graph.png\" border=\"0\" usemap=\"#dvs__bootstrapping_1_1Bootstrapper_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"dvs__bootstrapping_1_1Bootstrapper_inherit__map\" id=\"dvs__bootstrapping_1_1Bootstrapper_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" title=\"dvs_bootstrapping::\\lEventsFramesBootstrapper\" alt=\"\" coords=\"5,95,187,136\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\" title=\"dvs_bootstrapping::\\lFrontoPlanarBootstrapper\" alt=\"\" coords=\"11,184,181,225\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a79ef983366783a8d030bdddf47aa7053\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79ef983366783a8d030bdddf47aa7053\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Bootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private)</td></tr>\n<tr class=\"separator:a79ef983366783a8d030bdddf47aa7053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c336fde4d52b1b75b1b7d43ebd9e103\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a> (const std_msgs::String::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a5c336fde4d52b1b75b1b7d43ebd9e103\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58380879400517719b855d1bb4dbe99a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a58380879400517719b855d1bb4dbe99a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ee5d565b59f276e03aaa79e89445a70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a> ()</td></tr>\n<tr class=\"separator:a5ee5d565b59f276e03aaa79e89445a70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a1f0451b7574f6c8dc9fe8276728f481b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">postCameraLoaded</a> ()</td></tr>\n<tr class=\"separator:a1f0451b7574f6c8dc9fe8276728f481b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67eded4cb8f32792941afb66a8cc1582\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">postBootstrapCalled</a> ()</td></tr>\n<tr class=\"separator:a67eded4cb8f32792941afb66a8cc1582\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7b6d91b69fc99bb3feb65e8c47f23edc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b6d91b69fc99bb3feb65e8c47f23edc\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a7b6d91b69fc99bb3feb65e8c47f23edc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cb90f526f6964f39625a5eacc15b01b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2cb90f526f6964f39625a5eacc15b01b\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a2cb90f526f6964f39625a5eacc15b01b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a537a4590a2cf939962448b43f9ee4d33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a537a4590a2cf939962448b43f9ee4d33\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_</b></td></tr>\n<tr class=\"separator:a537a4590a2cf939962448b43f9ee4d33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a656b62b448a0104a78299d1b09852803\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a656b62b448a0104a78299d1b09852803\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a> = true</td></tr>\n<tr class=\"memdesc:a656b62b448a0104a78299d1b09852803\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whether it is bootstrapping the pipeline. <br /></td></tr>\n<tr class=\"separator:a656b62b448a0104a78299d1b09852803\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ee3a994f2d517ef2211aaafeb6bba24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td></tr>\n<tr class=\"separator:a9ee3a994f2d517ef2211aaafeb6bba24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43b38251f208c52f2cc4d1fc00f4f219\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43b38251f208c52f2cc4d1fc00f4f219\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td></tr>\n<tr class=\"memdesc:a43b38251f208c52f2cc4d1fc00f4f219\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">to grant exclusive access to eventQueue_ <br /></td></tr>\n<tr class=\"separator:a43b38251f208c52f2cc4d1fc00f4f219\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a617aa089e6e345edacaee8b9b8266490\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td></tr>\n<tr class=\"separator:a617aa089e6e345edacaee8b9b8266490\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4a986f20504628105d325b21e34a7b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4a986f20504628105d325b21e34a7b3\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:ab4a986f20504628105d325b21e34a7b3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root of the tf system. <br /></td></tr>\n<tr class=\"separator:ab4a986f20504628105d325b21e34a7b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0d0db5b5ce5de0f444dfd3279da55d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0d0db5b5ce5de0f444dfd3279da55d9\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td></tr>\n<tr class=\"memdesc:ad0d0db5b5ce5de0f444dfd3279da55d9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">child frame id for bootstrap <br /></td></tr>\n<tr class=\"separator:ad0d0db5b5ce5de0f444dfd3279da55d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a1914b9e59081004b2ad114fb7bb94b23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">eventCallback</a> (const dvs_msgs::EventArray::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a1914b9e59081004b2ad114fb7bb94b23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a40a55b3f3cb917d0446aead2985c7d13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">event_sub_</a></td></tr>\n<tr class=\"separator:a40a55b3f3cb917d0446aead2985c7d13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43e4d4fde4163801103a9cce9dd6c3b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">remote_sub_</a></td></tr>\n<tr class=\"separator:a43e4d4fde4163801103a9cce9dd6c3b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ef8c557470ea848c4a5ce0b495712b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">camera_info_sub_</a></td></tr>\n<tr class=\"separator:a1ef8c557470ea848c4a5ce0b495712b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a58380879400517719b855d1bb4dbe99a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58380879400517719b855d1bb4dbe99a\">&#9670;&nbsp;</a></span>cameraInfoCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::Bootstrapper::cameraInfoCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const sensor_msgs::CameraInfo::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Update camera info on callback</p>\n<p>topic: \"camera_info\"</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Camera info msg </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a1914b9e59081004b2ad114fb7bb94b23\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1914b9e59081004b2ad114fb7bb94b23\">&#9670;&nbsp;</a></span>eventCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::Bootstrapper::eventCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const dvs_msgs::EventArray::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Accumulate incoming events for later processing</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Incoming event array </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a5ee5d565b59f276e03aaa79e89445a70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ee5d565b59f276e03aaa79e89445a70\">&#9670;&nbsp;</a></span>pauseBootstrapper()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::Bootstrapper::pauseBootstrapper </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Set idle_ to true and wait for \"bootstrap\" command</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a67eded4cb8f32792941afb66a8cc1582\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67eded4cb8f32792941afb66a8cc1582\">&#9670;&nbsp;</a></span>postBootstrapCalled()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void dvs_bootstrapping::Bootstrapper::postBootstrapCalled </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after the bootstrap command has been received. </p>\n\n<p>Reimplemented in <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>.</p>\n\n</div>\n</div>\n<a id=\"a1f0451b7574f6c8dc9fe8276728f481b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f0451b7574f6c8dc9fe8276728f481b\">&#9670;&nbsp;</a></span>postCameraLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void dvs_bootstrapping::Bootstrapper::postCameraLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after cam_ has been loaded </p>\n\n<p>Reimplemented in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">dvs_bootstrapping::EventsFramesBootstrapper</a>.</p>\n\n</div>\n</div>\n<a id=\"a5c336fde4d52b1b75b1b7d43ebd9e103\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c336fde4d52b1b75b1b7d43ebd9e103\">&#9670;&nbsp;</a></span>startCommandCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::Bootstrapper::startCommandCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std_msgs::String::ConstPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Start bootstrap on command</p>\n<p>topic: \"remote_key\", message: \"bootstrap\" When receives this message, reset data and set idle_ to false;</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">msg</td><td>Remote key message </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a1ef8c557470ea848c4a5ce0b495712b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ef8c557470ea848c4a5ce0b495712b3\">&#9670;&nbsp;</a></span>camera_info_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber dvs_bootstrapping::Bootstrapper::camera_info_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd>cameraInfoCalback </dd></dl>\n\n</div>\n</div>\n<a id=\"a40a55b3f3cb917d0446aead2985c7d13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40a55b3f3cb917d0446aead2985c7d13\">&#9670;&nbsp;</a></span>event_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber dvs_bootstrapping::Bootstrapper::event_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">eventCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a9ee3a994f2d517ef2211aaafeb6bba24\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ee3a994f2d517ef2211aaafeb6bba24\">&#9670;&nbsp;</a></span>eventQueue_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;dvs_msgs::Event&gt; dvs_bootstrapping::Bootstrapper::eventQueue_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">eventCallback</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a617aa089e6e345edacaee8b9b8266490\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a617aa089e6e345edacaee8b9b8266490\">&#9670;&nbsp;</a></span>remote_key_pub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Publisher dvs_bootstrapping::Bootstrapper::remote_key_pub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>to trigger the rest of the pipeline when needed </p>\n\n</div>\n</div>\n<a id=\"a43e4d4fde4163801103a9cce9dd6c3b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43e4d4fde4163801103a9cce9dd6c3b4\">&#9670;&nbsp;</a></span>remote_sub_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ros::Subscriber dvs_bootstrapping::Bootstrapper::remote_sub_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a> </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_bootstrapping/include/dvs_bootstrapping/<a class=\"el\" href=\"Bootstrapper_8hpp_source.html\">Bootstrapper.hpp</a></li>\n<li>dvs_bootstrapping/src/Bootstrapper.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1Bootstrapper__inherit__graph.md5",
    "content": "11c59b67185832c9dbabd58ecd7d3d0a"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1EventsFramesBootstrapper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::EventsFramesBootstrapper Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Bootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cam_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">clearEventQueue</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">enable_visuals_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EventsFramesBootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">frame_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>img_mutex_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">integrateEvents</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">integratingThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>it_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>keep_frames_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">local_frame_size_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">newest_processed_event_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">postBootstrapCalled</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">postCameraLoaded</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_event_img_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_optical_flow_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">publishEventImage</a>(const cv::Mat &amp;img, const ros::Time &amp;ts)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">publishOpticalFlowVectors</a>(const cv::Mat &amp;flow_field)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>rate_hz_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>rectified_points_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sensor_size_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a>(const std_msgs::String::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tf_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tf_pub_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">ts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">undistort_mapx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">undistort_mapy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>unwarp_params_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~Bootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~EventsFramesBootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1EventsFramesBootstrapper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping::EventsFramesBootstrapper Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::EventsFramesBootstrapper Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"EventsFramesBootstrapper_8hpp_source.html\">EventsFramesBootstrapper.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for dvs_bootstrapping::EventsFramesBootstrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper__inherit__graph.png\" border=\"0\" usemap=\"#dvs__bootstrapping_1_1EventsFramesBootstrapper_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"dvs__bootstrapping_1_1EventsFramesBootstrapper_inherit__map\" id=\"dvs__bootstrapping_1_1EventsFramesBootstrapper_inherit__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\" title=\"dvs_bootstrapping::\\lFrontoPlanarBootstrapper\" alt=\"\" coords=\"11,184,181,225\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" title=\"dvs_bootstrapping::\\lBootstrapper\" alt=\"\" coords=\"28,5,164,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for dvs_bootstrapping::EventsFramesBootstrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper__coll__graph.png\" border=\"0\" usemap=\"#dvs__bootstrapping_1_1EventsFramesBootstrapper_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"dvs__bootstrapping_1_1EventsFramesBootstrapper_coll__map\" id=\"dvs__bootstrapping_1_1EventsFramesBootstrapper_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" title=\"dvs_bootstrapping::\\lBootstrapper\" alt=\"\" coords=\"5,5,141,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classmotion__correction_1_1WarpUpdateParams.html\" title=\"motion_correction::\\lWarpUpdateParams\" alt=\"\" coords=\"166,5,306,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a36a754c551ac664572df77e8454c99e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36a754c551ac664572df77e8454c99e9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EventsFramesBootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</td></tr>\n<tr class=\"separator:a36a754c551ac664572df77e8454c99e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classdvs__bootstrapping_1_1Bootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td></tr>\n<tr class=\"memitem:a79ef983366783a8d030bdddf47aa7053 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79ef983366783a8d030bdddf47aa7053\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Bootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private)</td></tr>\n<tr class=\"separator:a79ef983366783a8d030bdddf47aa7053 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c336fde4d52b1b75b1b7d43ebd9e103 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a> (const std_msgs::String::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a5c336fde4d52b1b75b1b7d43ebd9e103 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58380879400517719b855d1bb4dbe99a inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a58380879400517719b855d1bb4dbe99a inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ee5d565b59f276e03aaa79e89445a70 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a> ()</td></tr>\n<tr class=\"separator:a5ee5d565b59f276e03aaa79e89445a70 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a5cb2328ccca4540592a7e462d4503991\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">postCameraLoaded</a> () override</td></tr>\n<tr class=\"separator:a5cb2328ccca4540592a7e462d4503991\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classdvs__bootstrapping_1_1Bootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td></tr>\n<tr class=\"memitem:a67eded4cb8f32792941afb66a8cc1582 inherit pro_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">postBootstrapCalled</a> ()</td></tr>\n<tr class=\"separator:a67eded4cb8f32792941afb66a8cc1582 inherit pro_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a15cf181171b6e147d51fb3d34b1459c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15cf181171b6e147d51fb3d34b1459c3\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">width_</a></td></tr>\n<tr class=\"memdesc:a15cf181171b6e147d51fb3d34b1459c3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: width <br /></td></tr>\n<tr class=\"separator:a15cf181171b6e147d51fb3d34b1459c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff0a99868ff4ca68ee8cb63d68025236\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff0a99868ff4ca68ee8cb63d68025236\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">height_</a></td></tr>\n<tr class=\"memdesc:aff0a99868ff4ca68ee8cb63d68025236\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: height <br /></td></tr>\n<tr class=\"separator:aff0a99868ff4ca68ee8cb63d68025236\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2faf3a1d399bc19c779b18bd6b2eaba2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2faf3a1d399bc19c779b18bd6b2eaba2\"></a>\ncv::Size&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sensor_size_</b></td></tr>\n<tr class=\"separator:a2faf3a1d399bc19c779b18bd6b2eaba2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c0a0e17e5feedb9ab361f54c7ae14be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8c0a0e17e5feedb9ab361f54c7ae14be\"></a>\nstd::vector&lt; cv::Point2f &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rectified_points_</b></td></tr>\n<tr class=\"separator:a8c0a0e17e5feedb9ab361f54c7ae14be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a405bc1042dc92a9729c07828d24032b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a405bc1042dc92a9729c07828d24032b2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keep_frames_</b> = false</td></tr>\n<tr class=\"separator:a405bc1042dc92a9729c07828d24032b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15ce4dc6c033282b8b11e405071346b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15ce4dc6c033282b8b11e405071346b9\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_mutex_</b></td></tr>\n<tr class=\"separator:a15ce4dc6c033282b8b11e405071346b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cfaf0e56d549c48c06334efbd04ab49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cfaf0e56d549c48c06334efbd04ab49\"></a>\nstd::deque&lt; cv::Mat &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">frames_</a></td></tr>\n<tr class=\"memdesc:a6cfaf0e56d549c48c06334efbd04ab49\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">images obtained aggregating events <br /></td></tr>\n<tr class=\"separator:a6cfaf0e56d549c48c06334efbd04ab49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64c9eb246dab2db2ac6790eb966701ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64c9eb246dab2db2ac6790eb966701ce\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rate_hz_</b></td></tr>\n<tr class=\"separator:a64c9eb246dab2db2ac6790eb966701ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a425dc08fd4e0100eba904dd3a7503d4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a425dc08fd4e0100eba904dd3a7503d4a\"></a>\nros::Time&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">ts_</a></td></tr>\n<tr class=\"memdesc:a425dc08fd4e0100eba904dd3a7503d4a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">last timestamped image (last received event) <br /></td></tr>\n<tr class=\"separator:a425dc08fd4e0100eba904dd3a7503d4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classdvs__bootstrapping_1_1Bootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td></tr>\n<tr class=\"memitem:a7b6d91b69fc99bb3feb65e8c47f23edc inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b6d91b69fc99bb3feb65e8c47f23edc\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a7b6d91b69fc99bb3feb65e8c47f23edc inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cb90f526f6964f39625a5eacc15b01b inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2cb90f526f6964f39625a5eacc15b01b\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a2cb90f526f6964f39625a5eacc15b01b inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a537a4590a2cf939962448b43f9ee4d33 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a537a4590a2cf939962448b43f9ee4d33\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_</b></td></tr>\n<tr class=\"separator:a537a4590a2cf939962448b43f9ee4d33 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a656b62b448a0104a78299d1b09852803\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a> = true</td></tr>\n<tr class=\"memdesc:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whether it is bootstrapping the pipeline. <br /></td></tr>\n<tr class=\"separator:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ee3a994f2d517ef2211aaafeb6bba24 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td></tr>\n<tr class=\"separator:a9ee3a994f2d517ef2211aaafeb6bba24 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43b38251f208c52f2cc4d1fc00f4f219\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td></tr>\n<tr class=\"memdesc:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">to grant exclusive access to eventQueue_ <br /></td></tr>\n<tr class=\"separator:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a617aa089e6e345edacaee8b9b8266490 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td></tr>\n<tr class=\"separator:a617aa089e6e345edacaee8b9b8266490 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4a986f20504628105d325b21e34a7b3\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root of the tf system. <br /></td></tr>\n<tr class=\"separator:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0d0db5b5ce5de0f444dfd3279da55d9\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td></tr>\n<tr class=\"memdesc:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">child frame id for bootstrap <br /></td></tr>\n<tr class=\"separator:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a5f7a1ab3f8226687166d6fe5b8520b01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">integratingThread</a> ()</td></tr>\n<tr class=\"memdesc:a5f7a1ab3f8226687166d6fe5b8520b01\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">motion undistortion params  <a href=\"#a5f7a1ab3f8226687166d6fe5b8520b01\">More...</a><br /></td></tr>\n<tr class=\"separator:a5f7a1ab3f8226687166d6fe5b8520b01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4746b4fc632d898bfab5dc8e63b708d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">integrateEvents</a> ()</td></tr>\n<tr class=\"separator:af4746b4fc632d898bfab5dc8e63b708d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26dd5dfdba38a4c1d0e79c40a516ebde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">clearEventQueue</a> ()</td></tr>\n<tr class=\"separator:a26dd5dfdba38a4c1d0e79c40a516ebde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad90caac7628ef0bc3dec5e963f60053e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">publishEventImage</a> (const cv::Mat &amp;img, const ros::Time &amp;ts)</td></tr>\n<tr class=\"separator:ad90caac7628ef0bc3dec5e963f60053e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeb941155dfff9dc9ab9f8a87590f6fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">publishOpticalFlowVectors</a> (const cv::Mat &amp;flow_field)</td></tr>\n<tr class=\"separator:aaeb941155dfff9dc9ab9f8a87590f6fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a200bac4ebf61de44d7c730a6ae34a9a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a200bac4ebf61de44d7c730a6ae34a9a5\"></a>\ntf::Transformer&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_</b></td></tr>\n<tr class=\"separator:a200bac4ebf61de44d7c730a6ae34a9a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a34d835b252d000b153362c5ff7330\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9a34d835b252d000b153362c5ff7330\"></a>\ntf::TransformBroadcaster&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_pub_</b></td></tr>\n<tr class=\"separator:ab9a34d835b252d000b153362c5ff7330\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3a12cf9a75d138254daf98af818ba32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3a12cf9a75d138254daf98af818ba32\"></a>\nimage_transport::ImageTransport&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>it_</b></td></tr>\n<tr class=\"separator:af3a12cf9a75d138254daf98af818ba32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adae54faabe6f94c28486575aaaf4a82f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adae54faabe6f94c28486575aaaf4a82f\"></a>\nimage_transport::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_event_img_</b></td></tr>\n<tr class=\"separator:adae54faabe6f94c28486575aaaf4a82f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd10725d83bc4d233aeea5d3cce114d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd10725d83bc4d233aeea5d3cce114d1\"></a>\nimage_transport::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_optical_flow_</b></td></tr>\n<tr class=\"separator:abd10725d83bc4d233aeea5d3cce114d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab94f6fda052003d3d3a3c9782aa04301\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">frame_size_</a></td></tr>\n<tr class=\"separator:ab94f6fda052003d3d3a3c9782aa04301\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6a7f21a3b5b5dff875b0f6573c47dcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">local_frame_size_</a></td></tr>\n<tr class=\"separator:ae6a7f21a3b5b5dff875b0f6573c47dcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaafb56114b190f10a32e49ef7042c46d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">newest_processed_event_</a></td></tr>\n<tr class=\"separator:aaafb56114b190f10a32e49ef7042c46d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc3eaa3b946e04185c10bcefb931e0f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">enable_visuals_</a></td></tr>\n<tr class=\"separator:abc3eaa3b946e04185c10bcefb931e0f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a685a6a728974af53157f9373aa463838\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a685a6a728974af53157f9373aa463838\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">undistort_mapx_</a></td></tr>\n<tr class=\"memdesc:a685a6a728974af53157f9373aa463838\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">distorted to undistorted pixels (x) <br /></td></tr>\n<tr class=\"separator:a685a6a728974af53157f9373aa463838\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a709741806ccfc7d9a4157b6547ba81b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a709741806ccfc7d9a4157b6547ba81b7\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">undistort_mapy_</a></td></tr>\n<tr class=\"memdesc:a709741806ccfc7d9a4157b6547ba81b7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">distorted to undistorted pixels (y) <br /></td></tr>\n<tr class=\"separator:a709741806ccfc7d9a4157b6547ba81b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a638badd8ea1a65d000e0baf43e4bce42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a638badd8ea1a65d000e0baf43e4bce42\"></a>\n<a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>unwarp_params_</b></td></tr>\n<tr class=\"separator:a638badd8ea1a65d000e0baf43e4bce42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Collects events and publishes motion undistorted events frames </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a26dd5dfdba38a4c1d0e79c40a516ebde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26dd5dfdba38a4c1d0e79c40a516ebde\">&#9670;&nbsp;</a></span>clearEventQueue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::EventsFramesBootstrapper::clearEventQueue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Clears events that are not useful anymore </p>\n\n</div>\n</div>\n<a id=\"af4746b4fc632d898bfab5dc8e63b708d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4746b4fc632d898bfab5dc8e63b708d\">&#9670;&nbsp;</a></span>integrateEvents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool dvs_bootstrapping::EventsFramesBootstrapper::integrateEvents </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Performs motion compensation and publishes/stores the undistorted events frame </p><pre class=\"fragment\">ROS params:\n     frame_size) number of events to aggregate in an events frame\n     local_frame_size) size of the two batches of events used to\n         compute the warp parameters unwarp_estimate_n_it) maximum\n         number of iterations to\n      estimate homography unwarp_estimate_eps) homography estimation\n         tolerance\n     unwarp_estimate_pyramid_lvls) pyramid levels used to estimate\n         homography\n     min_step_size) minimum number of new events before next events\n         frame\n     events_scale_factor)\n         pixel intensity = sat(#events / events_scale_factor)\n     adaptive_thresholding) whether to perform adaptive thresholding\n         if adaptive_thresholding:\n             activation_threshold_min) minimum pixel intensity\n             activation_threshold_patch_size) filter patch size\n     median_filtering) whether to perform median filtering\n         if median_filtering:\n             median_filter_size) filter size\n</pre><p>If param \"enable_visualizations\" is true, it publishes the undistorted events and the estimated optical flow.</p>\n<p>Moreover: </p><pre class=\"fragment\"> max_events_frames_saved_to_file) # of events frames stored on disk\n events_frames_filename_format) filename of the events frames stored\n</pre><dl class=\"section return\"><dt>Returns</dt><dd>Whether the motion undistortion was performed (i.e., there were enough new events) </dd></dl>\n\n</div>\n</div>\n<a id=\"a5f7a1ab3f8226687166d6fe5b8520b01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f7a1ab3f8226687166d6fe5b8520b01\">&#9670;&nbsp;</a></span>integratingThread()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::EventsFramesBootstrapper::integratingThread </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>motion undistortion params </p>\n<p>Thread that if not idle calls integrateEvents</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">integrateEvents</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a5cb2328ccca4540592a7e462d4503991\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cb2328ccca4540592a7e462d4503991\">&#9670;&nbsp;</a></span>postCameraLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::EventsFramesBootstrapper::postCameraLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after cam_ has been loaded </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">dvs_bootstrapping::Bootstrapper</a>.</p>\n\n</div>\n</div>\n<a id=\"ad90caac7628ef0bc3dec5e963f60053e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad90caac7628ef0bc3dec5e963f60053e\">&#9670;&nbsp;</a></span>publishEventImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::EventsFramesBootstrapper::publishEventImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const ros::Time &amp;&#160;</td>\n          <td class=\"paramname\"><em>ts</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes image img at timestamp ts </p><pre class=\"fragment\">ROS params:\n    motion_corrected_topic) topic of the ros message\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">img</td><td>the image to publish </td></tr>\n    <tr><td class=\"paramname\">ts</td><td>timestamp of the ros message </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aaeb941155dfff9dc9ab9f8a87590f6fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaeb941155dfff9dc9ab9f8a87590f6fe\">&#9670;&nbsp;</a></span>publishOpticalFlowVectors()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::EventsFramesBootstrapper::publishOpticalFlowVectors </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>flow_field</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publishes optical flow field flow_field </p><pre class=\"fragment\">ROS params:\n    optical_flow_topic) topic of the ros message\n</pre><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">flow_field</td><td>the optical flow field to publish </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abc3eaa3b946e04185c10bcefb931e0f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc3eaa3b946e04185c10bcefb931e0f3\">&#9670;&nbsp;</a></span>enable_visuals_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool dvs_bootstrapping::EventsFramesBootstrapper::enable_visuals_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>whether to publish visuals ROS param: \"enable_visualizations\" </p>\n\n</div>\n</div>\n<a id=\"ab94f6fda052003d3d3a3c9782aa04301\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab94f6fda052003d3d3a3c9782aa04301\">&#9670;&nbsp;</a></span>frame_size_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int dvs_bootstrapping::EventsFramesBootstrapper::frame_size_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>number of events to accumulate in each frame ROS param: \"frame_size\" </p>\n\n</div>\n</div>\n<a id=\"ae6a7f21a3b5b5dff875b0f6573c47dcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6a7f21a3b5b5dff875b0f6573c47dcf\">&#9670;&nbsp;</a></span>local_frame_size_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int dvs_bootstrapping::EventsFramesBootstrapper::local_frame_size_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>how many events have to be used for the motion compensation ROS param: \"local_frame_size\" </p>\n\n</div>\n</div>\n<a id=\"aaafb56114b190f10a32e49ef7042c46d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaafb56114b190f10a32e49ef7042c46d\">&#9670;&nbsp;</a></span>newest_processed_event_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int dvs_bootstrapping::EventsFramesBootstrapper::newest_processed_event_</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>keeps track of the last processed event ROS param: \"n_min_events_frames\" </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_bootstrapping/include/dvs_bootstrapping/<a class=\"el\" href=\"EventsFramesBootstrapper_8hpp_source.html\">EventsFramesBootstrapper.hpp</a></li>\n<li>dvs_bootstrapping/src/EventsFramesBootstrapper.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1EventsFramesBootstrapper__coll__graph.md5",
    "content": "321d3d6fd6c57f963e7eb03d3b350182"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1EventsFramesBootstrapper__inherit__graph.md5",
    "content": "2af999a23de18999fd9fae32055241ea"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1FrontoPlanarBootstrapper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::FrontoPlanarBootstrapper Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">bootstrap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Bootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">bootstrappingThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cam_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a>(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EventsFramesBootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FrontoPlanarBootstrapper</b>(ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp) (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>img_mutex_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>keep_frames_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>nhp_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">pcl_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">postBootstrapCalled</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">postCameraLoaded</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">pub_pc_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">pub_tf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">publishPcl</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>rate_hz_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>rectified_points_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sensor_size_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>start_</b> (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a>(const std_msgs::String::ConstPtr &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">ts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Bootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~EventsFramesBootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrontoPlanarBootstrapper</b>() (defined in <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping::FrontoPlanarBootstrapper Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>dvs_bootstrapping</b></li><li class=\"navelem\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping::FrontoPlanarBootstrapper Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"FrontoPlanarBootstrapper_8hpp_source.html\">FrontoPlanarBootstrapper.hpp</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for dvs_bootstrapping::FrontoPlanarBootstrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper__inherit__graph.png\" border=\"0\" usemap=\"#dvs__bootstrapping_1_1FrontoPlanarBootstrapper_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"dvs__bootstrapping_1_1FrontoPlanarBootstrapper_inherit__map\" id=\"dvs__bootstrapping_1_1FrontoPlanarBootstrapper_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" title=\"dvs_bootstrapping::\\lEventsFramesBootstrapper\" alt=\"\" coords=\"5,95,187,136\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" title=\"dvs_bootstrapping::\\lBootstrapper\" alt=\"\" coords=\"28,5,164,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for dvs_bootstrapping::FrontoPlanarBootstrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper__coll__graph.png\" border=\"0\" usemap=\"#dvs__bootstrapping_1_1FrontoPlanarBootstrapper_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"dvs__bootstrapping_1_1FrontoPlanarBootstrapper_coll__map\" id=\"dvs__bootstrapping_1_1FrontoPlanarBootstrapper_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" title=\"dvs_bootstrapping::\\lEventsFramesBootstrapper\" alt=\"\" coords=\"145,124,327,165\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" title=\"dvs_bootstrapping::\\lBootstrapper\" alt=\"\" coords=\"5,5,141,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classmotion__correction_1_1WarpUpdateParams.html\" title=\"motion_correction::\\lWarpUpdateParams\" alt=\"\" coords=\"166,5,306,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a31d288e1a3d4478fd79e6572e27ee6a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31d288e1a3d4478fd79e6572e27ee6a7\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrontoPlanarBootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</td></tr>\n<tr class=\"separator:a31d288e1a3d4478fd79e6572e27ee6a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td></tr>\n<tr class=\"memitem:a36a754c551ac664572df77e8454c99e9 inherit pub_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36a754c551ac664572df77e8454c99e9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EventsFramesBootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</td></tr>\n<tr class=\"separator:a36a754c551ac664572df77e8454c99e9 inherit pub_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classdvs__bootstrapping_1_1Bootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td></tr>\n<tr class=\"memitem:a79ef983366783a8d030bdddf47aa7053 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79ef983366783a8d030bdddf47aa7053\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Bootstrapper</b> (ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nh_private)</td></tr>\n<tr class=\"separator:a79ef983366783a8d030bdddf47aa7053 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c336fde4d52b1b75b1b7d43ebd9e103 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">startCommandCallback</a> (const std_msgs::String::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a5c336fde4d52b1b75b1b7d43ebd9e103 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58380879400517719b855d1bb4dbe99a inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">cameraInfoCallback</a> (const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a58380879400517719b855d1bb4dbe99a inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ee5d565b59f276e03aaa79e89445a70 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">pauseBootstrapper</a> ()</td></tr>\n<tr class=\"separator:a5ee5d565b59f276e03aaa79e89445a70 inherit pub_methods_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a7705cc27f5576a7cbce05cd42fd5e9c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">postBootstrapCalled</a> () override</td></tr>\n<tr class=\"separator:a7705cc27f5576a7cbce05cd42fd5e9c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td></tr>\n<tr class=\"memitem:a5cb2328ccca4540592a7e462d4503991 inherit pro_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">postCameraLoaded</a> () override</td></tr>\n<tr class=\"separator:a5cb2328ccca4540592a7e462d4503991 inherit pro_methods_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a2c3eec8aa1e1647d9f1520046dbbcbd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">bootstrap</a> ()</td></tr>\n<tr class=\"separator:a2c3eec8aa1e1647d9f1520046dbbcbd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfc193401e2a3b820b866c5d52a943a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">bootstrappingThread</a> ()</td></tr>\n<tr class=\"separator:acfc193401e2a3b820b866c5d52a943a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf4d0a5f39993ade1e9d3c38f0e34b6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">publishPcl</a> ()</td></tr>\n<tr class=\"separator:aaf4d0a5f39993ade1e9d3c38f0e34b6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a43637fc6e2b7f7e05d92a9f5132970c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43637fc6e2b7f7e05d92a9f5132970c7\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">pub_pc_</a></td></tr>\n<tr class=\"memdesc:a43637fc6e2b7f7e05d92a9f5132970c7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">publisher of the first approximation of the map <br /></td></tr>\n<tr class=\"separator:a43637fc6e2b7f7e05d92a9f5132970c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea843038e505012562c626cd1c25424b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aea843038e505012562c626cd1c25424b\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">pcl_</a></td></tr>\n<tr class=\"memdesc:aea843038e505012562c626cd1c25424b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">map <br /></td></tr>\n<tr class=\"separator:aea843038e505012562c626cd1c25424b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5a697b3f40227821f98b245ec212275\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5a697b3f40227821f98b245ec212275\"></a>\ntf::TransformBroadcaster&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">pub_tf_</a></td></tr>\n<tr class=\"memdesc:ae5a697b3f40227821f98b245ec212275\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">to send the first pose <br /></td></tr>\n<tr class=\"separator:ae5a697b3f40227821f98b245ec212275\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a46a8afc71cc140a56143b3cc14ec98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a46a8afc71cc140a56143b3cc14ec98\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>start_</b> = false</td></tr>\n<tr class=\"separator:a9a46a8afc71cc140a56143b3cc14ec98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">dvs_bootstrapping::EventsFramesBootstrapper</a></td></tr>\n<tr class=\"memitem:a15cf181171b6e147d51fb3d34b1459c3 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15cf181171b6e147d51fb3d34b1459c3\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">width_</a></td></tr>\n<tr class=\"memdesc:a15cf181171b6e147d51fb3d34b1459c3 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: width <br /></td></tr>\n<tr class=\"separator:a15cf181171b6e147d51fb3d34b1459c3 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff0a99868ff4ca68ee8cb63d68025236 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff0a99868ff4ca68ee8cb63d68025236\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">height_</a></td></tr>\n<tr class=\"memdesc:aff0a99868ff4ca68ee8cb63d68025236 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: height <br /></td></tr>\n<tr class=\"separator:aff0a99868ff4ca68ee8cb63d68025236 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2faf3a1d399bc19c779b18bd6b2eaba2 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2faf3a1d399bc19c779b18bd6b2eaba2\"></a>\ncv::Size&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sensor_size_</b></td></tr>\n<tr class=\"separator:a2faf3a1d399bc19c779b18bd6b2eaba2 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c0a0e17e5feedb9ab361f54c7ae14be inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8c0a0e17e5feedb9ab361f54c7ae14be\"></a>\nstd::vector&lt; cv::Point2f &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rectified_points_</b></td></tr>\n<tr class=\"separator:a8c0a0e17e5feedb9ab361f54c7ae14be inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a405bc1042dc92a9729c07828d24032b2 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a405bc1042dc92a9729c07828d24032b2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keep_frames_</b> = false</td></tr>\n<tr class=\"separator:a405bc1042dc92a9729c07828d24032b2 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15ce4dc6c033282b8b11e405071346b9 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15ce4dc6c033282b8b11e405071346b9\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_mutex_</b></td></tr>\n<tr class=\"separator:a15ce4dc6c033282b8b11e405071346b9 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cfaf0e56d549c48c06334efbd04ab49 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cfaf0e56d549c48c06334efbd04ab49\"></a>\nstd::deque&lt; cv::Mat &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">frames_</a></td></tr>\n<tr class=\"memdesc:a6cfaf0e56d549c48c06334efbd04ab49 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">images obtained aggregating events <br /></td></tr>\n<tr class=\"separator:a6cfaf0e56d549c48c06334efbd04ab49 inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64c9eb246dab2db2ac6790eb966701ce inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64c9eb246dab2db2ac6790eb966701ce\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rate_hz_</b></td></tr>\n<tr class=\"separator:a64c9eb246dab2db2ac6790eb966701ce inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a425dc08fd4e0100eba904dd3a7503d4a inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a425dc08fd4e0100eba904dd3a7503d4a\"></a>\nros::Time&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">ts_</a></td></tr>\n<tr class=\"memdesc:a425dc08fd4e0100eba904dd3a7503d4a inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">last timestamped image (last received event) <br /></td></tr>\n<tr class=\"separator:a425dc08fd4e0100eba904dd3a7503d4a inherit pro_attribs_classdvs__bootstrapping_1_1EventsFramesBootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classdvs__bootstrapping_1_1Bootstrapper')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">dvs_bootstrapping::Bootstrapper</a></td></tr>\n<tr class=\"memitem:a7b6d91b69fc99bb3feb65e8c47f23edc inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b6d91b69fc99bb3feb65e8c47f23edc\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a7b6d91b69fc99bb3feb65e8c47f23edc inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cb90f526f6964f39625a5eacc15b01b inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2cb90f526f6964f39625a5eacc15b01b\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nhp_</b></td></tr>\n<tr class=\"separator:a2cb90f526f6964f39625a5eacc15b01b inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a537a4590a2cf939962448b43f9ee4d33 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a537a4590a2cf939962448b43f9ee4d33\"></a>\nimage_geometry::PinholeCameraModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_</b></td></tr>\n<tr class=\"separator:a537a4590a2cf939962448b43f9ee4d33 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a656b62b448a0104a78299d1b09852803\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">idle_</a> = true</td></tr>\n<tr class=\"memdesc:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whether it is bootstrapping the pipeline. <br /></td></tr>\n<tr class=\"separator:a656b62b448a0104a78299d1b09852803 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ee3a994f2d517ef2211aaafeb6bba24 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; dvs_msgs::Event &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">eventQueue_</a></td></tr>\n<tr class=\"separator:a9ee3a994f2d517ef2211aaafeb6bba24 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43b38251f208c52f2cc4d1fc00f4f219\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">data_mutex_</a></td></tr>\n<tr class=\"memdesc:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">to grant exclusive access to eventQueue_ <br /></td></tr>\n<tr class=\"separator:a43b38251f208c52f2cc4d1fc00f4f219 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a617aa089e6e345edacaee8b9b8266490 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">remote_key_pub_</a></td></tr>\n<tr class=\"separator:a617aa089e6e345edacaee8b9b8266490 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4a986f20504628105d325b21e34a7b3\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">world_frame_id_</a></td></tr>\n<tr class=\"memdesc:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The root of the tf system. <br /></td></tr>\n<tr class=\"separator:ab4a986f20504628105d325b21e34a7b3 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0d0db5b5ce5de0f444dfd3279da55d9\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">bootstrap_frame_id_</a></td></tr>\n<tr class=\"memdesc:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">child frame id for bootstrap <br /></td></tr>\n<tr class=\"separator:ad0d0db5b5ce5de0f444dfd3279da55d9 inherit pro_attribs_classdvs__bootstrapping_1_1Bootstrapper\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a> based on the EVO paper</p>\n<p>Assumes a fronto-planar scene and integrate a fixed number of events to bootstrap the first map.</p>\n<p>Relies on <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a> for the events frames. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2c3eec8aa1e1647d9f1520046dbbcbd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c3eec8aa1e1647d9f1520046dbbcbd7\">&#9670;&nbsp;</a></span>bootstrap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool dvs_bootstrapping::FrontoPlanarBootstrapper::bootstrap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Project aggregated event image onto a plane at a distance d_ from the camera, and publish the point cloud as first map </p><pre class=\"fragment\">ROS params:\n    plane_distance) distance at which the events frame is reprojected\n</pre><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">publishPcl</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"acfc193401e2a3b820b866c5d52a943a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfc193401e2a3b820b866c5d52a943a8\">&#9670;&nbsp;</a></span>bootstrappingThread()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::FrontoPlanarBootstrapper::bootstrappingThread </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Regularly checks whether to bootstrap </p><pre class=\"fragment\">ROS params:\n    auto_trigger) if true, automatically starts publishing\n         fronto-planar maps\n    one_shot) if true, publishes only a single map before turning\n         idle\n    n_subscribers_to_wait) wait some subscribers before to publish\n         the maps</pre> \n</div>\n</div>\n<a id=\"a7705cc27f5576a7cbce05cd42fd5e9c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7705cc27f5576a7cbce05cd42fd5e9c3\">&#9670;&nbsp;</a></span>postBootstrapCalled()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void dvs_bootstrapping::FrontoPlanarBootstrapper::postBootstrapCalled </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Setup operations to be performed after the bootstrap command has been received. </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">dvs_bootstrapping::Bootstrapper</a>.</p>\n\n</div>\n</div>\n<a id=\"aaf4d0a5f39993ade1e9d3c38f0e34b6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">&#9670;&nbsp;</a></span>publishPcl()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool dvs_bootstrapping::FrontoPlanarBootstrapper::publishPcl </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Publish pcl_ under the topic \"pointcloud\" </p><pre class=\"fragment\">ROS params:\n    radius_search) radius size of radius filter\n    min_num_neighbors) minimum number of neighbors for radius\n         filtering\n</pre><dl class=\"section return\"><dt>Returns</dt><dd>whether the point cloud was published </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>dvs_bootstrapping/include/dvs_bootstrapping/<a class=\"el\" href=\"FrontoPlanarBootstrapper_8hpp_source.html\">FrontoPlanarBootstrapper.hpp</a></li>\n<li>dvs_bootstrapping/src/FrontoPlanarBootstrapper.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1FrontoPlanarBootstrapper__coll__graph.md5",
    "content": "3334b7a7f7b62fddd1722cc52e5d8f31"
  },
  {
    "path": "docs/classdvs__bootstrapping_1_1FrontoPlanarBootstrapper__inherit__graph.md5",
    "content": "d12c9cf6a9814269da6cb88f2696e353"
  },
  {
    "path": "docs/classes.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Index</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Class Index</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"qindex\"><a class=\"qindex\" href=\"#letter__\">_</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_a\">a</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_b\">b</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_c\">c</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_d\">d</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_e\">e</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_f\">f</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_g\">g</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_h\">h</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_i\">i</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_j\">j</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_k\">k</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_l\">l</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_m\">m</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_n\">n</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_o\">o</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_p\">p</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_r\">r</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_s\">s</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_t\">t</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_u\">u</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_v\">v</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_w\">w</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_z\">z</a></div>\n<table class=\"classindex\">\n<tr><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter__\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;_&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">Corner</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">NormalDistributionScaleEstimator</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">_CameraMotion</a> (cv::HomographyDecomposition)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_d\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;d&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a> (aslam::common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">PoseOptimizer::Statistics</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_a\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;a&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a> (aslam::common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Reprojector::Statistics</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_h\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;h&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">NumericalDiffTraits</a> (aslam::common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a> (aslam::common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a> (std)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a> (aslam::common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a> (depth_from_defocus)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structvk_1_1Homography.html\">Homography</a> (vk)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_o\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;o&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">Svo</a> (rqt_svo.svo)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1Aligned.html\">Aligned</a> (aslam)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> (depth_from_defocus)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a> (cv::HomographyDecomposition)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">AlignedMap</a> (aslam)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a> (cv::HomographyDecomposition)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">SvoNodeBase</a> (svo_ros)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">AlignedUnorderedMap</a> (aslam)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">DvsMappingNodelet</a> (depth_from_defocus)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a> (cv::HomographyDecomposition)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classDvsReconstruction.html\">DvsReconstruction</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">SvoWidget</a> (rqt_svo.svo_widget)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">Arcball</a> (vikit_py.transformations)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_t\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;t&#160;&#160;</div></td></tr></table>\n</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structArgumentType.html\">ArgumentType</a>&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_e\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;e&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\">ArgumentType&lt; T(U)&gt;</a>&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_i\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;i&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">Matcher::Options</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">TestTransformations</a> (vikit_py.test_transformations)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a> (vk::cameras)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_p\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;p&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">tfToCamera</a> (evo_utils.tf_to_camera_markers)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a> (rpg_common)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1Timer.html\">Timer</a> (vk)&#160;&#160;&#160;</td></tr>\n<tr><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_b\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;b&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\">EventsFramesBootstrapper</a> (dvs_bootstrapping)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a> (vk)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classTracker.html\">Tracker</a>&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">Evo</a> (rqt_evo.evo)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">PinholeCamera</a> (vikit_py.pinhole_camera)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">TriggerMapExpansion</a> (trigger_map_expansion)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">EvoWidget</a> (rqt_evo.evo_widget)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a> (svo::dataset)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a> (evo_utils::camera)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a> (vk::solver)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">ExposureSelector</a> (evo_utils.select_exposure_DAVIS)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_f\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;f&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a> (depth_from_defocus)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_u\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;u&#160;&#160;</div></td></tr></table>\n</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_j\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;j&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">UnitScaleEstimator</a> (vk::solver)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a> (rpg_common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">DepthFilter::Job</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">UnitWeightFunction</a> (vk::solver)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">BenchmarkNode</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classgtsam_1_1FastMap.html\">FastMap</a> (gtsam)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_k\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;k&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a> (vk)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">Boostrapper</a> (pose_to_tf)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_r\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;r&#160;&#160;</div></td></tr></table>\n</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_v\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;v&#160;&#160;</div></td></tr></table>\n</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\">Bootstrapper</a> (dvs_bootstrapping)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a>&#160;&#160;&#160;</td></tr>\n<tr><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_c\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;c&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_l\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;l&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a> (rpg_common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">CallbackHost</a> (rpg_common)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a> (svo::dataset)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_w\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;w&#160;&#160;</div></td></tr></table>\n</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a> (depth_from_defocus)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a> (vk::cameras)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a> (vk)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a> (motion_correction)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a> (svo::dataset)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structvk_1_1LogItem.html\">LogItem</a> (vk)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">RosNode</a> (vikit_py.ros_node)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a> (vk::solver)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classCamerasTest.html\">CamerasTest</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_m\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;m&#160;&#160;</div></td></tr></table>\n</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_s\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;s&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a> (rpg_common)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Reprojector::Candidate</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_z\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;z&#160;&#160;</div></td></tr></table>\n</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">MADScaleEstimator</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1Sample.html\">Sample</a> (vk)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a> (aslam::common)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">convert&lt; std::queue&lt; ValueType &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">ZMSSD</a> (svo::patch_score)&#160;&#160;&#160;</td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a> (svo::dataset)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartProjectionPoseFactor</a> (gtsam)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\">FrontoPlanarBootstrapper</a> (dvs_bootstrapping)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classMedianFilterTest.html\">MedianFilterTest</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">snakify</a> (evo_utils.snakify)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_g\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;g&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> (vk::solver)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">convert&lt; vk::cameras::CameraGeometryBase &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classgtsam_1_1GenericProjectionFactor.html\">GenericProjectionFactor</a> (gtsam)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classMosaic.html\">Mosaic</a>&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td valign=\"top\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">convert&lt; vk::cameras::NCamera &gt;</a> (YAML)&#160;&#160;&#160;</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td rowspan=\"2\" valign=\"bottom\"><a name=\"letter_n\"></a><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><div class=\"ah\">&#160;&#160;n&#160;&#160;</div></td></tr></table>\n</td><td valign=\"top\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a> (<a class=\"el\" href=\"namespacesvo.html\">svo</a>)&#160;&#160;&#160;</td><td></td></tr>\n<tr><td></td><td></td><td></td><td></td></tr>\n<tr><td></td><td></td><td valign=\"top\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a> (vk::cameras)&#160;&#160;&#160;</td><td></td><td></td></tr>\n<tr><td></td><td></td><td></td><td></td><td></td></tr>\n</table>\n<div class=\"qindex\"><a class=\"qindex\" href=\"#letter__\">_</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_a\">a</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_b\">b</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_c\">c</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_d\">d</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_e\">e</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_f\">f</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_g\">g</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_h\">h</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_i\">i</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_j\">j</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_k\">k</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_l\">l</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_m\">m</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_n\">n</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_o\">o</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_p\">p</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_r\">r</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_s\">s</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_t\">t</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_u\">u</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_v\">v</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_w\">w</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_z\">z</a></div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1camera_1_1PinholeCamera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>camera</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils::camera::PinholeCamera Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">height_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>K</b>() const (defined in <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">Kinv_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PinholeCamera</b>() (defined in <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">PinholeCamera</a>(int width, int height, float fx, float fy, float cx, float cy)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">project3dToPixel</a>(const Point &amp;P)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">projectPixelTo3dRay</a>(const Keypoint &amp;u)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">width_</a></td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1camera_1_1PinholeCamera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils::camera::PinholeCamera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>camera</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classevo__utils_1_1camera_1_1PinholeCamera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils::camera::PinholeCamera Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"camera_8hpp_source.html\">camera.hpp</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7bd23523103950624b1eacfd8b307a21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">PinholeCamera</a> (int width, int height, float fx, float fy, float cx, float cy)</td></tr>\n<tr class=\"separator:a7bd23523103950624b1eacfd8b307a21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61fee4ce15caef24fd7d7588e688fd9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Keypoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">project3dToPixel</a> (const Point &amp;P)</td></tr>\n<tr class=\"separator:a61fee4ce15caef24fd7d7588e688fd9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a251272eb99fa4e49a57ff8f2a93f427f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">BearingVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">projectPixelTo3dRay</a> (const Keypoint &amp;u)</td></tr>\n<tr class=\"separator:a251272eb99fa4e49a57ff8f2a93f427f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4159bb10fdf4f997497d7805e5c4786\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4159bb10fdf4f997497d7805e5c4786\"></a>\nEigen::Matrix3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>K</b> () const</td></tr>\n<tr class=\"separator:af4159bb10fdf4f997497d7805e5c4786\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae1bb4d8bb3766b11b728e2cb2193df6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1bb4d8bb3766b11b728e2cb2193df6f\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">width_</a></td></tr>\n<tr class=\"memdesc:ae1bb4d8bb3766b11b728e2cb2193df6f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: width <br /></td></tr>\n<tr class=\"separator:ae1bb4d8bb3766b11b728e2cb2193df6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac735d96e2a97d2fe6132979673b5002c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac735d96e2a97d2fe6132979673b5002c\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">height_</a></td></tr>\n<tr class=\"memdesc:ac735d96e2a97d2fe6132979673b5002c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size: height <br /></td></tr>\n<tr class=\"separator:ac735d96e2a97d2fe6132979673b5002c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe5a18db98df7a23b4d93c9f2ad93af1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abe5a18db98df7a23b4d93c9f2ad93af1\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">fx_</a></td></tr>\n<tr class=\"memdesc:abe5a18db98df7a23b4d93c9f2ad93af1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's horizontal focal length <br /></td></tr>\n<tr class=\"separator:abe5a18db98df7a23b4d93c9f2ad93af1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fa565a175b0b0b1af458160932a2609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fa565a175b0b0b1af458160932a2609\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">fy_</a></td></tr>\n<tr class=\"memdesc:a5fa565a175b0b0b1af458160932a2609\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's vertical focal lenght <br /></td></tr>\n<tr class=\"separator:a5fa565a175b0b0b1af458160932a2609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a954f1e44784c1361d84f5a3d3e8f5040\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a954f1e44784c1361d84f5a3d3e8f5040\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">cx_</a></td></tr>\n<tr class=\"memdesc:a954f1e44784c1361d84f5a3d3e8f5040\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's principal point (x) <br /></td></tr>\n<tr class=\"separator:a954f1e44784c1361d84f5a3d3e8f5040\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a213fe206182bab3a10abf1dbc8e9364b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a213fe206182bab3a10abf1dbc8e9364b\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">cy_</a></td></tr>\n<tr class=\"memdesc:a213fe206182bab3a10abf1dbc8e9364b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's principal point (y) <br /></td></tr>\n<tr class=\"separator:a213fe206182bab3a10abf1dbc8e9364b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a132e0a2671fa231632cf738c08d2d687\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a132e0a2671fa231632cf738c08d2d687\"></a>\nEigen::Matrix3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">K_</a></td></tr>\n<tr class=\"memdesc:a132e0a2671fa231632cf738c08d2d687\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's intrinsic matrix <br /></td></tr>\n<tr class=\"separator:a132e0a2671fa231632cf738c08d2d687\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdfd824b95e1cc5af7df62b171af9566\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abdfd824b95e1cc5af7df62b171af9566\"></a>\nEigen::Matrix3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">Kinv_</a></td></tr>\n<tr class=\"memdesc:abdfd824b95e1cc5af7df62b171af9566\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">camera's intrinsic matrix inverse <br /></td></tr>\n<tr class=\"separator:abdfd824b95e1cc5af7df62b171af9566\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Pinhole camera model</p>\n<p>Provides basic functionality to project 3d point to pixel coordinates and backwards </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a7bd23523103950624b1eacfd8b307a21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7bd23523103950624b1eacfd8b307a21\">&#9670;&nbsp;</a></span>PinholeCamera()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">evo_utils::camera::PinholeCamera::PinholeCamera </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>fx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>fy</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>cx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>cy</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Construct a <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">PinholeCamera</a> object</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">width</td><td>Width of the image </td></tr>\n    <tr><td class=\"paramname\">height</td><td>Height of the image </td></tr>\n    <tr><td class=\"paramname\">fx</td><td>Camera's horizontal focal length </td></tr>\n    <tr><td class=\"paramname\">fy</td><td>Camera's vertical focal length </td></tr>\n    <tr><td class=\"paramname\">cx</td><td>Camera's horizontal principal point </td></tr>\n    <tr><td class=\"paramname\">cy</td><td>Camera's vertical principal point </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a61fee4ce15caef24fd7d7588e688fd9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61fee4ce15caef24fd7d7588e688fd9c\">&#9670;&nbsp;</a></span>project3dToPixel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Keypoint evo_utils::camera::PinholeCamera::project3dToPixel </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Point &amp;&#160;</td>\n          <td class=\"paramname\"><em>P</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Projects a 3d point (in camera frame) to the pixel coordinates</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">P</td><td>3d point in camera frame</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Pixel coordinates of the projected point </dd></dl>\n\n</div>\n</div>\n<a id=\"a251272eb99fa4e49a57ff8f2a93f427f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a251272eb99fa4e49a57ff8f2a93f427f\">&#9670;&nbsp;</a></span>projectPixelTo3dRay()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">BearingVector evo_utils::camera::PinholeCamera::projectPixelTo3dRay </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Keypoint &amp;&#160;</td>\n          <td class=\"paramname\"><em>u</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Backprojects the pixel coordinates to 3d ray</p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">u</td><td>Keypoint representing the pixel coordinates</td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Bearing vector being the 3d ray, backprojection of P </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>evo_utils/include/evo_utils/<a class=\"el\" href=\"camera_8hpp_source.html\">camera.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>select_exposure_DAVIS</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">ExposureSelector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.select_exposure_DAVIS.ExposureSelector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self) (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>bridge</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>client</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9\">computeEntropy</a>(self, img)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>computeScore</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>current_exposure</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd\">exposureCallback</a>(self, config)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466\">imageCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>img</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>rate</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027\">reset</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57\">runPass</a>(self, exposure_range, rate)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>scores</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2\">selectOptimalExposureCallback</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils.select_exposure_DAVIS.ExposureSelector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>select_exposure_DAVIS</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\">ExposureSelector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.select_exposure_DAVIS.ExposureSelector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:afe668de2c99f45081bdc4e1616980b89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe668de2c99f45081bdc4e1616980b89\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self)</td></tr>\n<tr class=\"separator:afe668de2c99f45081bdc4e1616980b89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9f7f834e34c43c8603826a75c403027\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027\">reset</a> (self)</td></tr>\n<tr class=\"separator:ae9f7f834e34c43c8603826a75c403027\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b374f52d8b549c028cd379515eb43dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd\">exposureCallback</a> (self, config)</td></tr>\n<tr class=\"separator:a3b374f52d8b549c028cd379515eb43dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48abf6126481629f36e32f3029a64c57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57\">runPass</a> (self, exposure_range, rate)</td></tr>\n<tr class=\"separator:a48abf6126481629f36e32f3029a64c57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a252771d746ecb8713548af60d5aa15a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2\">selectOptimalExposureCallback</a> (self)</td></tr>\n<tr class=\"separator:a252771d746ecb8713548af60d5aa15a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bb33e9e8f52fbc461bb51051c67e8f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9\">computeEntropy</a> (self, img)</td></tr>\n<tr class=\"separator:a5bb33e9e8f52fbc461bb51051c67e8f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad03a6480cd7149ec410f9658ff960466\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466\">imageCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:ad03a6480cd7149ec410f9658ff960466\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab9e0e229e0d8f528b64c35981b540fa5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9e0e229e0d8f528b64c35981b540fa5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bridge</b></td></tr>\n<tr class=\"separator:ab9e0e229e0d8f528b64c35981b540fa5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb4198c0306a72fd554a4c52a2b87a56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb4198c0306a72fd554a4c52a2b87a56\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>client</b></td></tr>\n<tr class=\"separator:acb4198c0306a72fd554a4c52a2b87a56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56303b6c25bd29bd72a2ca808cae1a0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56303b6c25bd29bd72a2ca808cae1a0c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>rate</b></td></tr>\n<tr class=\"separator:a56303b6c25bd29bd72a2ca808cae1a0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b8d132ae765c0fee39b3ccb5beac672\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b8d132ae765c0fee39b3ccb5beac672\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>computeScore</b></td></tr>\n<tr class=\"separator:a1b8d132ae765c0fee39b3ccb5beac672\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac840c31e10dfc3b3c85650a723e25f9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac840c31e10dfc3b3c85650a723e25f9f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>current_exposure</b></td></tr>\n<tr class=\"separator:ac840c31e10dfc3b3c85650a723e25f9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5c76dd4b22e5603ae4057e11a3f50c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab5c76dd4b22e5603ae4057e11a3f50c6\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>scores</b></td></tr>\n<tr class=\"separator:ab5c76dd4b22e5603ae4057e11a3f50c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f0c1a7a6d5a015e6cd54cb4485c4c08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6f0c1a7a6d5a015e6cd54cb4485c4c08\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img</b></td></tr>\n<tr class=\"separator:a6f0c1a7a6d5a015e6cd54cb4485c4c08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5bb33e9e8f52fbc461bb51051c67e8f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bb33e9e8f52fbc461bb51051c67e8f9\">&#9670;&nbsp;</a></span>computeEntropy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.computeEntropy </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>img</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Computes image entropy as the entropy of the histogram of intensities\n\n@param img the image of which the entropy has to be calculated\n\n@return image entropy\n</pre> \n</div>\n</div>\n<a id=\"a3b374f52d8b549c028cd379515eb43dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b374f52d8b549c028cd379515eb43dd\">&#9670;&nbsp;</a></span>exposureCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.exposureCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>config</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Callback called when the dynamic reconfigure service changes the exposure.\nCan be used to check the correctness of the update.\n\n@config new configuration\n</pre> \n</div>\n</div>\n<a id=\"ad03a6480cd7149ec410f9658ff960466\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad03a6480cd7149ec410f9658ff960466\">&#9670;&nbsp;</a></span>imageCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.imageCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">After a new image is received, if it has been received with an exposure\nfor which no score is available, compute the score.\n\n@param msg message containing the image received\n\n@see computeEntropy, computeSumGradients which are the available score functions\n</pre> \n</div>\n</div>\n<a id=\"ae9f7f834e34c43c8603826a75c403027\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9f7f834e34c43c8603826a75c403027\">&#9670;&nbsp;</a></span>reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.reset </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Reset scores and current exposure\n</pre> \n</div>\n</div>\n<a id=\"a48abf6126481629f36e32f3029a64c57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48abf6126481629f36e32f3029a64c57\">&#9670;&nbsp;</a></span>runPass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.runPass </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>exposure_range</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>rate</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">For each possible exposure in exposure_range, evaluates the corresponding score \nby waiting a new image after the exposure is selected. To do this, it works at a\nfrequency of rate Hz.\n\n@param exposure_range possible values among which the optimal exposure has to be found\n@param rate evaluation rate, used to wait imageCallback\n\n@return the optimal exposure in the range given\n\n@see imageCallback\n</pre> \n</div>\n</div>\n<a id=\"a252771d746ecb8713548af60d5aa15a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a252771d746ecb8713548af60d5aa15a2\">&#9670;&nbsp;</a></span>selectOptimalExposureCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.select_exposure_DAVIS.ExposureSelector.selectOptimalExposureCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Performs the automatic exposure selection algorithm\n\nTwo steps are performed. First, a first optimal exposure is found \nwith a coarse search in the range 100 &lt;-&gt; 27100. \nThen, the exposure is refined with a finer search in the range \n0.9 * first_solution &lt;-&gt; 1.1 first_solution.\n\n@see runPass\n</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>evo_utils/src/evo_utils/select_exposure_DAVIS.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1snakify_1_1snakify-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>snakify</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">snakify</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.snakify.snakify Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self) (defined in <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf\">_TFCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>frame_id</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>length</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>poses</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>snake_pub</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">evo_utils.snakify.snakify</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1snakify_1_1snakify.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils.snakify.snakify Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>snakify</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\">snakify</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classevo__utils_1_1snakify_1_1snakify-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.snakify.snakify Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6f2e046a6e289579ad52bf69167d2efa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6f2e046a6e289579ad52bf69167d2efa\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self)</td></tr>\n<tr class=\"separator:a6f2e046a6e289579ad52bf69167d2efa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a7ee06514e8d08750fe6a75d77c939ccb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ee06514e8d08750fe6a75d77c939ccb\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>length</b></td></tr>\n<tr class=\"separator:a7ee06514e8d08750fe6a75d77c939ccb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c04eb02f6f5fb546ff70a997680fb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5c04eb02f6f5fb546ff70a997680fb5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_id</b></td></tr>\n<tr class=\"separator:ae5c04eb02f6f5fb546ff70a997680fb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23991f57c68de23d27d815613da2cbb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a23991f57c68de23d27d815613da2cbb1\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>poses</b></td></tr>\n<tr class=\"separator:a23991f57c68de23d27d815613da2cbb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb34f0d9820eea1f17b7b02224df6c96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeb34f0d9820eea1f17b7b02224df6c96\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>snake_pub</b></td></tr>\n<tr class=\"separator:aeb34f0d9820eea1f17b7b02224df6c96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:acd1c0f380e54469396bcc0ea1c26b1bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf\">_TFCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:acd1c0f380e54469396bcc0ea1c26b1bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"acd1c0f380e54469396bcc0ea1c26b1bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd1c0f380e54469396bcc0ea1c26b1bf\">&#9670;&nbsp;</a></span>_TFCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.snakify.snakify._TFCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Convert history of poses in trajectory (\"snake\")\n\n@param msg message containing the last transformation\n</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>evo_utils/src/evo_utils/snakify.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>tf_to_camera_markers</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">tfToCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.tf_to_camera_markers.tfToCamera Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self) (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388\">_publishCameraMarker</a>(self, pub, tf_msg, marker_scale=0.2, color=(1.0, 0.0, 0.0))</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828\">_TFCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_dvs</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>frame_gt</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>marker_scale</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_dvs</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_dvs_gt</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tf</b> (defined in <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils.tf_to_camera_markers.tfToCamera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>evo_utils</b></li><li class=\"navelem\"><b>tf_to_camera_markers</b></li><li class=\"navelem\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\">tfToCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils.tf_to_camera_markers.tfToCamera Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac5348e662a59ae520aab3959abf19914\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac5348e662a59ae520aab3959abf19914\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self)</td></tr>\n<tr class=\"separator:ac5348e662a59ae520aab3959abf19914\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acc088624bf156439352768541f451765\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acc088624bf156439352768541f451765\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_dvs</b></td></tr>\n<tr class=\"separator:acc088624bf156439352768541f451765\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe5bfbf92453eb8c69cdb18564e43e5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe5bfbf92453eb8c69cdb18564e43e5a\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_gt</b></td></tr>\n<tr class=\"separator:afe5bfbf92453eb8c69cdb18564e43e5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2bacc259f65a3c84607d19790cb87b7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2bacc259f65a3c84607d19790cb87b7d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf</b></td></tr>\n<tr class=\"separator:a2bacc259f65a3c84607d19790cb87b7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a031be9ca78925d42f1e7e52965ec67d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a031be9ca78925d42f1e7e52965ec67d3\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>marker_scale</b></td></tr>\n<tr class=\"separator:a031be9ca78925d42f1e7e52965ec67d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a359e4c12043b171c16977a6ef9bed421\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a359e4c12043b171c16977a6ef9bed421\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_dvs</b></td></tr>\n<tr class=\"separator:a359e4c12043b171c16977a6ef9bed421\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7a6f82866c5ca5b0919962d5fe1fcf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7a6f82866c5ca5b0919962d5fe1fcf5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_dvs_gt</b></td></tr>\n<tr class=\"separator:aa7a6f82866c5ca5b0919962d5fe1fcf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a74f31485200883637a1f25eb4f701828\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828\">_TFCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:a74f31485200883637a1f25eb4f701828\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dee7565f50ab27b8489f108003f6388\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388\">_publishCameraMarker</a> (self, pub, tf_msg, marker_scale=0.2, color=(1.0, 0.0, 0.0))</td></tr>\n<tr class=\"separator:a5dee7565f50ab27b8489f108003f6388\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5dee7565f50ab27b8489f108003f6388\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dee7565f50ab27b8489f108003f6388\">&#9670;&nbsp;</a></span>_publishCameraMarker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.tf_to_camera_markers.tfToCamera._publishCameraMarker </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>pub</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>tf_msg</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>marker_scale</em> = <code>0.2</code>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>color</em> = <code>(1.0,&#160;0.0,&#160;0.0)</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Publishes a camera marker\n\n@param pub camera marker ros publisher\n@param tf_msg transformation message received\n@param marker_scale scale of the marker\n@param color scale of the marker\n</pre> \n</div>\n</div>\n<a id=\"a74f31485200883637a1f25eb4f701828\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74f31485200883637a1f25eb4f701828\">&#9670;&nbsp;</a></span>_TFCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def evo_utils.tf_to_camera_markers.tfToCamera._TFCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">For each transormation received, if the frame is either the \nself.frame_dvs or the self.frame_gt, publishes a camera marker\n\n@param msg message containing the transformation \n</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>evo_utils/src/evo_utils/tf_to_camera_markers.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classgtsam_1_1FastMap.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: gtsam::FastMap&lt; KEY, VALUE &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>gtsam</b></li><li class=\"navelem\"><a class=\"el\" href=\"classgtsam_1_1FastMap.html\">FastMap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">gtsam::FastMap&lt; KEY, VALUE &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"smart__factors__fwd_8h_source.html\">smart_factors_fwd.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classgtsam_1_1GenericProjectionFactor.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: gtsam::GenericProjectionFactor&lt; POSE, LANDMARK, CALIBRATION &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>gtsam</b></li><li class=\"navelem\"><a class=\"el\" href=\"classgtsam_1_1GenericProjectionFactor.html\">GenericProjectionFactor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">gtsam::GenericProjectionFactor&lt; POSE, LANDMARK, CALIBRATION &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"smart__factors__fwd_8h_source.html\">smart_factors_fwd.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classgtsam_1_1SmartProjectionPoseFactor.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: gtsam::SmartProjectionPoseFactor&lt; CALIBRATION &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>gtsam</b></li><li class=\"navelem\"><a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartProjectionPoseFactor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">gtsam::SmartProjectionPoseFactor&lt; CALIBRATION &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"smart__factors__fwd_8h_source.html\">smart_factors_fwd.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classmotion__correction_1_1WarpUpdateParams-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>motion_correction</b></li><li class=\"navelem\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">motion_correction::WarpUpdateParams Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">criteria</a></td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">num_pyramid_levels</a></td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a></td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">warp_mode</a></td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>WarpUpdateParams</b>() (defined in <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>WarpUpdateParams</b>(int nIt, double eps, int mode, int lvls, cv::Size sensor_size) (defined in <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classmotion__correction_1_1WarpUpdateParams.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: motion_correction::WarpUpdateParams Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>motion_correction</b></li><li class=\"navelem\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classmotion__correction_1_1WarpUpdateParams-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">motion_correction::WarpUpdateParams Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"motion__correction_8hpp_source.html\">motion_correction.hpp</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4b6064b0244846c155c272041d2f661f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4b6064b0244846c155c272041d2f661f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>WarpUpdateParams</b> (int nIt, double eps, int mode, int lvls, cv::Size <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a>)</td></tr>\n<tr class=\"separator:a4b6064b0244846c155c272041d2f661f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a84a8ddbd114e714571e57c5d93fa2091\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a84a8ddbd114e714571e57c5d93fa2091\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">warp_mode</a></td></tr>\n<tr class=\"memdesc:a84a8ddbd114e714571e57c5d93fa2091\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">currently supported: cv::MOTION_HOMOGRAPHY <br /></td></tr>\n<tr class=\"separator:a84a8ddbd114e714571e57c5d93fa2091\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">num_pyramid_levels</a></td></tr>\n<tr class=\"memdesc:a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><h1>pyramid levels used to estimate the warp</h1>\n<br /></td></tr>\n<tr class=\"separator:a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a526331c824445d1998abceb0e9e0d1f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a526331c824445d1998abceb0e9e0d1f1\"></a>\ncv::Size&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a></td></tr>\n<tr class=\"memdesc:a526331c824445d1998abceb0e9e0d1f1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">image size <br /></td></tr>\n<tr class=\"separator:a526331c824445d1998abceb0e9e0d1f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6581bf6b6c5889fc421acb56e15bc08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac6581bf6b6c5889fc421acb56e15bc08\"></a>\ncv::TermCriteria&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">criteria</a></td></tr>\n<tr class=\"memdesc:ac6581bf6b6c5889fc421acb56e15bc08\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">termination criteria for the optimization <br /></td></tr>\n<tr class=\"separator:ac6581bf6b6c5889fc421acb56e15bc08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Embeds all the parameters required for the estimation of the warp </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_bootstrapping/include/<a class=\"el\" href=\"motion__correction_8hpp_source.html\">motion_correction.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classpose__to__tf_1_1Boostrapper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>pose_to_tf</b></li><li class=\"navelem\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">Boostrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">pose_to_tf.Boostrapper Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, tf_frame_name, tf_world_name, relative_to_first_pose=True) (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>br</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>got_first_pose</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>handle_dvs_pose</b>(self, msg) (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>relative_to_first_pose</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_w_init</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tf_frame_name</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tf_world_name</b> (defined in <a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">pose_to_tf.Boostrapper</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classpose__to__tf_1_1Boostrapper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: pose_to_tf.Boostrapper Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>pose_to_tf</b></li><li class=\"navelem\"><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\">Boostrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classpose__to__tf_1_1Boostrapper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">pose_to_tf.Boostrapper Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a071522f0e9ed4e4520bee76d68bf619e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a071522f0e9ed4e4520bee76d68bf619e\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, tf_frame_name, tf_world_name, relative_to_first_pose=True)</td></tr>\n<tr class=\"separator:a071522f0e9ed4e4520bee76d68bf619e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab79a9419bac88591fec899cc85c25039\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab79a9419bac88591fec899cc85c25039\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>handle_dvs_pose</b> (self, msg)</td></tr>\n<tr class=\"separator:ab79a9419bac88591fec899cc85c25039\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a21641a742f1b17a4a44366a0a7378d9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21641a742f1b17a4a44366a0a7378d9f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>br</b></td></tr>\n<tr class=\"separator:a21641a742f1b17a4a44366a0a7378d9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae546c2186e045c8326545f4170778e54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae546c2186e045c8326545f4170778e54\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_frame_name</b></td></tr>\n<tr class=\"separator:ae546c2186e045c8326545f4170778e54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad610ce2efd7b3ab095efc3f4c3e807a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad610ce2efd7b3ab095efc3f4c3e807a\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tf_world_name</b></td></tr>\n<tr class=\"separator:aad610ce2efd7b3ab095efc3f4c3e807a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf1c64f848cfad337debe7ca6da8fd5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf1c64f848cfad337debe7ca6da8fd5d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>got_first_pose</b></td></tr>\n<tr class=\"separator:abf1c64f848cfad337debe7ca6da8fd5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dd76fa89376fceec3e0c1855bcf9594\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dd76fa89376fceec3e0c1855bcf9594\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>relative_to_first_pose</b></td></tr>\n<tr class=\"separator:a0dd76fa89376fceec3e0c1855bcf9594\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6ca4524c317bf6a4e053a9f3509563d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab6ca4524c317bf6a4e053a9f3509563d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_w_init</b></td></tr>\n<tr class=\"separator:ab6ca4524c317bf6a4e053a9f3509563d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_bootstrapping/src/pose_to_tf.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1BatchWorker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::BatchWorker&lt; DataType &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addTask</b>(const DataType &amp;item) (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>BatchWorker</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isPaused</b>() const override (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pause</b>() override (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>paused_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>process</b>(const std::vector&lt; DataType &gt; &amp;item)=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>queue_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>resume</b>() override (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>shutdown</b>() override (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>softShutdown</b>() override (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>thread_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>workLoop</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~BatchWorker</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~WorkerBase</b>()=default (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1BatchWorker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rpg_common::BatchWorker&lt; DataType &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrpg__common_1_1BatchWorker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::BatchWorker&lt; DataType &gt; Class Template Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rpg_common::BatchWorker&lt; DataType &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrpg__common_1_1BatchWorker__inherit__graph.png\" border=\"0\" usemap=\"#rpg__common_1_1BatchWorker_3_01DataType_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"rpg__common_1_1BatchWorker_3_01DataType_01_4_inherit__map\" id=\"rpg__common_1_1BatchWorker_3_01DataType_01_4_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1WorkerBase.html\" title=\"rpg_common::WorkerBase\" alt=\"\" coords=\"7,5,185,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for rpg_common::BatchWorker&lt; DataType &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrpg__common_1_1BatchWorker__coll__graph.png\" border=\"0\" usemap=\"#rpg__common_1_1BatchWorker_3_01DataType_01_4_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"rpg__common_1_1BatchWorker_3_01DataType_01_4_coll__map\" id=\"rpg__common_1_1BatchWorker_3_01DataType_01_4_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1WorkerBase.html\" title=\"rpg_common::WorkerBase\" alt=\"\" coords=\"7,5,185,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a53373688ce3e32e3e9e9ef107e87280c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a53373688ce3e32e3e9e9ef107e87280c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addTask</b> (const DataType &amp;item)</td></tr>\n<tr class=\"separator:a53373688ce3e32e3e9e9ef107e87280c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7d3523e4a737ef319db93b125e3e55a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7d3523e4a737ef319db93b125e3e55a\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>shutdown</b> () override</td></tr>\n<tr class=\"separator:ac7d3523e4a737ef319db93b125e3e55a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44abd33348b93b668372d5a431fd22c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a44abd33348b93b668372d5a431fd22c8\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>softShutdown</b> () override</td></tr>\n<tr class=\"separator:a44abd33348b93b668372d5a431fd22c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afee50441c3f083a0ec35c9c52d1314ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afee50441c3f083a0ec35c9c52d1314ab\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pause</b> () override</td></tr>\n<tr class=\"separator:afee50441c3f083a0ec35c9c52d1314ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01a90497943e6dd8770ef5ca7cc96d07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01a90497943e6dd8770ef5ca7cc96d07\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isPaused</b> () const override</td></tr>\n<tr class=\"separator:a01a90497943e6dd8770ef5ca7cc96d07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eccad9feac8dc89d9b9497d10b8336b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7eccad9feac8dc89d9b9497d10b8336b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resume</b> () override</td></tr>\n<tr class=\"separator:a7eccad9feac8dc89d9b9497d10b8336b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:af7b9e288ea81f5e16eb2a269c0658e64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7b9e288ea81f5e16eb2a269c0658e64\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>process</b> (const std::vector&lt; DataType &gt; &amp;item)=0</td></tr>\n<tr class=\"separator:af7b9e288ea81f5e16eb2a269c0658e64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3a41a9c5f962c4cd22e2d75e1afa0fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae3a41a9c5f962c4cd22e2d75e1afa0fd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>workLoop</b> ()</td></tr>\n<tr class=\"separator:ae3a41a9c5f962c4cd22e2d75e1afa0fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ac00770c3217b6cc40cb2da17b37a0f60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac00770c3217b6cc40cb2da17b37a0f60\"></a>\n<a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a>&lt; DataType &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>queue_</b></td></tr>\n<tr class=\"separator:ac00770c3217b6cc40cb2da17b37a0f60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c5bb7b2698e8b91c6d040a32cc69736\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1c5bb7b2698e8b91c6d040a32cc69736\"></a>\nstd::atomic&lt; bool &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>paused_</b></td></tr>\n<tr class=\"separator:a1c5bb7b2698e8b91c6d040a32cc69736\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3049e0ae442b57ac4c5f3116fae3707\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3049e0ae442b57ac4c5f3116fae3707\"></a>\nstd::thread&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>thread_</b></td></tr>\n<tr class=\"separator:ac3049e0ae442b57ac4c5f3116fae3707\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"batch__worker_8h_source.html\">batch_worker.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1BatchWorker__coll__graph.md5",
    "content": "b97d308c572f7e3ce686257870cc75d5"
  },
  {
    "path": "docs/classrpg__common_1_1BatchWorker__inherit__graph.md5",
    "content": "d454b4b596f1941be3675d1f363b397c"
  },
  {
    "path": "docs/classrpg__common_1_1CallbackHost-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">CallbackHost</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::CallbackHost&lt; CallbackArgs &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addCallback</b>(const Callback &amp;callback) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Callback</b> typedef (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>callbacks_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linkBatchWorker</b>(BatchWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>linkRealtimeWorker</b>(RealtimeWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>triggerCallbacks</b>(CallbackArgs... args) const (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1CallbackHost.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rpg_common::CallbackHost&lt; CallbackArgs &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">CallbackHost</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrpg__common_1_1CallbackHost-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::CallbackHost&lt; CallbackArgs &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ac22a9d69a8c197246a8f1eb0997a5bc4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac22a9d69a8c197246a8f1eb0997a5bc4\"></a>\ntypedef std::function&lt; void(CallbackArgs...)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Callback</b></td></tr>\n<tr class=\"separator:ac22a9d69a8c197246a8f1eb0997a5bc4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0d7eb9a994e85a15a19656527b69fc26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d7eb9a994e85a15a19656527b69fc26\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCallback</b> (const Callback &amp;callback)</td></tr>\n<tr class=\"separator:a0d7eb9a994e85a15a19656527b69fc26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7143c4a5e7719c9b613e450052d9bd93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7143c4a5e7719c9b613e450052d9bd93\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkBatchWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a7143c4a5e7719c9b613e450052d9bd93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18b9738f703e4cc7db342550e9109e43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18b9738f703e4cc7db342550e9109e43\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkRealtimeWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a18b9738f703e4cc7db342550e9109e43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:ade31cb99ea4151d64b6778ed432aeab5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade31cb99ea4151d64b6778ed432aeab5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triggerCallbacks</b> (CallbackArgs... args) const</td></tr>\n<tr class=\"separator:ade31cb99ea4151d64b6778ed432aeab5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a061a86e976466e42caa64efe851e8901\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a061a86e976466e42caa64efe851e8901\"></a>\nstd::unordered_set&lt; Callback &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>callbacks_</b></td></tr>\n<tr class=\"separator:a061a86e976466e42caa64efe851e8901\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"callback__host_8h_source.html\">callback_host.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1RealtimeWorker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::RealtimeWorker&lt; DataType &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addTask</b>(const DataType &amp;item) (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>printBacklogWarningsWithTag</b>(const std::string &amp;tag) (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>process</b>(const DataType &amp;item)=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>queue_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>RealtimeWorker</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>shutdown</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>thread_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>workLoop</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~RealtimeWorker</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1RealtimeWorker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rpg_common::RealtimeWorker&lt; DataType &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrpg__common_1_1RealtimeWorker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::RealtimeWorker&lt; DataType &gt; Class Template Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa7df69bb23004468d81660d3fcab82cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7df69bb23004468d81660d3fcab82cb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addTask</b> (const DataType &amp;item)</td></tr>\n<tr class=\"separator:aa7df69bb23004468d81660d3fcab82cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbd01662c478b9173717fa51f0f40346\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acbd01662c478b9173717fa51f0f40346\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>shutdown</b> ()</td></tr>\n<tr class=\"separator:acbd01662c478b9173717fa51f0f40346\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5b2badfe462e439a492623933655db2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac5b2badfe462e439a492623933655db2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>printBacklogWarningsWithTag</b> (const std::string &amp;tag)</td></tr>\n<tr class=\"separator:ac5b2badfe462e439a492623933655db2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:af8221971fbb76ad843c6909022c44a94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af8221971fbb76ad843c6909022c44a94\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>process</b> (const DataType &amp;item)=0</td></tr>\n<tr class=\"separator:af8221971fbb76ad843c6909022c44a94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad09284266a6c2d9787cf9b8cb920bbdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad09284266a6c2d9787cf9b8cb920bbdf\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>workLoop</b> ()</td></tr>\n<tr class=\"separator:ad09284266a6c2d9787cf9b8cb920bbdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a57181dbd5e3053d7ce2d0b8e137b45f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a57181dbd5e3053d7ce2d0b8e137b45f7\"></a>\n<a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a>&lt; DataType &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>queue_</b></td></tr>\n<tr class=\"separator:a57181dbd5e3053d7ce2d0b8e137b45f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a870f17fe74d63786ca2dc24f9f5419ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a870f17fe74d63786ca2dc24f9f5419ee\"></a>\nstd::thread&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>thread_</b></td></tr>\n<tr class=\"separator:a870f17fe74d63786ca2dc24f9f5419ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"realtime__worker_8h_source.html\">realtime_worker.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1ThreadSafeQueue-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::ThreadSafeQueue&lt; DataType &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backlog_warn_tag_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cv_pop_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cv_push_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>data_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mutex_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>printBacklogWarningsWithTag</b>(const std::string &amp;tag) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>push</b>(const DataType &amp;item) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>shutdown</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>shutdown_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>skipToLatest</b>(DataType *item) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ThreadSafeQueue</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tryPopNow</b>(DataType *item) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>wait</b>(std::unique_lock&lt; std::mutex &gt; *lock) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>waitAndPop</b>(DataType *item) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>waitAndPopAvailable</b>(std::vector&lt; DataType &gt; *items) (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>waitUntilEmpty</b>() (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>warn_if_has_backlog_</b> (defined in <a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1ThreadSafeQueue.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rpg_common::ThreadSafeQueue&lt; DataType &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrpg__common_1_1ThreadSafeQueue-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::ThreadSafeQueue&lt; DataType &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5ec00d25e3c8788b291aa11119d7750f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5ec00d25e3c8788b291aa11119d7750f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push</b> (const DataType &amp;item)</td></tr>\n<tr class=\"separator:a5ec00d25e3c8788b291aa11119d7750f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27d740a7a876e68b17e06321c88aec97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a27d740a7a876e68b17e06321c88aec97\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tryPopNow</b> (DataType *item)</td></tr>\n<tr class=\"separator:a27d740a7a876e68b17e06321c88aec97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3abd9e52d64c2d872f29994527489771\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3abd9e52d64c2d872f29994527489771\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>waitAndPop</b> (DataType *item)</td></tr>\n<tr class=\"separator:a3abd9e52d64c2d872f29994527489771\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab181817a0c2ce948b6877ca0eac4179\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab181817a0c2ce948b6877ca0eac4179\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>skipToLatest</b> (DataType *item)</td></tr>\n<tr class=\"separator:aab181817a0c2ce948b6877ca0eac4179\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ec600f5d11bb82cd9c56dd7ef5bd8a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ec600f5d11bb82cd9c56dd7ef5bd8a9\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>waitAndPopAvailable</b> (std::vector&lt; DataType &gt; *items)</td></tr>\n<tr class=\"separator:a2ec600f5d11bb82cd9c56dd7ef5bd8a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c8da5a65e72b50a8a9c590cd97a0796\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c8da5a65e72b50a8a9c590cd97a0796\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>shutdown</b> ()</td></tr>\n<tr class=\"separator:a0c8da5a65e72b50a8a9c590cd97a0796\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3beb0bac83a6269094af8e6633609a18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3beb0bac83a6269094af8e6633609a18\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>printBacklogWarningsWithTag</b> (const std::string &amp;tag)</td></tr>\n<tr class=\"separator:a3beb0bac83a6269094af8e6633609a18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e6af975188eb1f5ac1677cee392d85c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6e6af975188eb1f5ac1677cee392d85c\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>waitUntilEmpty</b> ()</td></tr>\n<tr class=\"separator:a6e6af975188eb1f5ac1677cee392d85c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a0acac83a3822917d7290cec983a5631c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0acac83a3822917d7290cec983a5631c\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>wait</b> (std::unique_lock&lt; std::mutex &gt; *lock)</td></tr>\n<tr class=\"separator:a0acac83a3822917d7290cec983a5631c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a4903f445349e1e68ee85bcfdaeef7433\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4903f445349e1e68ee85bcfdaeef7433\"></a>\nstd::queue&lt; DataType &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>data_</b></td></tr>\n<tr class=\"separator:a4903f445349e1e68ee85bcfdaeef7433\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ae70d89d1c6b5daa511eb7e318240ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3ae70d89d1c6b5daa511eb7e318240ac\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_</b></td></tr>\n<tr class=\"separator:a3ae70d89d1c6b5daa511eb7e318240ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcee7303e765ff53bdad1d74e52f6bbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adcee7303e765ff53bdad1d74e52f6bbe\"></a>\nstd::condition_variable&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cv_push_</b></td></tr>\n<tr class=\"separator:adcee7303e765ff53bdad1d74e52f6bbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83aa380c1c54b71169919fb575338725\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a83aa380c1c54b71169919fb575338725\"></a>\nstd::condition_variable&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cv_pop_</b></td></tr>\n<tr class=\"separator:a83aa380c1c54b71169919fb575338725\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3e71d69fa3dacfcbed5ba298383bd6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab3e71d69fa3dacfcbed5ba298383bd6b\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>warn_if_has_backlog_</b></td></tr>\n<tr class=\"separator:ab3e71d69fa3dacfcbed5ba298383bd6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7568dc614f2b578e5e91ed46f3d55319\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7568dc614f2b578e5e91ed46f3d55319\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backlog_warn_tag_</b></td></tr>\n<tr class=\"separator:a7568dc614f2b578e5e91ed46f3d55319\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a690bcadbf40d53b655f4e2bebea56196\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a690bcadbf40d53b655f4e2bebea56196\"></a>\nvolatile bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>shutdown_</b></td></tr>\n<tr class=\"separator:a690bcadbf40d53b655f4e2bebea56196\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"threadsafe__queue_8h_source.html\">threadsafe_queue.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1WorkerBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::WorkerBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isPaused</b>() const =0 (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pause</b>()=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resume</b>()=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>shutdown</b>()=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>softShutdown</b>()=0 (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~WorkerBase</b>()=default (defined in <a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1WorkerBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rpg_common::WorkerBase Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rpg_common</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classrpg__common_1_1WorkerBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common::WorkerBase Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rpg_common::WorkerBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrpg__common_1_1WorkerBase__inherit__graph.png\" border=\"0\" usemap=\"#rpg__common_1_1WorkerBase_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"rpg__common_1_1WorkerBase_inherit__map\" id=\"rpg__common_1_1WorkerBase_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1BatchWorker.html\" title=\"rpg_common::BatchWorker\\l\\&lt; DataType \\&gt;\" alt=\"\" coords=\"5,80,187,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4663e1b98ae6a70e63e177c009ad8c2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4663e1b98ae6a70e63e177c009ad8c2a\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>shutdown</b> ()=0</td></tr>\n<tr class=\"separator:a4663e1b98ae6a70e63e177c009ad8c2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34ac856a9c183dbb622a726425bc0f31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34ac856a9c183dbb622a726425bc0f31\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>softShutdown</b> ()=0</td></tr>\n<tr class=\"separator:a34ac856a9c183dbb622a726425bc0f31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67cc3631499abb338b6513ee869e819c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a67cc3631499abb338b6513ee869e819c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pause</b> ()=0</td></tr>\n<tr class=\"separator:a67cc3631499abb338b6513ee869e819c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fecaa8ac5e844f895fbb1413dbed4f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2fecaa8ac5e844f895fbb1413dbed4f4\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isPaused</b> () const =0</td></tr>\n<tr class=\"separator:a2fecaa8ac5e844f895fbb1413dbed4f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae54b9177f0e67e0be93b1410d127fe95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae54b9177f0e67e0be93b1410d127fe95\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resume</b> ()=0</td></tr>\n<tr class=\"separator:ae54b9177f0e67e0be93b1410d127fe95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"worker__base_8h_source.html\">worker_base.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrpg__common_1_1WorkerBase__inherit__graph.md5",
    "content": "93790ee9534611cd2fdffdf0adc24030"
  },
  {
    "path": "docs/classrqt__evo_1_1evo_1_1Evo-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_evo</b></li><li class=\"navelem\"><b>evo</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">Evo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo.evo.Evo Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, context) (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_parse_args</b>(self, argv) (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_widget</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">rqt_evo.evo.Evo</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__evo_1_1evo_1_1Evo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_evo.evo.Evo Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_evo</b></li><li class=\"navelem\"><b>evo</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\">Evo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrqt__evo_1_1evo_1_1Evo-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo.evo.Evo Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rqt_evo.evo.Evo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__evo_1_1evo_1_1Evo__inherit__graph.png\" border=\"0\" usemap=\"#rqt__evo_8evo_8Evo_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for rqt_evo.evo.Evo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__evo_1_1evo_1_1Evo__coll__graph.png\" border=\"0\" usemap=\"#rqt__evo_8evo_8Evo_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a02e5d4662c92174aee4f88ab778ee2a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a02e5d4662c92174aee4f88ab778ee2a7\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, context)</td></tr>\n<tr class=\"separator:a02e5d4662c92174aee4f88ab778ee2a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a6515e66a8cb2efc8d6e65aff5d2261f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6515e66a8cb2efc8d6e65aff5d2261f5\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_parse_args</b> (self, argv)</td></tr>\n<tr class=\"separator:a6515e66a8cb2efc8d6e65aff5d2261f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a206df0db3a304ea7ce5af251868cf12f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a206df0db3a304ea7ce5af251868cf12f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_widget</b></td></tr>\n<tr class=\"separator:a206df0db3a304ea7ce5af251868cf12f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><pre class=\"fragment\">Subclass of Plugin to display EVO status\n</pre> </div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>rqt_evo/src/rqt_evo/evo.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__evo_1_1evo_1_1Evo__coll__graph.md5",
    "content": "c26282e32d833c68025a977fb58e37db"
  },
  {
    "path": "docs/classrqt__evo_1_1evo_1_1Evo__inherit__graph.md5",
    "content": "b523f5af7565b8703a86638c3d17e704"
  },
  {
    "path": "docs/classrqt__evo_1_1evo__widget_1_1EvoWidget-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_evo</b></li><li class=\"navelem\"><b>evo_widget</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">EvoWidget</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo.evo_widget.EvoWidget Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, evo_namespace='evo') (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_evo_namespace</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_num_received_msgs</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194\">_on_topic_changed</a>(self, topic)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_publisher</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_publisher_copilot</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_subscriber</b> (defined in <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43\">on_bootstrap_button_pressed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3\">on_copilot_state_changed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2\">on_map_expansion_changed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1\">on_start_button_pressed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c\">on_switch_button_pressed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048\">on_update_button_pressed</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4\">register</a>(self, evo_namespace)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1\">send_command</a>(self, cmd)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c\">unregister</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__evo_1_1evo__widget_1_1EvoWidget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_evo.evo_widget.EvoWidget Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_evo</b></li><li class=\"navelem\"><b>evo_widget</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\">EvoWidget</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-static-attribs\">Static Private Attributes</a> &#124;\n<a href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo.evo_widget.EvoWidget Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rqt_evo.evo_widget.EvoWidget:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__evo_1_1evo__widget_1_1EvoWidget__inherit__graph.png\" border=\"0\" usemap=\"#rqt__evo_8evo__widget_8EvoWidget_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for rqt_evo.evo_widget.EvoWidget:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__evo_1_1evo__widget_1_1EvoWidget__coll__graph.png\" border=\"0\" usemap=\"#rqt__evo_8evo__widget_8EvoWidget_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aed1db152f2498ca627c0b389ec453e95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed1db152f2498ca627c0b389ec453e95\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, evo_namespace='evo')</td></tr>\n<tr class=\"separator:aed1db152f2498ca627c0b389ec453e95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af355ea6411cb00c0ce07a4e5dc5fb4e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4\">register</a> (self, evo_namespace)</td></tr>\n<tr class=\"separator:af355ea6411cb00c0ce07a4e5dc5fb4e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e9e09d0f747eb6b0b0c093ed7ef979c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c\">unregister</a> (self)</td></tr>\n<tr class=\"separator:a8e9e09d0f747eb6b0b0c093ed7ef979c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88968ed54a1a88cd8686439fd0784d43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43\">on_bootstrap_button_pressed</a> (self)</td></tr>\n<tr class=\"separator:a88968ed54a1a88cd8686439fd0784d43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6df7fdac26609fb4795f46ccb8890cc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1\">on_start_button_pressed</a> (self)</td></tr>\n<tr class=\"separator:a6df7fdac26609fb4795f46ccb8890cc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf9a5ed13c2c464c9cdc74ae9679f048\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048\">on_update_button_pressed</a> (self)</td></tr>\n<tr class=\"separator:abf9a5ed13c2c464c9cdc74ae9679f048\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73cd3180e1c85bd852c719bc5edd580c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c\">on_switch_button_pressed</a> (self)</td></tr>\n<tr class=\"separator:a73cd3180e1c85bd852c719bc5edd580c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7f0ef3ea1c7b6a3ecf632f515588cd2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2\">on_map_expansion_changed</a> (self)</td></tr>\n<tr class=\"separator:ad7f0ef3ea1c7b6a3ecf632f515588cd2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7d73a45236b5ff4627cd9225ddd36c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3\">on_copilot_state_changed</a> (self)</td></tr>\n<tr class=\"separator:ae7d73a45236b5ff4627cd9225ddd36c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ddab9a5859554a633cadd5eb8df1ff1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1\">send_command</a> (self, cmd)</td></tr>\n<tr class=\"separator:a0ddab9a5859554a633cadd5eb8df1ff1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a9c76db512914b8858b2d8f9e8faf6194\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194\">_on_topic_changed</a> (self, topic)</td></tr>\n<tr class=\"separator:a9c76db512914b8858b2d8f9e8faf6194\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-static-attribs\"></a>\nStatic Private Attributes</h2></td></tr>\n<tr class=\"memitem:ab625030695d34578b3167766dc6e748c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab625030695d34578b3167766dc6e748c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_publisher</b> = None</td></tr>\n<tr class=\"separator:ab625030695d34578b3167766dc6e748c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c08fa15e96b3e8a764330dada23704d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c08fa15e96b3e8a764330dada23704d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_subscriber</b> = None</td></tr>\n<tr class=\"separator:a3c08fa15e96b3e8a764330dada23704d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bf64bb38beccc5b4e0fa71fca83f8e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0bf64bb38beccc5b4e0fa71fca83f8e3\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_publisher_copilot</b> = None</td></tr>\n<tr class=\"separator:a0bf64bb38beccc5b4e0fa71fca83f8e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f89dd49ce0fb29c25308966a06a3d96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1f89dd49ce0fb29c25308966a06a3d96\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_num_received_msgs</b> = 0</td></tr>\n<tr class=\"separator:a1f89dd49ce0fb29c25308966a06a3d96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59af09af20c3a26e3ff02adf961082fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a59af09af20c3a26e3ff02adf961082fd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_evo_namespace</b> = None</td></tr>\n<tr class=\"separator:a59af09af20c3a26e3ff02adf961082fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><pre class=\"fragment\">EVO rqt widget actions\n</pre> </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a9c76db512914b8858b2d8f9e8faf6194\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c76db512914b8858b2d8f9e8faf6194\">&#9670;&nbsp;</a></span>_on_topic_changed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget._on_topic_changed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>topic</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Switches publishers namespaces\n</pre> \n</div>\n</div>\n<a id=\"a88968ed54a1a88cd8686439fd0784d43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88968ed54a1a88cd8686439fd0784d43\">&#9670;&nbsp;</a></span>on_bootstrap_button_pressed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_bootstrap_button_pressed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Triggers bootstrap\n</pre> \n</div>\n</div>\n<a id=\"ae7d73a45236b5ff4627cd9225ddd36c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7d73a45236b5ff4627cd9225ddd36c3\">&#9670;&nbsp;</a></span>on_copilot_state_changed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_copilot_state_changed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Switch from bootstrapping tracker to evo tracker\n</pre> \n</div>\n</div>\n<a id=\"ad7f0ef3ea1c7b6a3ecf632f515588cd2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7f0ef3ea1c7b6a3ecf632f515588cd2\">&#9670;&nbsp;</a></span>on_map_expansion_changed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_map_expansion_changed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Switches on and off the map expansion algorithm based on checkbox_map_expansion \n</pre> \n</div>\n</div>\n<a id=\"a6df7fdac26609fb4795f46ccb8890cc1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6df7fdac26609fb4795f46ccb8890cc1\">&#9670;&nbsp;</a></span>on_start_button_pressed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_start_button_pressed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Triggers reset button\n</pre> \n</div>\n</div>\n<a id=\"a73cd3180e1c85bd852c719bc5edd580c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73cd3180e1c85bd852c719bc5edd580c\">&#9670;&nbsp;</a></span>on_switch_button_pressed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_switch_button_pressed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Turns on tracking thread\n</pre> \n</div>\n</div>\n<a id=\"abf9a5ed13c2c464c9cdc74ae9679f048\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf9a5ed13c2c464c9cdc74ae9679f048\">&#9670;&nbsp;</a></span>on_update_button_pressed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.on_update_button_pressed </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Triggers map update\n</pre> \n</div>\n</div>\n<a id=\"af355ea6411cb00c0ce07a4e5dc5fb4e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af355ea6411cb00c0ce07a4e5dc5fb4e4\">&#9670;&nbsp;</a></span>register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.register </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>evo_namespace</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Subscribes to ROS Info topic and registers callbacks\n</pre> \n</div>\n</div>\n<a id=\"a0ddab9a5859554a633cadd5eb8df1ff1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ddab9a5859554a633cadd5eb8df1ff1\">&#9670;&nbsp;</a></span>send_command()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.send_command </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>cmd</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Utils to send remote command\n</pre> \n</div>\n</div>\n<a id=\"a8e9e09d0f747eb6b0b0c093ed7ef979c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e9e09d0f747eb6b0b0c093ed7ef979c\">&#9670;&nbsp;</a></span>unregister()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def rqt_evo.evo_widget.EvoWidget.unregister </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Unregisters publishers\n</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>rqt_evo/src/rqt_evo/evo_widget.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__evo_1_1evo__widget_1_1EvoWidget__coll__graph.md5",
    "content": "1dd1a42559e04847c222250a78305607"
  },
  {
    "path": "docs/classrqt__evo_1_1evo__widget_1_1EvoWidget__inherit__graph.md5",
    "content": "fe9dcd539ad08813dab6c67b8dbdfd82"
  },
  {
    "path": "docs/classrqt__svo_1_1svo_1_1Svo-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_svo</b></li><li class=\"navelem\"><b>svo</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">Svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo.svo.Svo Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, context) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_parse_args</b>(self, argv) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_widget</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>restore_settings</b>(self, plugin_settings, instance_settings) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>save_settings</b>(self, plugin_settings, instance_settings) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">rqt_svo.svo.Svo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__svo_1_1svo_1_1Svo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_svo.svo.Svo Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_svo</b></li><li class=\"navelem\"><b>svo</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\">Svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classrqt__svo_1_1svo_1_1Svo-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo.svo.Svo Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rqt_svo.svo.Svo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__svo_1_1svo_1_1Svo__inherit__graph.png\" border=\"0\" usemap=\"#rqt__svo_8svo_8Svo_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for rqt_svo.svo.Svo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__svo_1_1svo_1_1Svo__coll__graph.png\" border=\"0\" usemap=\"#rqt__svo_8svo_8Svo_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9ddd0ddc50c3969b4b8576712d024764\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ddd0ddc50c3969b4b8576712d024764\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, context)</td></tr>\n<tr class=\"separator:a9ddd0ddc50c3969b4b8576712d024764\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55975cc766d4aea4ca8868edd0590ffa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55975cc766d4aea4ca8868edd0590ffa\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>save_settings</b> (self, plugin_settings, instance_settings)</td></tr>\n<tr class=\"separator:a55975cc766d4aea4ca8868edd0590ffa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04a41fe5b3b5b77775e6bc2b63b60f33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a04a41fe5b3b5b77775e6bc2b63b60f33\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>restore_settings</b> (self, plugin_settings, instance_settings)</td></tr>\n<tr class=\"separator:a04a41fe5b3b5b77775e6bc2b63b60f33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a3610d4c455f8e40baa4e772fc8c53265\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3610d4c455f8e40baa4e772fc8c53265\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_parse_args</b> (self, argv)</td></tr>\n<tr class=\"separator:a3610d4c455f8e40baa4e772fc8c53265\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a43a9360d48d0c1b402c7385d990a5487\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43a9360d48d0c1b402c7385d990a5487\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_widget</b></td></tr>\n<tr class=\"separator:a43a9360d48d0c1b402c7385d990a5487\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><pre class=\"fragment\">Subclass of Plugin to display SVO status\n</pre> </div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>rqt_svo/src/rqt_svo/svo.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__svo_1_1svo_1_1Svo__coll__graph.md5",
    "content": "5cdb2dcd7aca1a23ac0bc6fe160e86fc"
  },
  {
    "path": "docs/classrqt__svo_1_1svo_1_1Svo__inherit__graph.md5",
    "content": "81c5aa22e117f67c6521cfcb568091bd"
  },
  {
    "path": "docs/classrqt__svo_1_1svo__widget_1_1SvoWidget-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_svo</b></li><li class=\"navelem\"><b>svo_widget</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">SvoWidget</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo.svo_widget.SvoWidget Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, svo_namespace='svo') (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_last_info_msg</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_num_received_msgs</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_on_topic_changed</b>(self, topic) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_publisher</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_subscriber</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_svo_namespace</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_update_info_timer</b> (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>info_cb</b>(self, msg) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>on_quit_button_pressed</b>(self) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>on_reset_button_pressed</b>(self) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>on_start_button_pressed</b>(self) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>register</b>(self, svo_namespace) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>send_command</b>(self, cmd) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>unregister</b>(self) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>update_info</b>(self) (defined in <a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__svo_1_1svo__widget_1_1SvoWidget.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_svo.svo_widget.SvoWidget Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>rqt_svo</b></li><li class=\"navelem\"><b>svo_widget</b></li><li class=\"navelem\"><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\">SvoWidget</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"#pri-static-attribs\">Static Private Attributes</a> &#124;\n<a href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo.svo_widget.SvoWidget Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for rqt_svo.svo_widget.SvoWidget:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__svo_1_1svo__widget_1_1SvoWidget__inherit__graph.png\" border=\"0\" usemap=\"#rqt__svo_8svo__widget_8SvoWidget_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for rqt_svo.svo_widget.SvoWidget:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classrqt__svo_1_1svo__widget_1_1SvoWidget__coll__graph.png\" border=\"0\" usemap=\"#rqt__svo_8svo__widget_8SvoWidget_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a261ed9463f8e2885783835c570010ebe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a261ed9463f8e2885783835c570010ebe\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, svo_namespace='svo')</td></tr>\n<tr class=\"separator:a261ed9463f8e2885783835c570010ebe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3fd97257bb37bd36da56a97a0f93e608\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3fd97257bb37bd36da56a97a0f93e608\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>register</b> (self, svo_namespace)</td></tr>\n<tr class=\"separator:a3fd97257bb37bd36da56a97a0f93e608\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33cbcc787da6738b2b406d13970bb73b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a33cbcc787da6738b2b406d13970bb73b\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>unregister</b> (self)</td></tr>\n<tr class=\"separator:a33cbcc787da6738b2b406d13970bb73b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa393288708639e14143a4fcda35534c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa393288708639e14143a4fcda35534c9\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>info_cb</b> (self, msg)</td></tr>\n<tr class=\"separator:aa393288708639e14143a4fcda35534c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76a458cc5444e069d187862e97b4512e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a76a458cc5444e069d187862e97b4512e\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update_info</b> (self)</td></tr>\n<tr class=\"separator:a76a458cc5444e069d187862e97b4512e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb150f5f80a137c03b64efd206fd43e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb150f5f80a137c03b64efd206fd43e8\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>on_start_button_pressed</b> (self)</td></tr>\n<tr class=\"separator:acb150f5f80a137c03b64efd206fd43e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a329650eb1ff76fde528b6d1fdb8988ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a329650eb1ff76fde528b6d1fdb8988ae\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>on_reset_button_pressed</b> (self)</td></tr>\n<tr class=\"separator:a329650eb1ff76fde528b6d1fdb8988ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7c0c91cb8dbd6205d9a37e51521e033\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7c0c91cb8dbd6205d9a37e51521e033\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>on_quit_button_pressed</b> (self)</td></tr>\n<tr class=\"separator:af7c0c91cb8dbd6205d9a37e51521e033\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab34c07f19ef2765ec97fe264e893dff0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab34c07f19ef2765ec97fe264e893dff0\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>send_command</b> (self, cmd)</td></tr>\n<tr class=\"separator:ab34c07f19ef2765ec97fe264e893dff0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:abe899def587ba9e4c677d26d32441c11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abe899def587ba9e4c677d26d32441c11\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_on_topic_changed</b> (self, topic)</td></tr>\n<tr class=\"separator:abe899def587ba9e4c677d26d32441c11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a765bfe0fda1a2db900228fc483405932\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a765bfe0fda1a2db900228fc483405932\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_update_info_timer</b></td></tr>\n<tr class=\"separator:a765bfe0fda1a2db900228fc483405932\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-static-attribs\"></a>\nStatic Private Attributes</h2></td></tr>\n<tr class=\"memitem:a5250846fb587beb0b46d4006d1cc3ae8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5250846fb587beb0b46d4006d1cc3ae8\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_last_info_msg</b> = Info()</td></tr>\n<tr class=\"separator:a5250846fb587beb0b46d4006d1cc3ae8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7604d03c6f9ffb5ea77f551e7ca682dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7604d03c6f9ffb5ea77f551e7ca682dc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_publisher</b> = None</td></tr>\n<tr class=\"separator:a7604d03c6f9ffb5ea77f551e7ca682dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65cab88ff14ef018e20006995c535aa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65cab88ff14ef018e20006995c535aa9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_subscriber</b> = None</td></tr>\n<tr class=\"separator:a65cab88ff14ef018e20006995c535aa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa948a1c353f522b6c746197fe13680c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa948a1c353f522b6c746197fe13680c8\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_num_received_msgs</b> = 0</td></tr>\n<tr class=\"separator:aa948a1c353f522b6c746197fe13680c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65c201fe87c88fd33335483ae0ee3db0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65c201fe87c88fd33335483ae0ee3db0\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_svo_namespace</b> = None</td></tr>\n<tr class=\"separator:a65c201fe87c88fd33335483ae0ee3db0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>rqt_svo/src/rqt_svo/svo_widget.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classrqt__svo_1_1svo__widget_1_1SvoWidget__coll__graph.md5",
    "content": "fe451761884cf13f28797224ef9f99f4"
  },
  {
    "path": "docs/classrqt__svo_1_1svo__widget_1_1SvoWidget__inherit__graph.md5",
    "content": "6dab408108ed58985fd940e8070a2a25"
  },
  {
    "path": "docs/classsvo_1_1AbstractBundleAdjustment-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractBundleAdjustment Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractBundleAdjustment</b>(const AbstractBundleAdjustment &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">bundleAdjustment</a>(const FrameBundlePtr &amp;frame_bundle)=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">loadMapFromBundleAdjustment</a>(const FrameBundlePtr &amp;new_frames, const FrameBundlePtr &amp;last_frames, const MapPtr &amp;map)=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const AbstractBundleAdjustment &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">quitThread</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">reset</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">startThread</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractBundleAdjustment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractBundleAdjustment.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::AbstractBundleAdjustment Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1AbstractBundleAdjustment-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractBundleAdjustment Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>EXPERIMENTAL Defines interface for various bundle adjustment methods.  \n <a href=\"classsvo_1_1AbstractBundleAdjustment.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"abstract__bundle__adjustment_8h_source.html\">abstract_bundle_adjustment.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::AbstractBundleAdjustment:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AbstractBundleAdjustment__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1AbstractBundleAdjustment_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1AbstractBundleAdjustment_inherit__map\" id=\"svo_1_1AbstractBundleAdjustment_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1BackendInterface.html\" title=\"svo::BackendInterface\" alt=\"\" coords=\"32,80,185,107\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a6cf4bafd0cee81fe603c46bcae142113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cf4bafd0cee81fe603c46bcae142113\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a6cf4bafd0cee81fe603c46bcae142113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a35e01f583c981f080f5145d1ef48eab2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a35e01f583c981f080f5145d1ef48eab2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a> ()</td></tr>\n<tr class=\"memdesc:a35e01f583c981f080f5145d1ef48eab2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a35e01f583c981f080f5145d1ef48eab2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97296d3a9b04ff6e3a087843253dd59f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a97296d3a9b04ff6e3a087843253dd59f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractBundleAdjustment</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a97296d3a9b04ff6e3a087843253dd59f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab999f4f0810f8d01d05d1f98376573c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab999f4f0810f8d01d05d1f98376573c7\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;)=delete</td></tr>\n<tr class=\"separator:ab999f4f0810f8d01d05d1f98376573c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad40025b532afd75ecfc2b0b5a71e0c4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad40025b532afd75ecfc2b0b5a71e0c4b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">bundleAdjustment</a> (const FrameBundlePtr &amp;frame_bundle)=0</td></tr>\n<tr class=\"memdesc:ad40025b532afd75ecfc2b0b5a71e0c4b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Invoke bundle adjustment. <br /></td></tr>\n<tr class=\"separator:ad40025b532afd75ecfc2b0b5a71e0c4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a355647c9d3d43586cd285825e1422227\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a355647c9d3d43586cd285825e1422227\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">loadMapFromBundleAdjustment</a> (const FrameBundlePtr &amp;new_frames, const FrameBundlePtr &amp;last_frames, const MapPtr &amp;map)=0</td></tr>\n<tr class=\"memdesc:a355647c9d3d43586cd285825e1422227\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update map with results from bundle adjustment. <br /></td></tr>\n<tr class=\"separator:a355647c9d3d43586cd285825e1422227\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acda25a78c893ab4eb9cb509b4e85e6fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acda25a78c893ab4eb9cb509b4e85e6fc\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">reset</a> ()=0</td></tr>\n<tr class=\"memdesc:acda25a78c893ab4eb9cb509b4e85e6fc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset bundle adjustment. <br /></td></tr>\n<tr class=\"separator:acda25a78c893ab4eb9cb509b4e85e6fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04334dbebb83a25bb96ffccb23be155b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a04334dbebb83a25bb96ffccb23be155b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">startThread</a> ()=0</td></tr>\n<tr class=\"memdesc:a04334dbebb83a25bb96ffccb23be155b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bundle adjustment can run completely in parallel. Start the thread to do so. <br /></td></tr>\n<tr class=\"separator:a04334dbebb83a25bb96ffccb23be155b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66493d4508f097b99b90c241db10db0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a66493d4508f097b99b90c241db10db0b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">quitThread</a> ()=0</td></tr>\n<tr class=\"memdesc:a66493d4508f097b99b90c241db10db0b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop and join the bundle adjustment thread. <br /></td></tr>\n<tr class=\"separator:a66493d4508f097b99b90c241db10db0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>EXPERIMENTAL Defines interface for various bundle adjustment methods. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"abstract__bundle__adjustment_8h_source.html\">abstract_bundle_adjustment.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractBundleAdjustment__inherit__graph.md5",
    "content": "6bd3b4e81dc925dfbd0ddb3ff60209d8"
  },
  {
    "path": "docs/classsvo_1_1AbstractDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec)=0 (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::AbstractDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1AbstractDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractDetector Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>All detectors should derive from this abstract class.  \n <a href=\"classsvo_1_1AbstractDetector.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::AbstractDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AbstractDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1AbstractDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1AbstractDetector_inherit__map\" id=\"svo_1_1AbstractDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AllPixelsDetector.html\" title=\"Dummy detector that selects all pixels. \" alt=\"\" coords=\"223,5,375,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1CannyDetector.html\" title=\"svo::CannyDetector\" alt=\"\" coords=\"229,56,368,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FastDetector.html\" title=\"FAST detector by Edward Rosten. \" alt=\"\" coords=\"235,107,362,133\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1FastGradDetector.html\" title=\"svo::FastGradDetector\" alt=\"\" coords=\"221,157,376,184\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classsvo_1_1GradientDetector.html\" title=\"svo::GradientDetector\" alt=\"\" coords=\"223,208,374,235\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classsvo_1_1GradientDetectorGrid.html\" title=\"svo::GradientDetectorGrid\" alt=\"\" coords=\"211,259,386,285\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\" title=\"svo::GradientHuangMumford\\lDetector\" alt=\"\" coords=\"204,310,393,351\"/>\n<area shape=\"rect\" id=\"node9\" href=\"classsvo_1_1SobelDetector.html\" title=\"svo::SobelDetector\" alt=\"\" coords=\"231,376,366,403\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::AbstractDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AbstractDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1AbstractDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1AbstractDetector_coll__map\" id=\"svo_1_1AbstractDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2a8334aca2f53f4fbb6777971922f58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad2a8334aca2f53f4fbb6777971922f58\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec)=0</td></tr>\n<tr class=\"separator:ad2a8334aca2f53f4fbb6777971922f58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>All detectors should derive from this abstract class. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractDetector__coll__graph.md5",
    "content": "56d95e52737667e06748ef65c61b7516"
  },
  {
    "path": "docs/classsvo_1_1AbstractDetector__inherit__graph.md5",
    "content": "f949580f23e2f0ebb420623458254878"
  },
  {
    "path": "docs/classsvo_1_1AbstractInitialization-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractInitialization Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur)=0 (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractInitialization.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::AbstractInitialization Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1AbstractInitialization-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AbstractInitialization Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Bootstrapping the map from the first two views.  \n <a href=\"classsvo_1_1AbstractInitialization.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::AbstractInitialization:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AbstractInitialization__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1AbstractInitialization_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1AbstractInitialization_inherit__map\" id=\"svo_1_1AbstractInitialization_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1ArrayInitGeometric.html\" title=\"svo::ArrayInitGeometric\" alt=\"\" coords=\"229,5,389,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1ArrayInitOptimization.html\" title=\"svo::ArrayInitOptimization\" alt=\"\" coords=\"223,56,396,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FivePointInit.html\" title=\"Tracks features using KLT and then estimate the relative pose using 5pt RANSAC. \" alt=\"\" coords=\"247,107,371,133\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1HomographyInit.html\" title=\"Tracks features using Lucas&#45;Kanade tracker and then estimates a homography. \" alt=\"\" coords=\"238,157,381,184\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classsvo_1_1OneShotInit.html\" title=\"svo::OneShotInit\" alt=\"\" coords=\"249,208,369,235\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classsvo_1_1StereoInit.html\" title=\"svo::StereoInit\" alt=\"\" coords=\"256,259,363,285\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classsvo_1_1TwoPointInit.html\" title=\"svo::TwoPointInit\" alt=\"\" coords=\"247,309,371,336\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::AbstractInitialization:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AbstractInitialization__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1AbstractInitialization_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1AbstractInitialization_coll__map\" id=\"svo_1_1AbstractInitialization_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe70b8dd4ed5bc4678e16e5a5e575e1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe70b8dd4ed5bc4678e16e5a5e575e1b\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur)=0</td></tr>\n<tr class=\"separator:afe70b8dd4ed5bc4678e16e5a5e575e1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Bootstrapping the map from the first two views. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AbstractInitialization__coll__graph.md5",
    "content": "79582d5d8b5332308665b583c8d84ede"
  },
  {
    "path": "docs/classsvo_1_1AbstractInitialization__inherit__graph.md5",
    "content": "823d9e20e1bdacc3dbb7fc0940c321b9"
  },
  {
    "path": "docs/classsvo_1_1AllPixelsDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AllPixelsDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">svo::AllPixelsDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">detect</a>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">svo::AllPixelsDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~AllPixelsDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">svo::AllPixelsDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">svo::AllPixelsDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AllPixelsDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::AllPixelsDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1AllPixelsDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::AllPixelsDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Dummy detector that selects all pixels.  \n <a href=\"classsvo_1_1AllPixelsDetector.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::AllPixelsDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AllPixelsDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1AllPixelsDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1AllPixelsDetector_inherit__map\" id=\"svo_1_1AllPixelsDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"6,5,157,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::AllPixelsDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1AllPixelsDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1AllPixelsDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1AllPixelsDetector_coll__map\" id=\"svo_1_1AllPixelsDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a73fee1dd4d76e3f0885c9bbaa2cd73fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">detect</a> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:a73fee1dd4d76e3f0885c9bbaa2cd73fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Dummy detector that selects all pixels. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a73fee1dd4d76e3f0885c9bbaa2cd73fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">&#9670;&nbsp;</a></span>detect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::AllPixelsDetector::detect </td>\n          <td>(</td>\n          <td class=\"paramtype\">const ImgPyr &amp;&#160;</td>\n          <td class=\"paramname\"><em>img_pyr</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>mask</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const size_t&#160;</td>\n          <td class=\"paramname\"><em>max_n_features</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Keypoints &amp;&#160;</td>\n          <td class=\"paramname\"><em>px_vec</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Scores &amp;&#160;</td>\n          <td class=\"paramname\"><em>score_vec</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Levels &amp;&#160;</td>\n          <td class=\"paramname\"><em>level_vec</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Gradients &amp;&#160;</td>\n          <td class=\"paramname\"><em>grad_vec</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">FeatureTypes &amp;&#160;</td>\n          <td class=\"paramname\"><em>types_vec</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000005\">Todo:</a></b></dt><dd>(MWE) kept the old version around as there might be changes still and we want to have the same structure and workflow within the detectors. </dd></dl>\n\n<p>Implements <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1AllPixelsDetector__coll__graph.md5",
    "content": "0b282fd4601ce1ec28f63de42a3dc8ea"
  },
  {
    "path": "docs/classsvo_1_1AllPixelsDetector__inherit__graph.md5",
    "content": "685dced36567bdc7e6379258c26113f6"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitGeometric-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ArrayInitGeometric Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~ArrayInitGeometric</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitGeometric.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ArrayInitGeometric Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1ArrayInitGeometric-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ArrayInitGeometric Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::ArrayInitGeometric:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ArrayInitGeometric__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1ArrayInitGeometric_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1ArrayInitGeometric_inherit__map\" id=\"svo_1_1ArrayInitGeometric_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::ArrayInitGeometric:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ArrayInitGeometric__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ArrayInitGeometric_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1ArrayInitGeometric_coll__map\" id=\"svo_1_1ArrayInitGeometric_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a88c75c4daa4ea57bc49c3aa2ceea0e20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88c75c4daa4ea57bc49c3aa2ceea0e20\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:a88c75c4daa4ea57bc49c3aa2ceea0e20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitGeometric__coll__graph.md5",
    "content": "39ec236e64772e1e1a481bdd42ed7105"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitGeometric__inherit__graph.md5",
    "content": "ebbb637cbd13fe2c229b35dc998ad37b"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitOptimization-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ArrayInitOptimization Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~ArrayInitOptimization</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitOptimization.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ArrayInitOptimization Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1ArrayInitOptimization-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ArrayInitOptimization Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::ArrayInitOptimization:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ArrayInitOptimization__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1ArrayInitOptimization_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1ArrayInitOptimization_inherit__map\" id=\"svo_1_1ArrayInitOptimization_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"7,5,177,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::ArrayInitOptimization:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ArrayInitOptimization__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ArrayInitOptimization_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1ArrayInitOptimization_coll__map\" id=\"svo_1_1ArrayInitOptimization_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2b0f0743df84d00f42cacdb11e148000\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b0f0743df84d00f42cacdb11e148000\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:a2b0f0743df84d00f42cacdb11e148000\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitOptimization__coll__graph.md5",
    "content": "d01a12220954716a3217358c2ba636a7"
  },
  {
    "path": "docs/classsvo_1_1ArrayInitOptimization__inherit__graph.md5",
    "content": "87b016ff180792bdca2a24e785a57abf"
  },
  {
    "path": "docs/classsvo_1_1BackendInterface-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendInterface Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractBundleAdjustment</b>(const AbstractBundleAdjustment &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addInertialMeasurementsToGraph</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addInitialStateAndPriorsToGraph</b>(const BundleId &amp;state_index, const ViNodeState &amp;state) (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addVisualMeasurementsToGraph</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>BackendInterface</b>(const BackendInterfaceOptions &amp;options, const GraphManagerOptions &amp;graph_manager_options, const OptimizerBackendOptions &amp;optimizer_options) (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb\">bundleAdjustment</a>(const FrameBundlePtr &amp;frame_bundle) override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>estimator_state_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>graph_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_handler_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>initializeBackend</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>last_added_frame_stamp_ns_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>last_added_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>last_loaded_estimate_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>last_state_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423\">loadMapFromBundleAdjustment</a>(const FrameBundlePtr &amp;new_frames, const FrameBundlePtr &amp;last_frames, const MapPtr &amp;map) override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>num_frames_in_backend_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractBundleAdjustment &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79\">quitThread</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59\">reset</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062\">startThread</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~AbstractBundleAdjustment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~BackendInterface</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">svo::BackendInterface</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendInterface.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BackendInterface Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"classsvo_1_1BackendInterface-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendInterface Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::BackendInterface:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BackendInterface__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1BackendInterface_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1BackendInterface_inherit__map\" id=\"svo_1_1BackendInterface_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractBundleAdjustment.html\" title=\"EXPERIMENTAL Defines interface for various bundle adjustment methods. \" alt=\"\" coords=\"5,5,212,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::BackendInterface:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BackendInterface__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BackendInterface_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1BackendInterface_coll__map\" id=\"svo_1_1BackendInterface_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractBundleAdjustment.html\" title=\"EXPERIMENTAL Defines interface for various bundle adjustment methods. \" alt=\"\" coords=\"5,124,212,151\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1BackendInterfaceOptions.html\" title=\"svo::BackendInterfaceOptions\" alt=\"\" coords=\"443,124,641,151\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1ViNodeState.html\" title=\"svo::ViNodeState\" alt=\"\" coords=\"666,124,791,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a78a7d87f8c5b97d160fcfce88f1d4a1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78a7d87f8c5b97d160fcfce88f1d4a1e\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a78a7d87f8c5b97d160fcfce88f1d4a1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractBundleAdjustment\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractBundleAdjustment')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td></tr>\n<tr class=\"memitem:a6cf4bafd0cee81fe603c46bcae142113 inherit pub_types_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cf4bafd0cee81fe603c46bcae142113\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a6cf4bafd0cee81fe603c46bcae142113 inherit pub_types_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a570067174054048ab9c75c4be467e4aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a570067174054048ab9c75c4be467e4aa\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BackendInterface</b> (const <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a> &amp;options, const <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a> &amp;graph_manager_options, const <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a> &amp;optimizer_options)</td></tr>\n<tr class=\"separator:a570067174054048ab9c75c4be467e4aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7298ee57b411c90c920c5cb6a25959bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7298ee57b411c90c920c5cb6a25959bb\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb\">bundleAdjustment</a> (const FrameBundlePtr &amp;frame_bundle) override</td></tr>\n<tr class=\"memdesc:a7298ee57b411c90c920c5cb6a25959bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Invoke bundle adjustment. <br /></td></tr>\n<tr class=\"separator:a7298ee57b411c90c920c5cb6a25959bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70fc52ababcffd764ad4a155a0e49423\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a70fc52ababcffd764ad4a155a0e49423\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423\">loadMapFromBundleAdjustment</a> (const FrameBundlePtr &amp;new_frames, const FrameBundlePtr &amp;last_frames, const MapPtr &amp;map) override</td></tr>\n<tr class=\"memdesc:a70fc52ababcffd764ad4a155a0e49423\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update map with results from bundle adjustment. <br /></td></tr>\n<tr class=\"separator:a70fc52ababcffd764ad4a155a0e49423\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1490087e25e8111b08d932a84111ba59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1490087e25e8111b08d932a84111ba59\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59\">reset</a> () override</td></tr>\n<tr class=\"memdesc:a1490087e25e8111b08d932a84111ba59\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset bundle adjustment. <br /></td></tr>\n<tr class=\"separator:a1490087e25e8111b08d932a84111ba59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a5516d75f4a8d53c3aa8ed2254db062\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a5516d75f4a8d53c3aa8ed2254db062\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062\">startThread</a> () override</td></tr>\n<tr class=\"memdesc:a3a5516d75f4a8d53c3aa8ed2254db062\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bundle adjustment can run completely in parallel. Start the thread to do so. <br /></td></tr>\n<tr class=\"separator:a3a5516d75f4a8d53c3aa8ed2254db062\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47ff21fba9aa14cea92ffc248fd83a79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47ff21fba9aa14cea92ffc248fd83a79\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79\">quitThread</a> () override</td></tr>\n<tr class=\"memdesc:a47ff21fba9aa14cea92ffc248fd83a79\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop and join the bundle adjustment thread. <br /></td></tr>\n<tr class=\"separator:a47ff21fba9aa14cea92ffc248fd83a79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractBundleAdjustment')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">svo::AbstractBundleAdjustment</a></td></tr>\n<tr class=\"memitem:a35e01f583c981f080f5145d1ef48eab2 inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a35e01f583c981f080f5145d1ef48eab2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">AbstractBundleAdjustment</a> ()</td></tr>\n<tr class=\"memdesc:a35e01f583c981f080f5145d1ef48eab2 inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a35e01f583c981f080f5145d1ef48eab2 inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97296d3a9b04ff6e3a087843253dd59f inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a97296d3a9b04ff6e3a087843253dd59f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractBundleAdjustment</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a97296d3a9b04ff6e3a087843253dd59f inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab999f4f0810f8d01d05d1f98376573c7 inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab999f4f0810f8d01d05d1f98376573c7\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &amp;)=delete</td></tr>\n<tr class=\"separator:ab999f4f0810f8d01d05d1f98376573c7 inherit pub_methods_classsvo_1_1AbstractBundleAdjustment\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a177ca1a369b9fb0b8d894da4a56ebd92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a177ca1a369b9fb0b8d894da4a56ebd92\"></a>\n<a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a177ca1a369b9fb0b8d894da4a56ebd92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79ca328d737ada62e44c71504b841736\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79ca328d737ada62e44c71504b841736\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizer_</b></td></tr>\n<tr class=\"separator:a79ca328d737ada62e44c71504b841736\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0161b8cba44d44d7c9cb34e895423b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae0161b8cba44d44d7c9cb34e895423b4\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>graph_</b></td></tr>\n<tr class=\"separator:ae0161b8cba44d44d7c9cb34e895423b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a2031e2aff1ec0bc429d8ceaa359ea7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a2031e2aff1ec0bc429d8ceaa359ea7\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_handler_</b></td></tr>\n<tr class=\"separator:a6a2031e2aff1ec0bc429d8ceaa359ea7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dc860c2db5a23e725a67d1618cc188d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5dc860c2db5a23e725a67d1618cc188d\"></a>\nEstimatorState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimator_state_</b> = EstimatorState::kUninitialized</td></tr>\n<tr class=\"separator:a5dc860c2db5a23e725a67d1618cc188d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7630230ab718774fd386dd00419887ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7630230ab718774fd386dd00419887ad\"></a>\n<a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_state_</b></td></tr>\n<tr class=\"separator:a7630230ab718774fd386dd00419887ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2af63cfa0d04bd23325d2ad52ad2a459\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2af63cfa0d04bd23325d2ad52ad2a459\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_added_index_</b></td></tr>\n<tr class=\"separator:a2af63cfa0d04bd23325d2ad52ad2a459\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8d98e394690c33b5018d5d0d7b13581\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8d98e394690c33b5018d5d0d7b13581\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_added_frame_stamp_ns_</b></td></tr>\n<tr class=\"separator:aa8d98e394690c33b5018d5d0d7b13581\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77fadda631cc32d5d7b3063a1672207d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77fadda631cc32d5d7b3063a1672207d\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_loaded_estimate_index_</b></td></tr>\n<tr class=\"separator:a77fadda631cc32d5d7b3063a1672207d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7880eb002f240cf2bdabb95e881ca2f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7880eb002f240cf2bdabb95e881ca2f7\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_frames_in_backend_</b> = 0u</td></tr>\n<tr class=\"separator:a7880eb002f240cf2bdabb95e881ca2f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aaaddb51a19ee7558bd21429ea3922220\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaaddb51a19ee7558bd21429ea3922220\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializeBackend</b> ()</td></tr>\n<tr class=\"separator:aaaddb51a19ee7558bd21429ea3922220\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae78f0967362000b510bea688858a36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1ae78f0967362000b510bea688858a36\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addVisualMeasurementsToGraph</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:a1ae78f0967362000b510bea688858a36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ecce9d64630e5dfb42ca891f7e7ca9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ecce9d64630e5dfb42ca891f7e7ca9f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addInertialMeasurementsToGraph</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:a0ecce9d64630e5dfb42ca891f7e7ca9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad88fdb8980c7033e7f46877ff312eefb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad88fdb8980c7033e7f46877ff312eefb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addInitialStateAndPriorsToGraph</b> (const BundleId &amp;state_index, const <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a> &amp;state)</td></tr>\n<tr class=\"separator:ad88fdb8980c7033e7f46877ff312eefb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"backend__interface_8h_source.html\">backend_interface.h</a></li>\n<li>svo_backend/src/backend_interface.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendInterface__coll__graph.md5",
    "content": "b3171ac8c39d545cb0f243bf951c08ce"
  },
  {
    "path": "docs/classsvo_1_1BackendInterface__inherit__graph.md5",
    "content": "bbcdc3968957e1325faf9f06d7420ad5"
  },
  {
    "path": "docs/classsvo_1_1BackendOptimizer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendOptimizer Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BackendOptimizer</b>(const OptimizerBackendOptions &amp;options, std::shared_ptr&lt; GraphManager &gt; &amp;graph) (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>estimate_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>estimate_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>estimate_state_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>graph_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initialize</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isam_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimize</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizeImpl</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimizer_cond_var_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizer_condition_var_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>quit_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>quitThread</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>startThread</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>threadLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~BackendOptimizer</b>() (defined in <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">svo::BackendOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendOptimizer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BackendOptimizer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1BackendOptimizer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendOptimizer Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::BackendOptimizer:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BackendOptimizer__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BackendOptimizer_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1BackendOptimizer_coll__map\" id=\"svo_1_1BackendOptimizer_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1OptimizerBackendOptions.html\" title=\"svo::OptimizerBackendOptions\" alt=\"\" coords=\"5,109,208,136\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a8d2ee6d3aa2dac49cec4e954748adb15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d2ee6d3aa2dac49cec4e954748adb15\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8d2ee6d3aa2dac49cec4e954748adb15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af5316fe6a36ff87e7463bb0d7e83ae9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af5316fe6a36ff87e7463bb0d7e83ae9c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BackendOptimizer</b> (const <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a> &amp;options, std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a> &gt; &amp;graph)</td></tr>\n<tr class=\"separator:af5316fe6a36ff87e7463bb0d7e83ae9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f8f923f4cfd37e1a04e0fa76c2a3597\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6f8f923f4cfd37e1a04e0fa76c2a3597\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:a6f8f923f4cfd37e1a04e0fa76c2a3597\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acad8f2677ec3b7999002f973643203cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acad8f2677ec3b7999002f973643203cc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initialize</b> ()</td></tr>\n<tr class=\"separator:acad8f2677ec3b7999002f973643203cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41599cf88edbaaf31ac61e824f5881b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a41599cf88edbaaf31ac61e824f5881b1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimize</b> ()</td></tr>\n<tr class=\"separator:a41599cf88edbaaf31ac61e824f5881b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b710d9691bc8e39de4a41dddd1b44f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63b710d9691bc8e39de4a41dddd1b44f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startThread</b> ()</td></tr>\n<tr class=\"separator:a63b710d9691bc8e39de4a41dddd1b44f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93facb7cad3096b1b3514c5ab4d734fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93facb7cad3096b1b3514c5ab4d734fc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>quitThread</b> ()</td></tr>\n<tr class=\"separator:a93facb7cad3096b1b3514c5ab4d734fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba075153fff1eb8c8918f3639f31a65c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba075153fff1eb8c8918f3639f31a65c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>threadLoop</b> ()</td></tr>\n<tr class=\"separator:aba075153fff1eb8c8918f3639f31a65c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446189c4b84f19946c099dbb0d51ebb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a446189c4b84f19946c099dbb0d51ebb8\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizeImpl</b> ()</td></tr>\n<tr class=\"separator:a446189c4b84f19946c099dbb0d51ebb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a44955b0db14a46c07260a06f1dd45b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a44955b0db14a46c07260a06f1dd45b65\"></a>\n<a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a44955b0db14a46c07260a06f1dd45b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48b5dd50c7ffe0e922031a52278776ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48b5dd50c7ffe0e922031a52278776ec\"></a>\nstd::shared_ptr&lt; gtsam::ISAM2 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isam_</b></td></tr>\n<tr class=\"separator:a48b5dd50c7ffe0e922031a52278776ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adac5d3b692b6c68b14305e4d85cc38a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adac5d3b692b6c68b14305e4d85cc38a9\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>graph_</b></td></tr>\n<tr class=\"separator:adac5d3b692b6c68b14305e4d85cc38a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae135399469944d8e6033a5c371daaadd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae135399469944d8e6033a5c371daaadd\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimate_mut_</b></td></tr>\n<tr class=\"separator:ae135399469944d8e6033a5c371daaadd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2d32e9e0a7fb39512fd15e837226db2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2d32e9e0a7fb39512fd15e837226db2\"></a>\ngtsam::Values&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimate_</b></td></tr>\n<tr class=\"separator:af2d32e9e0a7fb39512fd15e837226db2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2f8e62955bbf94a74f946d06675dbe6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2f8e62955bbf94a74f946d06675dbe6\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimate_state_index_</b> = -1</td></tr>\n<tr class=\"separator:af2f8e62955bbf94a74f946d06675dbe6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62c91b11c5cc31ca1d58db73d6259026\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62c91b11c5cc31ca1d58db73d6259026\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizer_cond_var_mut_</b></td></tr>\n<tr class=\"separator:a62c91b11c5cc31ca1d58db73d6259026\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfd74d4d43e931447576b04052bcf926\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acfd74d4d43e931447576b04052bcf926\"></a>\nstd::condition_variable&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizer_condition_var_</b></td></tr>\n<tr class=\"separator:acfd74d4d43e931447576b04052bcf926\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a033e6b209e8a61da12324ec1786d0c5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a033e6b209e8a61da12324ec1786d0c5b\"></a>\nstd::shared_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>thread_</b></td></tr>\n<tr class=\"separator:a033e6b209e8a61da12324ec1786d0c5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adaf256eb4b95d3df09237d425113805e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adaf256eb4b95d3df09237d425113805e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>quit_thread_</b> = false</td></tr>\n<tr class=\"separator:adaf256eb4b95d3df09237d425113805e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"backend__optimizer_8h_source.html\">backend_optimizer.h</a></li>\n<li>svo_backend/src/backend_optimizer.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendOptimizer__coll__graph.md5",
    "content": "7f4956f9fd901214dabff132d51e4832"
  },
  {
    "path": "docs/classsvo_1_1BackendVisualizer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendVisualizer Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BackendVisualizer</b>(const std::string &amp;trace_dir, const ros::NodeHandle &amp;pnh) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kWorldFrame</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ofs_covariance_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ofs_states_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pnh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PointCloud</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PointType</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_markers_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_pc_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishPointcloud</b>(const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_dir_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>traceCovariance</b>(const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;C, const int64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tracePose</b>(std::map&lt; int, int64_t, std::less&lt; int &gt;&gt; frameid_timestamp_map, const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>traceStates</b>(const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>vis_scale_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizeFrames</b>(const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizePoints</b>(const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizePoseCovariance</b>(const Transformation &amp;T_W_B, const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;covariance) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizeSmartFactors</b>(const SmartFactorMap &amp;smart_factors) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizeVelocity</b>(const gtsam::Values &amp;values) (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~BackendVisualizer</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">svo::BackendVisualizer</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendVisualizer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BackendVisualizer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classsvo_1_1BackendVisualizer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendVisualizer Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Publish visualisation messages to ROS.  \n <a href=\"classsvo_1_1BackendVisualizer.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"backend__visualizer_8h_source.html\">backend_visualizer.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::BackendVisualizer:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BackendVisualizer__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BackendVisualizer_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a1f2649abb22cd822686de5a25fc3fc91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1f2649abb22cd822686de5a25fc3fc91\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a1f2649abb22cd822686de5a25fc3fc91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbcff768fdf3bdc75e657bcb32fb6c00\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acbcff768fdf3bdc75e657bcb32fb6c00\"></a>\ntypedef pcl::PointXYZ&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointType</b></td></tr>\n<tr class=\"separator:acbcff768fdf3bdc75e657bcb32fb6c00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42f68b486def56ab3599566f41778dc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a42f68b486def56ab3599566f41778dc2\"></a>\ntypedef pcl::PointCloud&lt; PointType &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointCloud</b></td></tr>\n<tr class=\"separator:a42f68b486def56ab3599566f41778dc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac3c1b7112f5a558ef7f6b58e14b87050\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3c1b7112f5a558ef7f6b58e14b87050\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BackendVisualizer</b> (const std::string &amp;trace_dir, const ros::NodeHandle &amp;pnh)</td></tr>\n<tr class=\"separator:ac3c1b7112f5a558ef7f6b58e14b87050\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcf6839f257e4421387f51229cb93659\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adcf6839f257e4421387f51229cb93659\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeFrames</b> (const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:adcf6839f257e4421387f51229cb93659\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acaa11509d9816e531158bae48b709b33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acaa11509d9816e531158bae48b709b33\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizePoints</b> (const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:acaa11509d9816e531158bae48b709b33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a587bc80fcf2cb1c35f3d711405b900e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a587bc80fcf2cb1c35f3d711405b900e2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishPointcloud</b> (const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:a587bc80fcf2cb1c35f3d711405b900e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8788e1a46f8ad0bf568aee6486a78c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac8788e1a46f8ad0bf568aee6486a78c7\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeSmartFactors</b> (const <a class=\"el\" href=\"classgtsam_1_1FastMap.html\">SmartFactorMap</a> &amp;smart_factors)</td></tr>\n<tr class=\"separator:ac8788e1a46f8ad0bf568aee6486a78c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2105a9943a861ec50387029060f0b70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2105a9943a861ec50387029060f0b70\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeVelocity</b> (const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:ac2105a9943a861ec50387029060f0b70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe802bdc03a8ee6aaa6a2632423d85d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe802bdc03a8ee6aaa6a2632423d85d5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizePoseCovariance</b> (const Transformation &amp;T_W_B, const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;covariance)</td></tr>\n<tr class=\"separator:afe802bdc03a8ee6aaa6a2632423d85d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a945b887eb4cdc66a1a23120010be9b1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a945b887eb4cdc66a1a23120010be9b1c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tracePose</b> (std::map&lt; int, int64_t, std::less&lt; int &gt;&gt; frameid_timestamp_map, const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:a945b887eb4cdc66a1a23120010be9b1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af62fe954c9ec663af86da51c53ea5961\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af62fe954c9ec663af86da51c53ea5961\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>traceStates</b> (const gtsam::Values &amp;values)</td></tr>\n<tr class=\"separator:af62fe954c9ec663af86da51c53ea5961\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae90d7583f99d58063cdf7db630a6eb2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae90d7583f99d58063cdf7db630a6eb2d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>traceCovariance</b> (const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;C, const int64_t timestamp)</td></tr>\n<tr class=\"separator:ae90d7583f99d58063cdf7db630a6eb2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:afffbdfcbdfc2e6b9ca2d0491cbad5fab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afffbdfcbdfc2e6b9ca2d0491cbad5fab\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pnh_</b></td></tr>\n<tr class=\"separator:afffbdfcbdfc2e6b9ca2d0491cbad5fab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab575004fd52d85bd72cb0b99de4f8f47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab575004fd52d85bd72cb0b99de4f8f47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_id_</b></td></tr>\n<tr class=\"separator:ab575004fd52d85bd72cb0b99de4f8f47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c6b97b6c059d0fcd8d12bb29c6657ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4c6b97b6c059d0fcd8d12bb29c6657ec\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_dir_</b></td></tr>\n<tr class=\"separator:a4c6b97b6c059d0fcd8d12bb29c6657ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30c1e580914f2db7929daa852df2e4f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30c1e580914f2db7929daa852df2e4f6\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_markers_</b></td></tr>\n<tr class=\"separator:a30c1e580914f2db7929daa852df2e4f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a074c2fbd5fe2ae46f6e0e8594963416e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a074c2fbd5fe2ae46f6e0e8594963416e\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_pc_</b></td></tr>\n<tr class=\"separator:a074c2fbd5fe2ae46f6e0e8594963416e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20c04f56d4afce255732bf7c7caa82f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20c04f56d4afce255732bf7c7caa82f7\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>vis_scale_</b></td></tr>\n<tr class=\"separator:a20c04f56d4afce255732bf7c7caa82f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc11105255da45d9e172a6a5eeb39b4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acc11105255da45d9e172a6a5eeb39b4b\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ofs_states_</b></td></tr>\n<tr class=\"separator:acc11105255da45d9e172a6a5eeb39b4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c0d776740085257b30683bd0e4b5eee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c0d776740085257b30683bd0e4b5eee\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ofs_covariance_</b></td></tr>\n<tr class=\"separator:a3c0d776740085257b30683bd0e4b5eee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a8a8d7e499e411fa5445d4520c4563ccb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a8d7e499e411fa5445d4520c4563ccb\"></a>\nstatic const std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kWorldFrame</b> = &quot;world&quot;</td></tr>\n<tr class=\"separator:a8a8d7e499e411fa5445d4520c4563ccb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Publish visualisation messages to ROS. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"backend__visualizer_8h_source.html\">backend_visualizer.h</a></li>\n<li>svo_ros/src/backend_visualizer.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BackendVisualizer__coll__graph.md5",
    "content": "9c8806c0c9ed92fc2eb7c023d40b41d7"
  },
  {
    "path": "docs/classsvo_1_1BenchmarkNode-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">BenchmarkNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BenchmarkNode Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addNoiseToImage</b>(cv::Mat &amp;img, double sigma) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>automatic_reinitialization_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backend_interface_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>backend_visualizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BenchmarkNode</b>(const PipelineType &amp;type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;pnh) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_count_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>idle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>image_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imageCallbackPostprocessing</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imageCallbackPreprocessing</b>(int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>img_noise_sigma_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_handler_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imu_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imuCallback</b>(const sensor_msgs::ImuConstPtr &amp;imu_msg) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imuLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>inputKeyCallback</b>(const std_msgs::StringConstPtr &amp;key_input) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>monoCallback</b>(const sensor_msgs::ImageConstPtr &amp;msg) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>monoLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ncam_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pipeline_type_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pnh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>processImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;images, int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishResults</b>(const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>quit_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>remote_input_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>runArrayBenchmark</b>(const std::string &amp;dataset_dir) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>runBenchmark</b>(const std::string &amp;dataset_dir) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>runBlenderBenchmark</b>(const std::string &amp;dataset_dir, bool depthmap_has_zbuffer=false) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>runEurocBenchmark</b>(const std::string &amp;dataset_dir) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>runKittiBenchmark</b>(const std::string &amp;dataset_dir) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>set_initial_attitude_from_gravity_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setImuPrior</b>(const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sleep_us_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>stereoCallback</b>(const sensor_msgs::ImageConstPtr &amp;msg0, const sensor_msgs::ImageConstPtr &amp;msg1) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stereoLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sub_remote_key_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>subscribeImage</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>subscribeImu</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>subscribeRemoteKey</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>svo_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SvoInterface</b>(const PipelineType &amp;pipeline_type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;private_nh) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_depth_error_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_est_pose_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_gt_pose_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_rot_error_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_trans_error_</b> (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>traceDepthError</b>(const FramePtr &amp;frame, const cv::Mat &amp;depthmap) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>traceGroundtruth</b>(const Transformation &amp;T_w_gt, const double timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tracePose</b>(const Transformation &amp;T_w_f, const int64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tracePoseError</b>(const Transformation &amp;T_f_gt, const double timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tracePoseKitti</b>(const Transformation &amp;T_w_f) (defined in <a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">svo::BenchmarkNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~SvoInterface</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BenchmarkNode.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BenchmarkNode Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">BenchmarkNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1BenchmarkNode-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BenchmarkNode Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::BenchmarkNode:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BenchmarkNode__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1BenchmarkNode_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1BenchmarkNode_inherit__map\" id=\"svo_1_1BenchmarkNode_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SvoInterface.html\" title=\"SVO Interface. \" alt=\"\" coords=\"17,5,142,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::BenchmarkNode:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1BenchmarkNode__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BenchmarkNode_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1BenchmarkNode_coll__map\" id=\"svo_1_1BenchmarkNode_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SvoInterface.html\" title=\"SVO Interface. \" alt=\"\" coords=\"5,5,131,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac4e540d785743192503f41b3b605cf8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac4e540d785743192503f41b3b605cf8c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BenchmarkNode</b> (const PipelineType &amp;type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;pnh)</td></tr>\n<tr class=\"separator:ac4e540d785743192503f41b3b605cf8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5a9c21bf0090950d2daaa9bac15241c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa5a9c21bf0090950d2daaa9bac15241c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>traceGroundtruth</b> (const Transformation &amp;T_w_gt, const double timestamp)</td></tr>\n<tr class=\"separator:aa5a9c21bf0090950d2daaa9bac15241c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af19433fa48a420cc287e12157fc1ff90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af19433fa48a420cc287e12157fc1ff90\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tracePose</b> (const Transformation &amp;T_w_f, const int64_t timestamp)</td></tr>\n<tr class=\"separator:af19433fa48a420cc287e12157fc1ff90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a200db7ee8057c14de3d03498cadf9d77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a200db7ee8057c14de3d03498cadf9d77\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tracePoseError</b> (const Transformation &amp;T_f_gt, const double timestamp)</td></tr>\n<tr class=\"separator:a200db7ee8057c14de3d03498cadf9d77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fb03623a71f444cd036c3462fbfbe48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7fb03623a71f444cd036c3462fbfbe48\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tracePoseKitti</b> (const Transformation &amp;T_w_f)</td></tr>\n<tr class=\"separator:a7fb03623a71f444cd036c3462fbfbe48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1958eac02622eec1cec9cd718154b926\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1958eac02622eec1cec9cd718154b926\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>traceDepthError</b> (const FramePtr &amp;frame, const cv::Mat &amp;depthmap)</td></tr>\n<tr class=\"separator:a1958eac02622eec1cec9cd718154b926\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8481dc172a8024cf161ee779e743251\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8481dc172a8024cf161ee779e743251\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addNoiseToImage</b> (cv::Mat &amp;img, double sigma)</td></tr>\n<tr class=\"separator:aa8481dc172a8024cf161ee779e743251\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad360e1654e9e5268fa864aac6344b174\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad360e1654e9e5268fa864aac6344b174\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>runBenchmark</b> (const std::string &amp;dataset_dir)</td></tr>\n<tr class=\"separator:ad360e1654e9e5268fa864aac6344b174\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7361a3bade3922a3597e5db0e9f8a10b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7361a3bade3922a3597e5db0e9f8a10b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>runBlenderBenchmark</b> (const std::string &amp;dataset_dir, bool depthmap_has_zbuffer=false)</td></tr>\n<tr class=\"separator:a7361a3bade3922a3597e5db0e9f8a10b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0c6ec6252245b7cbc8ce8783f667f6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac0c6ec6252245b7cbc8ce8783f667f6e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>runKittiBenchmark</b> (const std::string &amp;dataset_dir)</td></tr>\n<tr class=\"separator:ac0c6ec6252245b7cbc8ce8783f667f6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6d56c38dd59418ed4fafb7c88f763c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac6d56c38dd59418ed4fafb7c88f763c7\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>runEurocBenchmark</b> (const std::string &amp;dataset_dir)</td></tr>\n<tr class=\"separator:ac6d56c38dd59418ed4fafb7c88f763c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9936739ccb171c1a83fdb42d2627391e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9936739ccb171c1a83fdb42d2627391e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>runArrayBenchmark</b> (const std::string &amp;dataset_dir)</td></tr>\n<tr class=\"separator:a9936739ccb171c1a83fdb42d2627391e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1SvoInterface\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1SvoInterface')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td></tr>\n<tr class=\"memitem:a79e389b23e9832921eb6436b91e334cc inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79e389b23e9832921eb6436b91e334cc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SvoInterface</b> (const PipelineType &amp;pipeline_type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;private_nh)</td></tr>\n<tr class=\"separator:a79e389b23e9832921eb6436b91e334cc inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7e936a3d1ce08fefee1bd027726d4b inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7e936a3d1ce08fefee1bd027726d4b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>processImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;images, int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a3b7e936a3d1ce08fefee1bd027726d4b inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7807d4605b04efe5c411d28401f6ced7 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7807d4605b04efe5c411d28401f6ced7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setImuPrior</b> (const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a7807d4605b04efe5c411d28401f6ced7 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e7a0ea77f94b23c1da9393240a77f98 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e7a0ea77f94b23c1da9393240a77f98\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishResults</b> (const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a2e7a0ea77f94b23c1da9393240a77f98 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91c40cc887685a042182e4881bb5fafa inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a91c40cc887685a042182e4881bb5fafa\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>monoCallback</b> (const sensor_msgs::ImageConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a91c40cc887685a042182e4881bb5fafa inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a256ec83666dbadb8c06e5fa280c6ff57 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a256ec83666dbadb8c06e5fa280c6ff57\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereoCallback</b> (const sensor_msgs::ImageConstPtr &amp;msg0, const sensor_msgs::ImageConstPtr &amp;msg1)</td></tr>\n<tr class=\"separator:a256ec83666dbadb8c06e5fa280c6ff57 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f5b0d8ad802632fbf2b8c52dc4d6b25 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f5b0d8ad802632fbf2b8c52dc4d6b25\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imuCallback</b> (const sensor_msgs::ImuConstPtr &amp;imu_msg)</td></tr>\n<tr class=\"separator:a4f5b0d8ad802632fbf2b8c52dc4d6b25 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a046b48b2d7f4b3e44de4e5ac05e9b35e inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a046b48b2d7f4b3e44de4e5ac05e9b35e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>inputKeyCallback</b> (const std_msgs::StringConstPtr &amp;key_input)</td></tr>\n<tr class=\"separator:a046b48b2d7f4b3e44de4e5ac05e9b35e inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4110f749405d369b28c1941e50200f8 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4110f749405d369b28c1941e50200f8\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imageCallbackPreprocessing</b> (int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:af4110f749405d369b28c1941e50200f8 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec2d7112b731075c736fe529d4160fec inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aec2d7112b731075c736fe529d4160fec\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imageCallbackPostprocessing</b> ()</td></tr>\n<tr class=\"separator:aec2d7112b731075c736fe529d4160fec inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a907759945fcafcb4db0f3a13689ce68d inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a907759945fcafcb4db0f3a13689ce68d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeImu</b> ()</td></tr>\n<tr class=\"separator:a907759945fcafcb4db0f3a13689ce68d inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac39875aab6bcf73f9e7cf5d939a2e569 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac39875aab6bcf73f9e7cf5d939a2e569\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeImage</b> ()</td></tr>\n<tr class=\"separator:ac39875aab6bcf73f9e7cf5d939a2e569 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:addaaf2a94ff905b60000eef0ff121dec inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"addaaf2a94ff905b60000eef0ff121dec\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeRemoteKey</b> ()</td></tr>\n<tr class=\"separator:addaaf2a94ff905b60000eef0ff121dec inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e8830f84dc4c7be82b9097bbe38510f inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e8830f84dc4c7be82b9097bbe38510f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imuLoop</b> ()</td></tr>\n<tr class=\"separator:a9e8830f84dc4c7be82b9097bbe38510f inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6221627913dc7b1c6c46922a5ef50cfb inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6221627913dc7b1c6c46922a5ef50cfb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>monoLoop</b> ()</td></tr>\n<tr class=\"separator:a6221627913dc7b1c6c46922a5ef50cfb inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab41183f0f68b73d82c30b174cb0b1a4 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab41183f0f68b73d82c30b174cb0b1a4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereoLoop</b> ()</td></tr>\n<tr class=\"separator:aab41183f0f68b73d82c30b174cb0b1a4 inherit pub_methods_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a2d1f57af27f4bbdc3bbac0774df183de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d1f57af27f4bbdc3bbac0774df183de\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_count_</b> = 0</td></tr>\n<tr class=\"separator:a2d1f57af27f4bbdc3bbac0774df183de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98a5412d0a6a62b8d2373ee4af35dc5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a98a5412d0a6a62b8d2373ee4af35dc5f\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_gt_pose_</b></td></tr>\n<tr class=\"separator:a98a5412d0a6a62b8d2373ee4af35dc5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bacb662f5bd2bfbee65b6a140f3e1ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bacb662f5bd2bfbee65b6a140f3e1ea\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_est_pose_</b></td></tr>\n<tr class=\"separator:a9bacb662f5bd2bfbee65b6a140f3e1ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2881c2c257f4a9d272e54295eaa0918a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2881c2c257f4a9d272e54295eaa0918a\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_trans_error_</b></td></tr>\n<tr class=\"separator:a2881c2c257f4a9d272e54295eaa0918a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae40b8eb694608ab834fee3bfe51b2c18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae40b8eb694608ab834fee3bfe51b2c18\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_rot_error_</b></td></tr>\n<tr class=\"separator:ae40b8eb694608ab834fee3bfe51b2c18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac391b0f1cfa2340fb4d68fb65914ca29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac391b0f1cfa2340fb4d68fb65914ca29\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_depth_error_</b></td></tr>\n<tr class=\"separator:ac391b0f1cfa2340fb4d68fb65914ca29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa74b589c4b45a1c8afec33d635b4678c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa74b589c4b45a1c8afec33d635b4678c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_noise_sigma_</b></td></tr>\n<tr class=\"separator:aa74b589c4b45a1c8afec33d635b4678c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8bfae893f23fe5e01f0b0e4effe8efd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8bfae893f23fe5e01f0b0e4effe8efd\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sleep_us_</b></td></tr>\n<tr class=\"separator:ad8bfae893f23fe5e01f0b0e4effe8efd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1SvoInterface\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1SvoInterface')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td></tr>\n<tr class=\"memitem:a8a0aeb81f044d04159abdc477f29cb24 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a0aeb81f044d04159abdc477f29cb24\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a8a0aeb81f044d04159abdc477f29cb24 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6600f54bba3d257f1eb78aff8015a240 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6600f54bba3d257f1eb78aff8015a240\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pnh_</b></td></tr>\n<tr class=\"separator:a6600f54bba3d257f1eb78aff8015a240 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb8c9cbf7816467947d3fe30a860ca inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad3fb8c9cbf7816467947d3fe30a860ca\"></a>\nPipelineType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pipeline_type_</b></td></tr>\n<tr class=\"separator:ad3fb8c9cbf7816467947d3fe30a860ca inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0e789bd7a032893e384de84fea9ab0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf0e789bd7a032893e384de84fea9ab0\"></a>\nros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sub_remote_key_</b></td></tr>\n<tr class=\"separator:acf0e789bd7a032893e384de84fea9ab0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0940c8964ed203d3d254615b5b72eea0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0940c8964ed203d3d254615b5b72eea0\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>remote_input_</b></td></tr>\n<tr class=\"separator:a0940c8964ed203d3d254615b5b72eea0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad45c126e85286925fed3e10d0427f9b9 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad45c126e85286925fed3e10d0427f9b9\"></a>\nstd::unique_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_thread_</b></td></tr>\n<tr class=\"separator:ad45c126e85286925fed3e10d0427f9b9 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a876d14802b8913b3724bd6e4ae4ce08e inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a876d14802b8913b3724bd6e4ae4ce08e\"></a>\nstd::unique_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>image_thread_</b></td></tr>\n<tr class=\"separator:a876d14802b8913b3724bd6e4ae4ce08e inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c951d59a8214a07a4b324fb7c59324f inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c951d59a8214a07a4b324fb7c59324f\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>svo_</b></td></tr>\n<tr class=\"separator:a3c951d59a8214a07a4b324fb7c59324f inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66e19a241474aeebb375293b637e677 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad66e19a241474aeebb375293b637e677\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizer_</b></td></tr>\n<tr class=\"separator:ad66e19a241474aeebb375293b637e677 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0223a8aec31b130b37a2b0bab22a2bb inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab0223a8aec31b130b37a2b0bab22a2bb\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_handler_</b></td></tr>\n<tr class=\"separator:ab0223a8aec31b130b37a2b0bab22a2bb inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af535457d9c8ff83920bc9f3282b5de6b inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af535457d9c8ff83920bc9f3282b5de6b\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backend_interface_</b></td></tr>\n<tr class=\"separator:af535457d9c8ff83920bc9f3282b5de6b inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d6b764e80420591a5e534894ffabef2 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d6b764e80420591a5e534894ffabef2\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backend_visualizer_</b></td></tr>\n<tr class=\"separator:a1d6b764e80420591a5e534894ffabef2 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9bdd989949321dd4b54fd7cbd8a6716 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac9bdd989949321dd4b54fd7cbd8a6716\"></a>\nCameraBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ncam_</b></td></tr>\n<tr class=\"separator:ac9bdd989949321dd4b54fd7cbd8a6716 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63a8156b73ae2dd1ae8503ecfeb1fca5 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63a8156b73ae2dd1ae8503ecfeb1fca5\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>set_initial_attitude_from_gravity_</b> = true</td></tr>\n<tr class=\"separator:a63a8156b73ae2dd1ae8503ecfeb1fca5 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3dc416e3db2aa32dfc61f0c4a9995fb0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3dc416e3db2aa32dfc61f0c4a9995fb0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>quit_</b> = false</td></tr>\n<tr class=\"separator:a3dc416e3db2aa32dfc61f0c4a9995fb0 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:affbfbcab64ead8d105fe9a5870d40c08 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"affbfbcab64ead8d105fe9a5870d40c08\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>idle_</b> = false</td></tr>\n<tr class=\"separator:affbfbcab64ead8d105fe9a5870d40c08 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a571a5d110c5fa79f3ca19329bfe18709 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a571a5d110c5fa79f3ca19329bfe18709\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>automatic_reinitialization_</b> = false</td></tr>\n<tr class=\"separator:a571a5d110c5fa79f3ca19329bfe18709 inherit pub_attribs_classsvo_1_1SvoInterface\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_ros/src/benchmark_node.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1BenchmarkNode__coll__graph.md5",
    "content": "99602c5dd8c56aec2578f8d80fb41558"
  },
  {
    "path": "docs/classsvo_1_1BenchmarkNode__inherit__graph.md5",
    "content": "88e0de4b4f8c773ea3b985f99a6c257b"
  },
  {
    "path": "docs/classsvo_1_1CannyDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::CannyDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~CannyDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1CannyDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::CannyDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1CannyDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::CannyDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::CannyDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1CannyDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1CannyDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1CannyDetector_inherit__map\" id=\"svo_1_1CannyDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"5,5,156,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::CannyDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1CannyDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1CannyDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1CannyDetector_coll__map\" id=\"svo_1_1CannyDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adaf9b92198f64bc3173d4ba02b0e4e76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adaf9b92198f64bc3173d4ba02b0e4e76\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:adaf9b92198f64bc3173d4ba02b0e4e76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1CannyDetector__coll__graph.md5",
    "content": "9f3f2fd945bdbaa553a8fa15845bd465"
  },
  {
    "path": "docs/classsvo_1_1CannyDetector__inherit__graph.md5",
    "content": "c1959fa6dfcdadc19fd60a4374cfb01d"
  },
  {
    "path": "docs/classsvo_1_1CsvDatasetReader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::CsvDatasetReader Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CsvDatasetReader) (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>begin</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">buffer_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>const_iterator</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CsvDatasetReader</b>(const std::string &amp;csv_directory, const std::vector&lt; size_t &gt; imu_indices, const std::vector&lt; size_t &gt; camera_indices, const std::vector&lt; size_t &gt; track_indices) (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>DataBuffer</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>end</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>loadCameraData</b>(const std::string &amp;data_dir, const size_t camera_index, int64_t playback_delay) (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>loadFeatureTracksData</b>(const std::string &amp;data_dir, const size_t camera_index, int64_t playback_delay) (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>loadImuData</b>(const std::string data_dir, const int64_t playback_delay) (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>StampMeasurementPair</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>value_type</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~CsvDatasetReader</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1CsvDatasetReader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::CsvDatasetReader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1CsvDatasetReader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::CsvDatasetReader Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a7e332f51f8fec6086ec4e12712aabe9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7e332f51f8fec6086ec4e12712aabe9f\"></a>\ntypedef std::pair&lt; int64_t, std::shared_ptr&lt; <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">dataset::MeasurementBase</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>StampMeasurementPair</b></td></tr>\n<tr class=\"separator:a7e332f51f8fec6086ec4e12712aabe9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45d94dce230a30e36f728eaed72cc881\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a45d94dce230a30e36f728eaed72cc881\"></a>\ntypedef std::multimap&lt; int64_t, std::shared_ptr&lt; <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">dataset::MeasurementBase</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DataBuffer</b></td></tr>\n<tr class=\"separator:a45d94dce230a30e36f728eaed72cc881\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5b16583c3bf069efdc6b09290c9e054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac5b16583c3bf069efdc6b09290c9e054\"></a>\ntypedef DataBuffer::value_type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>value_type</b></td></tr>\n<tr class=\"separator:ac5b16583c3bf069efdc6b09290c9e054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fb796485a2c2abdf54efc97fb976c8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fb796485a2c2abdf54efc97fb976c8a\"></a>\ntypedef DataBuffer::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>const_iterator</b></td></tr>\n<tr class=\"separator:a6fb796485a2c2abdf54efc97fb976c8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae649ce4a9feba01d5d27d539f0a3aacd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae649ce4a9feba01d5d27d539f0a3aacd\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a>)</td></tr>\n<tr class=\"separator:ae649ce4a9feba01d5d27d539f0a3aacd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae896c5e35c767d741723e49594deabcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae896c5e35c767d741723e49594deabcf\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CsvDatasetReader</b> (const std::string &amp;csv_directory, const std::vector&lt; size_t &gt; imu_indices, const std::vector&lt; size_t &gt; camera_indices, const std::vector&lt; size_t &gt; track_indices)</td></tr>\n<tr class=\"separator:ae896c5e35c767d741723e49594deabcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf600b82511e7eb6565c6eb928658454\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaf600b82511e7eb6565c6eb928658454\"></a>\nDataBuffer::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>begin</b> () const</td></tr>\n<tr class=\"separator:aaf600b82511e7eb6565c6eb928658454\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3e668f926249ddefc37ab535be62bec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad3e668f926249ddefc37ab535be62bec\"></a>\nDataBuffer::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>end</b> () const</td></tr>\n<tr class=\"separator:ad3e668f926249ddefc37ab535be62bec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:afc09833d87b84d6dfad83efe5fcb1ac4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afc09833d87b84d6dfad83efe5fcb1ac4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadImuData</b> (const std::string data_dir, const int64_t playback_delay)</td></tr>\n<tr class=\"separator:afc09833d87b84d6dfad83efe5fcb1ac4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d5e466aded84698adef9247da3defcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d5e466aded84698adef9247da3defcf\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadCameraData</b> (const std::string &amp;data_dir, const size_t camera_index, int64_t playback_delay)</td></tr>\n<tr class=\"separator:a4d5e466aded84698adef9247da3defcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2d92ad809b5c8bc65a073dcb7692155\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2d92ad809b5c8bc65a073dcb7692155\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadFeatureTracksData</b> (const std::string &amp;data_dir, const size_t camera_index, int64_t playback_delay)</td></tr>\n<tr class=\"separator:ae2d92ad809b5c8bc65a073dcb7692155\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aa7c59c03c6a85f330423ebd32dac799f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7c59c03c6a85f330423ebd32dac799f\"></a>\nDataBuffer&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">buffer_</a></td></tr>\n<tr class=\"memdesc:aa7c59c03c6a85f330423ebd32dac799f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Buffer to chronologically sort the data. <br /></td></tr>\n<tr class=\"separator:aa7c59c03c6a85f330423ebd32dac799f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"csv__dataset__reader_8h_source.html\">csv_dataset_reader.h</a></li>\n<li>svo_ros/src/csv_dataset_reader.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1DepthEstimator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthEstimator Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__attribute__</b>((aligned(16))) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>__attribute__</b>((aligned(16))) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cur_frame_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>DepthEstimator</b>(const SolverOptions &amp;solver_options) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>DepthEstimatorState</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>evaluateError</b>(const State &amp;params, HessianMatrix *H, GradientVector *g) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>f_ref_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kMaxLevel</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kMinLevel</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPatchArea</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPatchHalfsize</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPatchSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>level_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>px_ref_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ref_frame_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>run</b>(const FramePtr &amp;cur_frame, const FramePtr &amp;ref_frame, const int ref_feature_id) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>solve</b>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;::solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>T_cur_ref_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update</b>(const State &amp;param_old, const UpdateVector &amp;dx, State &amp;param_new) (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~DepthEstimator</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1DepthEstimator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::DepthEstimator Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classsvo_1_1DepthEstimator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthEstimator Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Depth estimation by minimizing photometric error.  \n <a href=\"classsvo_1_1DepthEstimator.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__estimation_8h_source.html\">depth_estimation.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::DepthEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1DepthEstimator__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1DepthEstimator_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1DepthEstimator_inherit__map\" id=\"svo_1_1DepthEstimator_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 1, double, DepthEstimator \\&gt;\" alt=\"\" coords=\"5,5,240,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::DepthEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1DepthEstimator__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1DepthEstimator_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1DepthEstimator_coll__map\" id=\"svo_1_1DepthEstimator_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 1, double, DepthEstimator \\&gt;\" alt=\"\" coords=\"507,107,741,149\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a7cad4310791e2a1432dfeaa2770d95aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7cad4310791e2a1432dfeaa2770d95aa\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b> = <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td></tr>\n<tr class=\"separator:a7cad4310791e2a1432dfeaa2770d95aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d5b635d2c2f03884d9045f695c8fe40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d5b635d2c2f03884d9045f695c8fe40\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DepthEstimatorState</b> = double</td></tr>\n<tr class=\"separator:a1d5b635d2c2f03884d9045f695c8fe40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad8d0d6bb96a6eae6d0cda2b4171d99db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8d0d6bb96a6eae6d0cda2b4171d99db\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DepthEstimator</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> &amp;solver_options)</td></tr>\n<tr class=\"separator:ad8d0d6bb96a6eae6d0cda2b4171d99db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dfabf2e062800ccc104ecbf42007b42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5dfabf2e062800ccc104ecbf42007b42\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> (const FramePtr &amp;cur_frame, const FramePtr &amp;ref_frame, const int ref_feature_id)</td></tr>\n<tr class=\"separator:a5dfabf2e062800ccc104ecbf42007b42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a454c2cf0f1e67107be0e944533ecbe06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a454c2cf0f1e67107be0e944533ecbe06\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>evaluateError</b> (const State &amp;params, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a454c2cf0f1e67107be0e944533ecbe06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4100f66cb356bd89e8bfc341848295f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4100f66cb356bd89e8bfc341848295f1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const State &amp;param_old, const UpdateVector &amp;dx, State &amp;param_new)</td></tr>\n<tr class=\"separator:a4100f66cb356bd89e8bfc341848295f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305920ca5fcfdecf46883d4df8b1aa3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a305920ca5fcfdecf46883d4df8b1aa3e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solve</b> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"separator:a305920ca5fcfdecf46883d4df8b1aa3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f949abf5a74381591d3678926df6a8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f949abf5a74381591d3678926df6a8b\"></a>\nuint8_t ref_patch_ [kPatchSize *kPatchSize]&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__attribute__</b> ((aligned(16)))</td></tr>\n<tr class=\"separator:a3f949abf5a74381591d3678926df6a8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40a92faad2a5efdbba07ff3613777232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40a92faad2a5efdbba07ff3613777232\"></a>\nuint8_t ref_patch_with_border_ [(kPatchSize+2) *(kPatchSize+2)]&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__attribute__</b> ((aligned(16)))</td></tr>\n<tr class=\"separator:a40a92faad2a5efdbba07ff3613777232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a3de0b874603b5dd6fcad2fad79b1f738\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3de0b874603b5dd6fcad2fad79b1f738\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:a3de0b874603b5dd6fcad2fad79b1f738\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aaebf448dce19eed9e9bc50b316d3eff1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaebf448dce19eed9e9bc50b316d3eff1\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cur_frame_</b></td></tr>\n<tr class=\"separator:aaebf448dce19eed9e9bc50b316d3eff1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af96e85ed72eba31f747f71ccade1ad6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af96e85ed72eba31f747f71ccade1ad6f\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ref_frame_</b></td></tr>\n<tr class=\"separator:af96e85ed72eba31f747f71ccade1ad6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a553e766c76d35e8c81de16db9a2a9002\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a553e766c76d35e8c81de16db9a2a9002\"></a>\nBearingVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>f_ref_</b></td></tr>\n<tr class=\"separator:a553e766c76d35e8c81de16db9a2a9002\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8848175eb693de5d8a8b876a6b440d71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8848175eb693de5d8a8b876a6b440d71\"></a>\nKeypoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>px_ref_</b></td></tr>\n<tr class=\"separator:a8848175eb693de5d8a8b876a6b440d71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99996c2dc7e3778ec6f5735d9c14f333\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a99996c2dc7e3778ec6f5735d9c14f333\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_cur_ref_</b></td></tr>\n<tr class=\"separator:a99996c2dc7e3778ec6f5735d9c14f333\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab15d2ae227a78705bb059a641e5e704e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab15d2ae227a78705bb059a641e5e704e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>level_</b> = 0</td></tr>\n<tr class=\"separator:ab15d2ae227a78705bb059a641e5e704e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a78a841aec28be577ed9f97d8c922fe4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78a841aec28be577ed9f97d8c922fe4b\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kPatchHalfsize</b> = 4</td></tr>\n<tr class=\"separator:a78a841aec28be577ed9f97d8c922fe4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95109d3a25f8752fad08a5ea1b45e0ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95109d3a25f8752fad08a5ea1b45e0ce\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kPatchSize</b> = 2*kPatchHalfsize</td></tr>\n<tr class=\"separator:a95109d3a25f8752fad08a5ea1b45e0ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fdcfb650a2c1ffb9b252877b929d22c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2fdcfb650a2c1ffb9b252877b929d22c\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kPatchArea</b> = kPatchSize*kPatchSize</td></tr>\n<tr class=\"separator:a2fdcfb650a2c1ffb9b252877b929d22c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38c1a06bdfc29a4252e4f3eb218711da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a38c1a06bdfc29a4252e4f3eb218711da\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kMaxLevel</b> = 4</td></tr>\n<tr class=\"separator:a38c1a06bdfc29a4252e4f3eb218711da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad568f533e1f89259570c5d312e6d3bfc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad568f533e1f89259570c5d312e6d3bfc\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kMinLevel</b> = 0</td></tr>\n<tr class=\"separator:ad568f533e1f89259570c5d312e6d3bfc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nDepthEstimator &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Depth estimation by minimizing photometric error. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"depth__estimation_8h_source.html\">depth_estimation.h</a></li>\n<li>svo_direct/src/depth_estimation.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1DepthEstimator__coll__graph.md5",
    "content": "1d7ddd52bf66bd991a94b0b35e2c566c"
  },
  {
    "path": "docs/classsvo_1_1DepthEstimator__inherit__graph.md5",
    "content": "072e435482287f33cc3aebd1cf5235ce"
  },
  {
    "path": "docs/classsvo_1_1DepthFilter-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilter Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe\">addKeyframe</a>(const FramePtr &amp;frame, const double depth_mean, const double depth_min, const double depth_max)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0ef9716f79156168d6b489c163ffe032\">DepthFilter</a>(const DepthFilterOptions &amp;options, const DetectorOptions &amp;detector, const std::shared_ptr&lt; CameraBundle &gt; &amp;cams)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a82372b70e898b3d4f57abb92567f2971\">DepthFilter</a>(const DepthFilterOptions &amp;options)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>feature_detector_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>feature_detector_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">getMatcher</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>JobQueue</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>jobs_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>jobs_condvar_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>jobs_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>matcher_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>quit_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854\">startThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb\">stopThread</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2\">updateSeeds</a>(const std::vector&lt; FramePtr &gt; &amp;frames_with_seeds, const FramePtr &amp;new_frame)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1\">updateSeedsLoop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56\">~DepthFilter</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1DepthFilter.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::DepthFilter Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classsvo_1_1DepthFilter-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilter Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::DepthFilter:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1DepthFilter__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1DepthFilter_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1DepthFilter_coll__map\" id=\"svo_1_1DepthFilter_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1DepthFilterOptions.html\" title=\"Depth&#45;filter config parameters. \" alt=\"\" coords=\"5,109,165,136\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ae787bfc27dbd23bb05e7fc1b4b609024\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae787bfc27dbd23bb05e7fc1b4b609024\"></a>\ntypedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:ae787bfc27dbd23bb05e7fc1b4b609024\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0d7c9e615f56b5e8aa7d9e371fc3c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf0d7c9e615f56b5e8aa7d9e371fc3c0\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:acf0d7c9e615f56b5e8aa7d9e371fc3c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe06db04b72dc034483faad923028b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe06db04b72dc034483faad923028b6e\"></a>\ntypedef std::queue&lt; <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JobQueue</b></td></tr>\n<tr class=\"separator:afe06db04b72dc034483faad923028b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0ef9716f79156168d6b489c163ffe032\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ef9716f79156168d6b489c163ffe032\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0ef9716f79156168d6b489c163ffe032\">DepthFilter</a> (const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector, const std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">CameraBundle</a> &gt; &amp;cams)</td></tr>\n<tr class=\"memdesc:a0ef9716f79156168d6b489c163ffe032\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default Constructor. <br /></td></tr>\n<tr class=\"separator:a0ef9716f79156168d6b489c163ffe032\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82372b70e898b3d4f57abb92567f2971\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82372b70e898b3d4f57abb92567f2971\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a82372b70e898b3d4f57abb92567f2971\">DepthFilter</a> (const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;options)</td></tr>\n<tr class=\"memdesc:a82372b70e898b3d4f57abb92567f2971\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor for REMODE-CPU. <br /></td></tr>\n<tr class=\"separator:a82372b70e898b3d4f57abb92567f2971\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a116b008bc8ba7cf2d76e2e5d787eef56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a116b008bc8ba7cf2d76e2e5d787eef56\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56\">~DepthFilter</a> ()</td></tr>\n<tr class=\"memdesc:a116b008bc8ba7cf2d76e2e5d787eef56\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor stops thread if necessary. <br /></td></tr>\n<tr class=\"separator:a116b008bc8ba7cf2d76e2e5d787eef56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a3fa17187d648ec929b98c32cfa1854\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a3fa17187d648ec929b98c32cfa1854\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854\">startThread</a> ()</td></tr>\n<tr class=\"memdesc:a9a3fa17187d648ec929b98c32cfa1854\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Start this thread when seed updating should be in a parallel thread. <br /></td></tr>\n<tr class=\"separator:a9a3fa17187d648ec929b98c32cfa1854\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b21a76fd20b215022405fda2856dccb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b21a76fd20b215022405fda2856dccb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb\">stopThread</a> ()</td></tr>\n<tr class=\"memdesc:a5b21a76fd20b215022405fda2856dccb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop the parallel thread that is running. <br /></td></tr>\n<tr class=\"separator:a5b21a76fd20b215022405fda2856dccb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad0cfebba8282147c36b96b047c216fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad0cfebba8282147c36b96b047c216fe\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe\">addKeyframe</a> (const FramePtr &amp;frame, const double depth_mean, const double depth_min, const double depth_max)</td></tr>\n<tr class=\"memdesc:aad0cfebba8282147c36b96b047c216fe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add new keyframe to the queue, depth_max is only required for direct-depth. <br /></td></tr>\n<tr class=\"separator:aad0cfebba8282147c36b96b047c216fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accff08165d408ebbf8a1c626d26041e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accff08165d408ebbf8a1c626d26041e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4\">reset</a> ()</td></tr>\n<tr class=\"memdesc:accff08165d408ebbf8a1c626d26041e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resets all jobs of the parallel thread. <br /></td></tr>\n<tr class=\"separator:accff08165d408ebbf8a1c626d26041e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0db4f6b729df873df7e49f94e21054d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0db4f6b729df873df7e49f94e21054d3\"></a>\n<a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">getMatcher</a> ()</td></tr>\n<tr class=\"memdesc:a0db4f6b729df873df7e49f94e21054d3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">test <br /></td></tr>\n<tr class=\"separator:a0db4f6b729df873df7e49f94e21054d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eea73c3309d49f7b302706c28a825c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2\">updateSeeds</a> (const std::vector&lt; FramePtr &gt; &amp;frames_with_seeds, const FramePtr &amp;new_frame)</td></tr>\n<tr class=\"separator:a1eea73c3309d49f7b302706c28a825c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4ee2db9242d9560587a870dbe6058337\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4ee2db9242d9560587a870dbe6058337\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a4ee2db9242d9560587a870dbe6058337\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a435c1da8a3cecda56f288d7db70a1677\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a435c1da8a3cecda56f288d7db70a1677\"></a>\n<a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a435c1da8a3cecda56f288d7db70a1677\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fa0c28ce502386959e45754fa13571f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fa0c28ce502386959e45754fa13571f\"></a>\nmutex_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>feature_detector_mut_</b></td></tr>\n<tr class=\"separator:a5fa0c28ce502386959e45754fa13571f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5c5ad76d3deb8695ebdbc1f3e7aa92b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac5c5ad76d3deb8695ebdbc1f3e7aa92b\"></a>\nDetectorPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>feature_detector_</b></td></tr>\n<tr class=\"separator:ac5c5ad76d3deb8695ebdbc1f3e7aa92b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a17f8bed54b86c797d07fbfd56c6018d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a17f8bed54b86c797d07fbfd56c6018d1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1\">updateSeedsLoop</a> ()</td></tr>\n<tr class=\"memdesc:a17f8bed54b86c797d07fbfd56c6018d1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A thread that is continuously updating the seeds. <br /></td></tr>\n<tr class=\"separator:a17f8bed54b86c797d07fbfd56c6018d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ae87cc4e711f5e10258cd2c2e56601ee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae87cc4e711f5e10258cd2c2e56601ee4\"></a>\nmutex_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jobs_mut_</b></td></tr>\n<tr class=\"separator:ae87cc4e711f5e10258cd2c2e56601ee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a852e9c7b5753f5e4bb4e804ed63bf789\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a852e9c7b5753f5e4bb4e804ed63bf789\"></a>\nJobQueue&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jobs_</b></td></tr>\n<tr class=\"separator:a852e9c7b5753f5e4bb4e804ed63bf789\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0d248f185633bb3ce209ba321e7407b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa0d248f185633bb3ce209ba321e7407b\"></a>\nstd::condition_variable&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jobs_condvar_</b></td></tr>\n<tr class=\"separator:aa0d248f185633bb3ce209ba321e7407b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a587623641cece24bdbd5fbc162f9d12a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a587623641cece24bdbd5fbc162f9d12a\"></a>\nstd::unique_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>thread_</b></td></tr>\n<tr class=\"separator:a587623641cece24bdbd5fbc162f9d12a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea31773857d010c38aa755211ab70e2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aea31773857d010c38aa755211ab70e2d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>quit_thread_</b> = false</td></tr>\n<tr class=\"separator:aea31773857d010c38aa755211ab70e2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5de202a135660548f1a012d0f38539fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5de202a135660548f1a012d0f38539fe\"></a>\nMatcher::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>matcher_</b></td></tr>\n<tr class=\"separator:a5de202a135660548f1a012d0f38539fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Depth filter implements the Bayesian Update proposed in: \"Video-based, Real-Time Multi View Stereo\" by G. Vogiatzis and C. Hernández. In Image and Vision Computing, 29(7):434-441, 2011. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1eea73c3309d49f7b302706c28a825c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1eea73c3309d49f7b302706c28a825c2\">&#9670;&nbsp;</a></span>updateSeeds()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::DepthFilter::updateSeeds </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::vector&lt; FramePtr &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>frames_with_seeds</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const FramePtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>new_frame</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Update seeds </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">frames_with_seeds</td><td>List of frames which contain seeds that should be updated with new_frame </td></tr>\n    <tr><td class=\"paramname\">new_frame</td><td>The new frame that is used as observation to update all seeds in frames_with_seeds </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a></li>\n<li>svo_direct/src/depth_filter.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1DepthFilter__coll__graph.md5",
    "content": "e060c8d913e71f90e43ab4998fc97745"
  },
  {
    "path": "docs/classsvo_1_1FastDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FastDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FastDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FastDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FastDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1FastDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FastDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>FAST detector by Edward Rosten.  \n <a href=\"classsvo_1_1FastDetector.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FastDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FastDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FastDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FastDetector_inherit__map\" id=\"svo_1_1FastDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"5,5,156,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FastDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FastDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FastDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FastDetector_coll__map\" id=\"svo_1_1FastDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a155b15e81836a1abe5f937d0a9a52003\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a155b15e81836a1abe5f937d0a9a52003\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:a155b15e81836a1abe5f937d0a9a52003\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>FAST detector by Edward Rosten. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FastDetector__coll__graph.md5",
    "content": "5ccef068b48b55e2345d7eddb261854e"
  },
  {
    "path": "docs/classsvo_1_1FastDetector__inherit__graph.md5",
    "content": "c41ed493280b3f87d144893aa66a952b"
  },
  {
    "path": "docs/classsvo_1_1FastGradDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FastGradDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FastGradDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FastGradDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FastGradDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1FastGradDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FastGradDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FastGradDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FastGradDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FastGradDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FastGradDetector_inherit__map\" id=\"svo_1_1FastGradDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"7,5,158,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FastGradDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FastGradDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FastGradDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FastGradDetector_coll__map\" id=\"svo_1_1FastGradDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae6966b10f744bf71b148bdce4700e304\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae6966b10f744bf71b148bdce4700e304\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:ae6966b10f744bf71b148bdce4700e304\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000003\">Todo:</a></b></dt><dd></dd></dl>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FastGradDetector__coll__graph.md5",
    "content": "bc2312cf6df53fdb724021b24687ccd1"
  },
  {
    "path": "docs/classsvo_1_1FastGradDetector__inherit__graph.md5",
    "content": "1e65b4e8130dce0bd808ae68c730a3ff"
  },
  {
    "path": "docs/classsvo_1_1FeatureRef-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureRef Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>feature_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FeatureRef</b>()=delete (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureRef</b>(const FrameBundlePtr &amp;frame_bundle, size_t frame_index, size_t feature_index) (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>frame_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getBearing</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getFeatureIndex</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getFrame</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getFrameBundle</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getFrameIndex</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getPx</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureRef.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FeatureRef Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1FeatureRef-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureRef Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::FeatureRef:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FeatureRef__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FeatureRef_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:afb37eb3996350c7fd5a3697dd74bc21d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb37eb3996350c7fd5a3697dd74bc21d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureRef</b> (const FrameBundlePtr &amp;frame_bundle, size_t frame_index, size_t feature_index)</td></tr>\n<tr class=\"separator:afb37eb3996350c7fd5a3697dd74bc21d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c06969b9aa1d78ebe9df319542653e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c06969b9aa1d78ebe9df319542653e6\"></a>\nconst FrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFrameBundle</b> () const</td></tr>\n<tr class=\"separator:a2c06969b9aa1d78ebe9df319542653e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb7b8b1723332fcbb7f8eb0e3b307d71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb7b8b1723332fcbb7f8eb0e3b307d71\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFrameIndex</b> () const</td></tr>\n<tr class=\"separator:afb7b8b1723332fcbb7f8eb0e3b307d71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aceda231bea317a87f1cd3ed0717fb474\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aceda231bea317a87f1cd3ed0717fb474\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFeatureIndex</b> () const</td></tr>\n<tr class=\"separator:aceda231bea317a87f1cd3ed0717fb474\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c7345e51eab47b31e992a4c728db497\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c7345e51eab47b31e992a4c728db497\"></a>\nconst Eigen::Block&lt; Keypoints, 2, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getPx</b> () const</td></tr>\n<tr class=\"separator:a0c7345e51eab47b31e992a4c728db497\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83dd736fd52fe0c4fcf5b799622c8cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa83dd736fd52fe0c4fcf5b799622c8cb\"></a>\nconst Eigen::Block&lt; Bearings, 3, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBearing</b> () const</td></tr>\n<tr class=\"separator:aa83dd736fd52fe0c4fcf5b799622c8cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e9b991bcc19a2b2060e7146598210bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7e9b991bcc19a2b2060e7146598210bd\"></a>\nconst FramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFrame</b> () const</td></tr>\n<tr class=\"separator:a7e9b991bcc19a2b2060e7146598210bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a6e99c052c7e830b31b09b5ae7b83e2dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6e99c052c7e830b31b09b5ae7b83e2dd\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_bundle_</b></td></tr>\n<tr class=\"separator:a6e99c052c7e830b31b09b5ae7b83e2dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cd13ea3498e8ad296e5194e0735ce7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7cd13ea3498e8ad296e5194e0735ce7e\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_index_</b></td></tr>\n<tr class=\"separator:a7cd13ea3498e8ad296e5194e0735ce7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a1c551e45442d1ef4f2d99ab34c2397\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a1c551e45442d1ef4f2d99ab34c2397\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>feature_index_</b></td></tr>\n<tr class=\"separator:a6a1c551e45442d1ef4f2d99ab34c2397\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_tracker/include/svo/tracker/<a class=\"el\" href=\"feature__tracking__types_8h_source.html\">feature_tracking_types.h</a></li>\n<li>svo_tracker/src/feature_tracking_types.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureRef__coll__graph.md5",
    "content": "87f81ea35558c8fa3af89a4a825a672b"
  },
  {
    "path": "docs/classsvo_1_1FeatureTrack-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTrack Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>at</b>(size_t i) const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">back</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>empty</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>feature_track_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureTrack</b>(int track_id) (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">explicit</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">front</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDisparity</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getFeatureTrack</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getTrackId</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">pushBack</a>(const FrameBundlePtr &amp;frame_bundle, const size_t frame_index, const size_t feature_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>size</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>track_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureTrack.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FeatureTrack Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1FeatureTrack-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTrack Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a20f3c88caae3be674c75388ca055788f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20f3c88caae3be674c75388ca055788f\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureTrack</b> (int track_id)</td></tr>\n<tr class=\"separator:a20f3c88caae3be674c75388ca055788f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a766662e4421452fe29224820be388f6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a766662e4421452fe29224820be388f6e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getTrackId</b> () const</td></tr>\n<tr class=\"separator:a766662e4421452fe29224820be388f6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af565f4f7c5cceadf39e6f819b3635535\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af565f4f7c5cceadf39e6f819b3635535\"></a>\nconst FeatureRefList &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFeatureTrack</b> () const</td></tr>\n<tr class=\"separator:af565f4f7c5cceadf39e6f819b3635535\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba04b07176a1e57229e136ce93311218\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba04b07176a1e57229e136ce93311218\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>size</b> () const</td></tr>\n<tr class=\"separator:aba04b07176a1e57229e136ce93311218\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2940a6312bb421e4029991c3389dede\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2940a6312bb421e4029991c3389dede\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>empty</b> () const</td></tr>\n<tr class=\"separator:af2940a6312bb421e4029991c3389dede\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe2acbf3a8170025c24436188ab5512e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abe2acbf3a8170025c24436188ab5512e\"></a>\nconst <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">front</a> () const</td></tr>\n<tr class=\"memdesc:abe2acbf3a8170025c24436188ab5512e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The feature at the front is the first observed feature. <br /></td></tr>\n<tr class=\"separator:abe2acbf3a8170025c24436188ab5512e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30eb1603d584c597d38602d2f57ce506\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30eb1603d584c597d38602d2f57ce506\"></a>\nconst <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">back</a> () const</td></tr>\n<tr class=\"memdesc:a30eb1603d584c597d38602d2f57ce506\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The feature at the back is the last observed feature. <br /></td></tr>\n<tr class=\"separator:a30eb1603d584c597d38602d2f57ce506\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b5592b96cf9bd3873be1b92e95b6f92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b5592b96cf9bd3873be1b92e95b6f92\"></a>\nconst <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>at</b> (size_t i) const</td></tr>\n<tr class=\"separator:a2b5592b96cf9bd3873be1b92e95b6f92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c85c082cc7d33bd9d614b35eb9ac4fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9c85c082cc7d33bd9d614b35eb9ac4fe\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">pushBack</a> (const FrameBundlePtr &amp;frame_bundle, const size_t frame_index, const size_t feature_index)</td></tr>\n<tr class=\"memdesc:a9c85c082cc7d33bd9d614b35eb9ac4fe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">New observations are always inserted at the back of the vector. <br /></td></tr>\n<tr class=\"separator:a9c85c082cc7d33bd9d614b35eb9ac4fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9afae0ce8ea1be8171c4d7fd01e880cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9afae0ce8ea1be8171c4d7fd01e880cf\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDisparity</b> () const</td></tr>\n<tr class=\"separator:a9afae0ce8ea1be8171c4d7fd01e880cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a26e73594599c6c854290568c801aac5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a26e73594599c6c854290568c801aac5b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>track_id_</b></td></tr>\n<tr class=\"separator:a26e73594599c6c854290568c801aac5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33c3c7afadd51ac5c13014fbecb70bf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a33c3c7afadd51ac5c13014fbecb70bf4\"></a>\nFeatureRefList&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>feature_track_</b></td></tr>\n<tr class=\"separator:a33c3c7afadd51ac5c13014fbecb70bf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_tracker/include/svo/tracker/<a class=\"el\" href=\"feature__tracking__types_8h_source.html\">feature_tracking_types.h</a></li>\n<li>svo_tracker/src/feature_tracking_types.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureTracker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTracker Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>active_tracks_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>bundle_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detectors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FeatureTracker</b>()=delete (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f\">FeatureTracker</a>(const FeatureTrackerOptions &amp;options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getActiveTracks</b>(size_t frame_index) const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">getNumTrackedAndDisparityPerFrame</a>(double pivot_ratio, std::vector&lt; size_t &gt; *num_tracked, std::vector&lt; double &gt; *disparity) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getOldestFrameInTrack</b>(size_t frame_index) const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getTotalActiveTracks</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">initializeNewTracks</a>(const FrameBundlePtr &amp;nframe_k)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>resetActiveTracks</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetTerminatedTracks</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>terminated_tracks_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">trackAndDetect</a>(const FrameBundlePtr &amp;nframe_kp1)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">trackFrameBundle</a>(const FrameBundlePtr &amp;nframe_kp1)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureTracker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FeatureTracker Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1FeatureTracker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTracker Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::FeatureTracker:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FeatureTracker__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FeatureTracker_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FeatureTracker_coll__map\" id=\"svo_1_1FeatureTracker_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1FeatureTrackerOptions.html\" title=\"svo::FeatureTrackerOptions\" alt=\"\" coords=\"5,109,189,136\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:acc54c9232f5a13dec171f3eeb9e2cd7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acc54c9232f5a13dec171f3eeb9e2cd7f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f\">FeatureTracker</a> (const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"memdesc:acc54c9232f5a13dec171f3eeb9e2cd7f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provide number of frames per frame_bundle. <br /></td></tr>\n<tr class=\"separator:acc54c9232f5a13dec171f3eeb9e2cd7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9bb7c1ca79974d1133469db8add4be0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">trackAndDetect</a> (const FrameBundlePtr &amp;nframe_kp1)</td></tr>\n<tr class=\"separator:ac9bb7c1ca79974d1133469db8add4be0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae999fe961f81f0699ab5caeab7b4dcde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae999fe961f81f0699ab5caeab7b4dcde\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">trackFrameBundle</a> (const FrameBundlePtr &amp;nframe_kp1)</td></tr>\n<tr class=\"memdesc:ae999fe961f81f0699ab5caeab7b4dcde\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Tracks a frame bundle. Returns number of tracked features. <br /></td></tr>\n<tr class=\"separator:ae999fe961f81f0699ab5caeab7b4dcde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a290d11f7097b02fa461b8cf1c21a7a25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a290d11f7097b02fa461b8cf1c21a7a25\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">initializeNewTracks</a> (const FrameBundlePtr &amp;nframe_k)</td></tr>\n<tr class=\"memdesc:a290d11f7097b02fa461b8cf1c21a7a25\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extract new features. <br /></td></tr>\n<tr class=\"separator:a290d11f7097b02fa461b8cf1c21a7a25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9cd8bea9f3423d3badce57ff070ae4fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9cd8bea9f3423d3badce57ff070ae4fb\"></a>\nconst FeatureTracks &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getActiveTracks</b> (size_t frame_index) const</td></tr>\n<tr class=\"separator:a9cd8bea9f3423d3badce57ff070ae4fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f76587caf059c041960c9087ec68df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a69f76587caf059c041960c9087ec68df\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getTotalActiveTracks</b> () const</td></tr>\n<tr class=\"separator:a69f76587caf059c041960c9087ec68df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15dc4f61e6765e47919c22b0e8cc35c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">getNumTrackedAndDisparityPerFrame</a> (double pivot_ratio, std::vector&lt; size_t &gt; *num_tracked, std::vector&lt; double &gt; *disparity) const</td></tr>\n<tr class=\"separator:a15dc4f61e6765e47919c22b0e8cc35c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2d3ef701a32687132705c28fdcd488b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2d3ef701a32687132705c28fdcd488b\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getOldestFrameInTrack</b> (size_t frame_index) const</td></tr>\n<tr class=\"separator:ab2d3ef701a32687132705c28fdcd488b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c6999a0632b12bddab9b940968c146\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c6999a0632b12bddab9b940968c146\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetActiveTracks</b> ()</td></tr>\n<tr class=\"separator:af2c6999a0632b12bddab9b940968c146\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5b8e36560d8e9d5580d7997c54b4cd9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab5b8e36560d8e9d5580d7997c54b4cd9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetTerminatedTracks</b> ()</td></tr>\n<tr class=\"separator:ab5b8e36560d8e9d5580d7997c54b4cd9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a024b9e9042934ad75efefae2b6506b40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a024b9e9042934ad75efefae2b6506b40\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">reset</a> ()</td></tr>\n<tr class=\"memdesc:a024b9e9042934ad75efefae2b6506b40\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clear all stored data. <br /></td></tr>\n<tr class=\"separator:a024b9e9042934ad75efefae2b6506b40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae133ab31d767baffb23f799f9165ccb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae133ab31d767baffb23f799f9165ccb9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:ae133ab31d767baffb23f799f9165ccb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaadd9d7f9955a987b0c9c9990510354f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaadd9d7f9955a987b0c9c9990510354f\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:aaadd9d7f9955a987b0c9c9990510354f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42768fbd6197c1e5af58fa7edd9944ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a42768fbd6197c1e5af58fa7edd9944ce\"></a>\nconst size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_size_</b></td></tr>\n<tr class=\"separator:a42768fbd6197c1e5af58fa7edd9944ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43d898e83ef5adb25d5bb94afcbc672d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43d898e83ef5adb25d5bb94afcbc672d\"></a>\nstd::vector&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detectors_</b></td></tr>\n<tr class=\"separator:a43d898e83ef5adb25d5bb94afcbc672d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa85fdef33a4ba02d3526ef229c105ca2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa85fdef33a4ba02d3526ef229c105ca2\"></a>\nstd::vector&lt; FeatureTracks, Eigen::aligned_allocator&lt; FeatureTracks &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>active_tracks_</b></td></tr>\n<tr class=\"separator:aa85fdef33a4ba02d3526ef229c105ca2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3469881c170946ec3781cf6835c642d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3469881c170946ec3781cf6835c642d\"></a>\nstd::vector&lt; FeatureTracks, Eigen::aligned_allocator&lt; FeatureTracks &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>terminated_tracks_</b></td></tr>\n<tr class=\"separator:af3469881c170946ec3781cf6835c642d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a15dc4f61e6765e47919c22b0e8cc35c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15dc4f61e6765e47919c22b0e8cc35c9\">&#9670;&nbsp;</a></span>getNumTrackedAndDisparityPerFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FeatureTracker::getNumTrackedAndDisparityPerFrame </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>pivot_ratio</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; size_t &gt; *&#160;</td>\n          <td class=\"paramname\"><em>num_tracked</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; double &gt; *&#160;</td>\n          <td class=\"paramname\"><em>disparity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>pivot_ration needs to be in range(0,1) and if 0.5 the disparity that is returned per frame is the median. If 0.25 it means that 25% of the tracks have a higher disparity than returned. </p>\n\n</div>\n</div>\n<a id=\"ac9bb7c1ca79974d1133469db8add4be0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9bb7c1ca79974d1133469db8add4be0\">&#9670;&nbsp;</a></span>trackAndDetect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FeatureTracker::trackAndDetect </td>\n          <td>(</td>\n          <td class=\"paramtype\">const FrameBundlePtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>nframe_kp1</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Tracks current features and if many tracks terminate, automatically initializes new tracks. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_tracker/include/svo/tracker/<a class=\"el\" href=\"feature__tracker_8h_source.html\">feature_tracker.h</a></li>\n<li>svo_tracker/src/feature_tracker.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FeatureTracker__coll__graph.md5",
    "content": "d7c63a370bce14a8d98c0ec9406de263"
  },
  {
    "path": "docs/classsvo_1_1FivePointInit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FivePointInit Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FivePointInit</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FivePointInit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FivePointInit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1FivePointInit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FivePointInit Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Tracks features using KLT and then estimate the relative pose using 5pt RANSAC.  \n <a href=\"classsvo_1_1FivePointInit.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FivePointInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FivePointInit__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FivePointInit_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FivePointInit_inherit__map\" id=\"svo_1_1FivePointInit_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FivePointInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FivePointInit__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FivePointInit_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FivePointInit_coll__map\" id=\"svo_1_1FivePointInit_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aae17fe0e5e09633d89ebd64d5639ba95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae17fe0e5e09633d89ebd64d5639ba95\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:aae17fe0e5e09633d89ebd64d5639ba95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Tracks features using KLT and then estimate the relative pose using 5pt RANSAC. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FivePointInit__coll__graph.md5",
    "content": "6370a97724739201a6e5146cd4240842"
  },
  {
    "path": "docs/classsvo_1_1FivePointInit__inherit__graph.md5",
    "content": "b1498e71965fcefb17f7ed1114aa801a"
  },
  {
    "path": "docs/classsvo_1_1Frame-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Frame Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bundle_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">bundleId</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">checkKeyPoints</a>(const FeaturePtr &amp;ftr)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>clearFeatureStorage</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">copyFeaturesFrom</a>(const Frame &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">deleteLandmark</a>(const size_t &amp;feature_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">f_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d\">Frame</a>(const CameraPtr &amp;cam, const cv::Mat &amp;img, const int64_t timestamp_ns, const size_t n_pyr_levels)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594\">Frame</a>(const int id, const int64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Frame</b>(const Frame &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getEmptyFeatureWrapper</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getErrorMultiplier</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getFeatureWrapper</b>(size_t idx) (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">getNFrameIndex</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a>(size_t idx) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">getSeedPosInFrame</a>(size_t idx) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">getTimestampNSec</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">getTimestampSec</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">grad_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">imuPos</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>in_ba_graph_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>in_ba_graph_vec_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">initFrame</a>(const cv::Mat &amp;img, size_t n_pyr_levels)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">invmu_sigma2_a_b_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a>(size_t i) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">isVisible</a>(const Eigen::Vector3d &amp;xyz_w) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">jacobian_xyz2f_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 3, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">jacobian_xyz2image_imu</a>(const Camera &amp;cam, const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">jacobian_xyz2img_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, const Eigen::Matrix&lt; double, 2, 3 &gt; &amp;J_cam, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">jacobian_xyz2uv</a>(const Eigen::Vector3d &amp;xyz_in_f, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">jacobian_xyz2uv_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">key_pts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">landmark_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Landmarks</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">level_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mutex_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const Frame &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>original_color_image_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">pos</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">px_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">R_imu_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">resizeFeatureStorage</a>(size_t num)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">score_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>seed_mu_range_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">seed_ref_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SeedRefs</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>serialize</b>(Archive &amp;ar, const unsigned) (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">set_T_cam_imu</a>(const Transformation &amp;T_cam_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">setKeyPoints</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">setNFrameIndex</a>(size_t nframe_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>T_cam_body_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">T_cam_world</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">T_imu_world</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timestamp_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">track_id_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">type_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">~Frame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Frame.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Frame Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classsvo_1_1Frame-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Frame Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>A frame saves the image, the associated features and the estimated pose.  \n <a href=\"classsvo_1_1Frame.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame_8h_source.html\">frame.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::Frame:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Frame__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1Frame_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1Frame_inherit__map\" id=\"svo_1_1Frame_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameGpu.html\" title=\"The FrameGpu class adds GPU data members to the frame base class. \" alt=\"\" coords=\"5,80,117,107\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Frame:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Frame__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Frame_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a1df2f9ea8f00364921e16ba258789c22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1df2f9ea8f00364921e16ba258789c22\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b> = std::mutex</td></tr>\n<tr class=\"separator:a1df2f9ea8f00364921e16ba258789c22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3adddb424e65b216bcf77202b12cd64c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3adddb424e65b216bcf77202b12cd64c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b> = std::unique_lock&lt; std::mutex &gt;</td></tr>\n<tr class=\"separator:a3adddb424e65b216bcf77202b12cd64c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa57b9953d1e582eda30d9389b8131899\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa57b9953d1e582eda30d9389b8131899\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Landmarks</b> = std::vector&lt; PointPtr &gt;</td></tr>\n<tr class=\"separator:aa57b9953d1e582eda30d9389b8131899\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d08c93de2f127b1ef5cfb372b60e6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af6d08c93de2f127b1ef5cfb372b60e6e\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedRefs</b> = std::vector&lt; <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a> &gt;</td></tr>\n<tr class=\"separator:af6d08c93de2f127b1ef5cfb372b60e6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6a7f235279498122c11fe98e9309e59d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a7f235279498122c11fe98e9309e59d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d\">Frame</a> (const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const cv::Mat &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, const int64_t timestamp_ns, const size_t n_pyr_levels)</td></tr>\n<tr class=\"memdesc:a6a7f235279498122c11fe98e9309e59d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default Constructor. <br /></td></tr>\n<tr class=\"separator:a6a7f235279498122c11fe98e9309e59d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95c9a8be611c28f653269a45460ce594\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95c9a8be611c28f653269a45460ce594\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594\">Frame</a> (const int <a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>, const int64_t timestamp_ns, const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>)</td></tr>\n<tr class=\"memdesc:a95c9a8be611c28f653269a45460ce594\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor without image. Just for testing! <br /></td></tr>\n<tr class=\"separator:a95c9a8be611c28f653269a45460ce594\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a659039742b5d2b5545feb811efe935e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a659039742b5d2b5545feb811efe935e1\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a> ()</td></tr>\n<tr class=\"memdesc:a659039742b5d2b5545feb811efe935e1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Empty constructor. Just for testing! <br /></td></tr>\n<tr class=\"separator:a659039742b5d2b5545feb811efe935e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3d890f9fee920036f430bf6e546a174\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3d890f9fee920036f430bf6e546a174\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">~Frame</a> ()</td></tr>\n<tr class=\"memdesc:aa3d890f9fee920036f430bf6e546a174\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor. <br /></td></tr>\n<tr class=\"separator:aa3d890f9fee920036f430bf6e546a174\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8140b737e586a0681df3d05dbc89bc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8140b737e586a0681df3d05dbc89bc6\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Frame</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;)=delete</td></tr>\n<tr class=\"separator:ab8140b737e586a0681df3d05dbc89bc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bf86325cb343c20c0a233e84a739110\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bf86325cb343c20c0a233e84a739110\"></a>\n<a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a9bf86325cb343c20c0a233e84a739110\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ee4da5f0e0a4e0dbf36086d61f17cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ee4da5f0e0a4e0dbf36086d61f17cd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">initFrame</a> (const cv::Mat &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, size_t n_pyr_levels)</td></tr>\n<tr class=\"memdesc:a09ee4da5f0e0a4e0dbf36086d61f17cd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initialize new frame and create image pyramid. <br /></td></tr>\n<tr class=\"separator:a09ee4da5f0e0a4e0dbf36086d61f17cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90c4503d84f89bad3a1ed7971902b000\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a90c4503d84f89bad3a1ed7971902b000\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a> ()</td></tr>\n<tr class=\"memdesc:a90c4503d84f89bad3a1ed7971902b000\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Select this frame as keyframe. <br /></td></tr>\n<tr class=\"separator:a90c4503d84f89bad3a1ed7971902b000\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af223f8e7708a90603f962ca37b3996d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af223f8e7708a90603f962ca37b3996d5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">deleteLandmark</a> (const size_t &amp;feature_index)</td></tr>\n<tr class=\"memdesc:af223f8e7708a90603f962ca37b3996d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Delete feature. <br /></td></tr>\n<tr class=\"separator:af223f8e7708a90603f962ca37b3996d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa00ae41c589a338e52233ae1b258fd32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa00ae41c589a338e52233ae1b258fd32\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">resizeFeatureStorage</a> (size_t num)</td></tr>\n<tr class=\"memdesc:aa00ae41c589a338e52233ae1b258fd32\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resize the number of features. (NOT THREADSAFE) <br /></td></tr>\n<tr class=\"separator:aa00ae41c589a338e52233ae1b258fd32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af556b971591d297012d216a5f750993d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af556b971591d297012d216a5f750993d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>clearFeatureStorage</b> ()</td></tr>\n<tr class=\"separator:af556b971591d297012d216a5f750993d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc6e29aea1bc1432cf4cfcc02dfa0c74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adc6e29aea1bc1432cf4cfcc02dfa0c74\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">copyFeaturesFrom</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;other)</td></tr>\n<tr class=\"memdesc:adc6e29aea1bc1432cf4cfcc02dfa0c74\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Copy feature data from another frame. <br /></td></tr>\n<tr class=\"separator:adc6e29aea1bc1432cf4cfcc02dfa0c74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5aac514a1ffec76152784adba53ebef5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5aac514a1ffec76152784adba53ebef5\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFeatureWrapper</b> (size_t idx)</td></tr>\n<tr class=\"separator:a5aac514a1ffec76152784adba53ebef5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bee4f1444c28a4397d90a5a57798164\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0bee4f1444c28a4397d90a5a57798164\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getEmptyFeatureWrapper</b> ()</td></tr>\n<tr class=\"separator:a0bee4f1444c28a4397d90a5a57798164\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cf372944980408bfc193c07deafd41d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cf372944980408bfc193c07deafd41d\"></a>\nFloatType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a> (size_t idx) const</td></tr>\n<tr class=\"memdesc:a3cf372944980408bfc193c07deafd41d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get depth at seed. <br /></td></tr>\n<tr class=\"separator:a3cf372944980408bfc193c07deafd41d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a9283929911b5480b133ae84fdd6577\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1a9283929911b5480b133ae84fdd6577\"></a>\nPosition&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">getSeedPosInFrame</a> (size_t idx) const</td></tr>\n<tr class=\"memdesc:a1a9283929911b5480b133ae84fdd6577\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get coordinates of seed in frame coordinates. <br /></td></tr>\n<tr class=\"separator:a1a9283929911b5480b133ae84fdd6577\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34b93936cd3e520a509ba4a3d7e46bc7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34b93936cd3e520a509ba4a3d7e46bc7\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a> () const</td></tr>\n<tr class=\"memdesc:a34b93936cd3e520a509ba4a3d7e46bc7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of features. Not necessarily succesfully tracked ones. <br /></td></tr>\n<tr class=\"separator:a34b93936cd3e520a509ba4a3d7e46bc7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ba195e035e25336118752e8d808137\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ba195e035e25336118752e8d808137\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a> (size_t i) const</td></tr>\n<tr class=\"memdesc:a09ba195e035e25336118752e8d808137\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if i-th keypoint has a reference to a landmark. <br /></td></tr>\n<tr class=\"separator:a09ba195e035e25336118752e8d808137\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c72a896ce597c05ca09d5d2758d15a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5c72a896ce597c05ca09d5d2758d15a6\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a> () const</td></tr>\n<tr class=\"memdesc:a5c72a896ce597c05ca09d5d2758d15a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of successfully tracked features: seeds and actual landmarks. <br /></td></tr>\n<tr class=\"separator:a5c72a896ce597c05ca09d5d2758d15a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a857540046a75a544750db47e907def0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a857540046a75a544750db47e907def0c\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a> () const</td></tr>\n<tr class=\"memdesc:a857540046a75a544750db47e907def0c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of landmark references in frames. <br /></td></tr>\n<tr class=\"separator:a857540046a75a544750db47e907def0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a436a95418ec6eba4dd5fa283b9160dc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">setKeyPoints</a> ()</td></tr>\n<tr class=\"separator:a436a95418ec6eba4dd5fa283b9160dc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5820b68c25453f4bceccd46e3d96f697\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5820b68c25453f4bceccd46e3d96f697\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">checkKeyPoints</a> (const FeaturePtr &amp;ftr)</td></tr>\n<tr class=\"memdesc:a5820b68c25453f4bceccd46e3d96f697\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if we can select five better key-points. <br /></td></tr>\n<tr class=\"separator:a5820b68c25453f4bceccd46e3d96f697\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9ba93932550e92aa43195aa831f19f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9ba93932550e92aa43195aa831f19f7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">isVisible</a> (const Eigen::Vector3d &amp;xyz_w) const</td></tr>\n<tr class=\"memdesc:ab9ba93932550e92aa43195aa831f19f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if a point in (w)orld coordinate frame is visible in the image. <br /></td></tr>\n<tr class=\"separator:ab9ba93932550e92aa43195aa831f19f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a66fe3946a76445ada2e38147cfbd8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5a66fe3946a76445ada2e38147cfbd8e\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:a5a66fe3946a76445ada2e38147cfbd8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Masks is same size as the image. Convention: 0 == masked, nonzero == valid. <br /></td></tr>\n<tr class=\"separator:a5a66fe3946a76445ada2e38147cfbd8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f86fbd03628ffd017f517a9a45eb95f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f86fbd03628ffd017f517a9a45eb95f\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a> () const</td></tr>\n<tr class=\"memdesc:a4f86fbd03628ffd017f517a9a45eb95f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Full resolution image stored in the frame. <br /></td></tr>\n<tr class=\"separator:a4f86fbd03628ffd017f517a9a45eb95f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85b6751930952162b2f7ced8f06d2036\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a85b6751930952162b2f7ced8f06d2036\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a> () const</td></tr>\n<tr class=\"memdesc:a85b6751930952162b2f7ced8f06d2036\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Id of frame. <br /></td></tr>\n<tr class=\"separator:a85b6751930952162b2f7ced8f06d2036\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b98dd459dee140f95ed966dc9ffab37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b98dd459dee140f95ed966dc9ffab37\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">bundleId</a> () const</td></tr>\n<tr class=\"memdesc:a2b98dd459dee140f95ed966dc9ffab37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Id of frame bundle. <br /></td></tr>\n<tr class=\"separator:a2b98dd459dee140f95ed966dc9ffab37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8ec058962266550f9b9f5125892fab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8ec058962266550f9b9f5125892fab8\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">getNFrameIndex</a> () const</td></tr>\n<tr class=\"memdesc:ab8ec058962266550f9b9f5125892fab8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get storage index of frame in parent NFrame. <br /></td></tr>\n<tr class=\"separator:ab8ec058962266550f9b9f5125892fab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a36595081e9197047d95287a21a7b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7a36595081e9197047d95287a21a7b6e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">setNFrameIndex</a> (size_t nframe_index)</td></tr>\n<tr class=\"memdesc:a7a36595081e9197047d95287a21a7b6e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set storage index of frame in parent NFrame. <br /></td></tr>\n<tr class=\"separator:a7a36595081e9197047d95287a21a7b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9227125f71925f4562e99d938a7b097f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9227125f71925f4562e99d938a7b097f\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a> () const</td></tr>\n<tr class=\"memdesc:a9227125f71925f4562e99d938a7b097f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera pose in imu frame. <br /></td></tr>\n<tr class=\"separator:a9227125f71925f4562e99d938a7b097f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a054fe91073950d31f74111e68417cf15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a054fe91073950d31f74111e68417cf15\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a> () const</td></tr>\n<tr class=\"memdesc:a054fe91073950d31f74111e68417cf15\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get imu pose in camera frame. <br /></td></tr>\n<tr class=\"separator:a054fe91073950d31f74111e68417cf15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bd2d83bab896de855384d059c43de5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bd2d83bab896de855384d059c43de5f\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">T_cam_world</a> () const</td></tr>\n<tr class=\"memdesc:a1bd2d83bab896de855384d059c43de5f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of world origin in frame coordinates. <br /></td></tr>\n<tr class=\"separator:a1bd2d83bab896de855384d059c43de5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a013ffe3d5c749b856c1c2f812a6b498e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a013ffe3d5c749b856c1c2f812a6b498e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a> () const</td></tr>\n<tr class=\"memdesc:a013ffe3d5c749b856c1c2f812a6b498e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of the cam in world coordinates. <br /></td></tr>\n<tr class=\"separator:a013ffe3d5c749b856c1c2f812a6b498e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aada7346f4b09e9273461136e909b9bc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aada7346f4b09e9273461136e909b9bc5\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a> () const</td></tr>\n<tr class=\"memdesc:aada7346f4b09e9273461136e909b9bc5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of imu in world coordinates. <br /></td></tr>\n<tr class=\"separator:aada7346f4b09e9273461136e909b9bc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a766ef97750ad3d3fac12b8dada48db2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a766ef97750ad3d3fac12b8dada48db2a\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">T_imu_world</a> () const</td></tr>\n<tr class=\"memdesc:a766ef97750ad3d3fac12b8dada48db2a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of world-origin in IMU coordinates. <br /></td></tr>\n<tr class=\"separator:a766ef97750ad3d3fac12b8dada48db2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a352e9d9ef659c384a3f9d422cf24f940\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a352e9d9ef659c384a3f9d422cf24f940\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">set_T_cam_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>)</td></tr>\n<tr class=\"memdesc:a352e9d9ef659c384a3f9d422cf24f940\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set camera to imu transformation. <br /></td></tr>\n<tr class=\"separator:a352e9d9ef659c384a3f9d422cf24f940\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dbb5a6ff1428e5f9fac69877a71b85f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dbb5a6ff1428e5f9fac69877a71b85f\"></a>\nconst CameraPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a> () const</td></tr>\n<tr class=\"memdesc:a7dbb5a6ff1428e5f9fac69877a71b85f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model. <br /></td></tr>\n<tr class=\"separator:a7dbb5a6ff1428e5f9fac69877a71b85f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04f38c38d3a837d9408fb1cceaafdc46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a04f38c38d3a837d9408fb1cceaafdc46\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">getTimestampNSec</a> () const</td></tr>\n<tr class=\"memdesc:a04f38c38d3a837d9408fb1cceaafdc46\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of frame in nanoseconds. <br /></td></tr>\n<tr class=\"separator:a04f38c38d3a837d9408fb1cceaafdc46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a677ab5fadd2f9dd87c35a36c57460528\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a677ab5fadd2f9dd87c35a36c57460528\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">getTimestampSec</a> () const</td></tr>\n<tr class=\"memdesc:a677ab5fadd2f9dd87c35a36c57460528\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of frame in seconds. <br /></td></tr>\n<tr class=\"separator:a677ab5fadd2f9dd87c35a36c57460528\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ebfebf95e30d65273e69c55e6617a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ebfebf95e30d65273e69c55e6617a2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a> () const</td></tr>\n<tr class=\"memdesc:a09ebfebf95e30d65273e69c55e6617a2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Was this frame selected as keyframe? <br /></td></tr>\n<tr class=\"separator:a09ebfebf95e30d65273e69c55e6617a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace67c4917849a759810d2927886b02ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace67c4917849a759810d2927886b02ad\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">pos</a> () const</td></tr>\n<tr class=\"memdesc:ace67c4917849a759810d2927886b02ad\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return the pose of the frame in the (w)orld coordinate frame. <br /></td></tr>\n<tr class=\"separator:ace67c4917849a759810d2927886b02ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65ace6a33926bac64d78617444c0efab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65ace6a33926bac64d78617444c0efab\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">imuPos</a> () const</td></tr>\n<tr class=\"memdesc:a65ace6a33926bac64d78617444c0efab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the pose of the imu frame in (w)orld coordinate frame. <br /></td></tr>\n<tr class=\"separator:a65ace6a33926bac64d78617444c0efab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ae23c4d53f2a606d51b3f2f5af1e6fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5ae23c4d53f2a606d51b3f2f5af1e6fb\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getErrorMultiplier</b> () const</td></tr>\n<tr class=\"separator:a5ae23c4d53f2a606d51b3f2f5af1e6fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa23ee69bdec8975d5194531cea9c2c33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa23ee69bdec8975d5194531cea9c2c33\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const</td></tr>\n<tr class=\"separator:aa23ee69bdec8975d5194531cea9c2c33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06e1507b1dabd4e036a30f42e90b4ea8\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a06e1507b1dabd4e036a30f42e90b4ea8\"></a>\ntemplate&lt;typename Archive &gt; </td></tr>\n<tr class=\"memitem:a06e1507b1dabd4e036a30f42e90b4ea8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>serialize</b> (Archive &amp;ar, const unsigned)</td></tr>\n<tr class=\"separator:a06e1507b1dabd4e036a30f42e90b4ea8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ad60c0defb5c61abcadb3f341acaa62d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">jacobian_xyz2uv</a> (const Eigen::Vector3d &amp;xyz_in_f, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"separator:ad60c0defb5c61abcadb3f341acaa62d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e4ba9ed976e38b3897f777dd0001b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e4ba9ed976e38b3897f777dd0001b6e\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">jacobian_xyz2uv_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a0e4ba9ed976e38b3897f777dd0001b6e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of reprojection error (on unit plane) w.r.t. IMU pose. <br /></td></tr>\n<tr class=\"separator:a0e4ba9ed976e38b3897f777dd0001b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad18170c2e4927c490edd7b871ada2faf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad18170c2e4927c490edd7b871ada2faf\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">jacobian_xyz2img_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, const Eigen::Matrix&lt; double, 2, 3 &gt; &amp;J_cam, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:ad18170c2e4927c490edd7b871ada2faf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of reprojection error (on image plane) w.r.t. IMU pose. <br /></td></tr>\n<tr class=\"separator:ad18170c2e4927c490edd7b871ada2faf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03fbea569ca4969a51434cb23a73106a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a03fbea569ca4969a51434cb23a73106a\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">jacobian_xyz2f_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 3, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a03fbea569ca4969a51434cb23a73106a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of using unit bearing vector for map point w.r.t IMU pose. <br /></td></tr>\n<tr class=\"separator:a03fbea569ca4969a51434cb23a73106a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a949e59fb915ca2e5bbd00fa352a2d633\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a949e59fb915ca2e5bbd00fa352a2d633\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">jacobian_xyz2image_imu</a> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a949e59fb915ca2e5bbd00fa352a2d633\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian to image plane(also taking distortion into consideration) w.r.t IMU pose. <br /></td></tr>\n<tr class=\"separator:a949e59fb915ca2e5bbd00fa352a2d633\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3220d0fd39e2c2b6b502ebe5e56fe3e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3220d0fd39e2c2b6b502ebe5e56fe3e0\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a></td></tr>\n<tr class=\"memdesc:a3220d0fd39e2c2b6b502ebe5e56fe3e0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unique id of the frame. <br /></td></tr>\n<tr class=\"separator:a3220d0fd39e2c2b6b502ebe5e56fe3e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13b4e23a33667f2ededd5ec9b9719b2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13b4e23a33667f2ededd5ec9b9719b2c\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_id_</b></td></tr>\n<tr class=\"separator:a13b4e23a33667f2ededd5ec9b9719b2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c725631540e15ccc2f0d1378a8ba170\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c725631540e15ccc2f0d1378a8ba170\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a> = -1</td></tr>\n<tr class=\"memdesc:a2c725631540e15ccc2f0d1378a8ba170\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Storage index in NFrame. <br /></td></tr>\n<tr class=\"separator:a2c725631540e15ccc2f0d1378a8ba170\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a697ab5c0ab639af5ff97e7f2bba471df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a697ab5c0ab639af5ff97e7f2bba471df\"></a>\nCameraPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a></td></tr>\n<tr class=\"memdesc:a697ab5c0ab639af5ff97e7f2bba471df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model. <br /></td></tr>\n<tr class=\"separator:a697ab5c0ab639af5ff97e7f2bba471df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a749fa7087396f987838c81697c97ae33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a749fa7087396f987838c81697c97ae33\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a></td></tr>\n<tr class=\"memdesc:a749fa7087396f987838c81697c97ae33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Transform (f)rame from (w)orld. <br /></td></tr>\n<tr class=\"separator:a749fa7087396f987838c81697c97ae33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1147e6dd9b678161585875e4a4048987\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1147e6dd9b678161585875e4a4048987\"></a>\nImgPyr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a></td></tr>\n<tr class=\"memdesc:a1147e6dd9b678161585875e4a4048987\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image Pyramid. <br /></td></tr>\n<tr class=\"separator:a1147e6dd9b678161585875e4a4048987\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dee8075f4ba26726adfc62cf4f09d0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5dee8075f4ba26726adfc62cf4f09d0a\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>original_color_image_</b></td></tr>\n<tr class=\"separator:a5dee8075f4ba26726adfc62cf4f09d0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf53d418a1e2368f3f4010b4f81ba2c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf53d418a1e2368f3f4010b4f81ba2c0\"></a>\nstd::vector&lt; std::pair&lt; int, Position &gt;, Eigen::aligned_allocator&lt; std::pair&lt; int, Position &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">key_pts_</a></td></tr>\n<tr class=\"memdesc:acf53d418a1e2368f3f4010b4f81ba2c0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Five features and associated 3D points which are used to detect if two frames have overlapping field of view. store index + depth. <br /></td></tr>\n<tr class=\"separator:acf53d418a1e2368f3f4010b4f81ba2c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a> = false</td></tr>\n<tr class=\"memdesc:a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Was this frames selected as keyframe? <br /></td></tr>\n<tr class=\"separator:a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a137c490d744a7002f7608801714edba9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a137c490d744a7002f7608801714edba9\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a></td></tr>\n<tr class=\"memdesc:a137c490d744a7002f7608801714edba9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of last publishing. <br /></td></tr>\n<tr class=\"separator:a137c490d744a7002f7608801714edba9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d17861d1073e693a369b5c7656e1d36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d17861d1073e693a369b5c7656e1d36\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">R_imu_world_</a></td></tr>\n<tr class=\"memdesc:a1d17861d1073e693a369b5c7656e1d36\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">IMU Attitude provided by <em>external</em> attitude extimator. <br /></td></tr>\n<tr class=\"separator:a1d17861d1073e693a369b5c7656e1d36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ce172da4157f8fb3941ea8d05cc0f44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ce172da4157f8fb3941ea8d05cc0f44\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>in_ba_graph_</b> = false</td></tr>\n<tr class=\"separator:a2ce172da4157f8fb3941ea8d05cc0f44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e6e195bb3dca4d9a2e623e5e3cbeb86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e6e195bb3dca4d9a2e623e5e3cbeb86\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_</b> = -1</td></tr>\n<tr class=\"separator:a2e6e195bb3dca4d9a2e623e5e3cbeb86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f0bd5479004f541142a4197d73f1ef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f0bd5479004f541142a4197d73f1ef1\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a></td></tr>\n<tr class=\"memdesc:a7f0bd5479004f541142a4197d73f1ef1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">!&lt; Timestamp of when the image was recorded in nanoseconds. <br /></td></tr>\n<tr class=\"separator:a7f0bd5479004f541142a4197d73f1ef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a319359d47b4fd6ad122b28534ca1e07a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a319359d47b4fd6ad122b28534ca1e07a\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_cam_body_</b></td></tr>\n<tr class=\"separator:a319359d47b4fd6ad122b28534ca1e07a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83d59cf336b9d8e927b125f850ab9d63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a83d59cf336b9d8e927b125f850ab9d63\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a> = 0u</td></tr>\n<tr class=\"memdesc:a83d59cf336b9d8e927b125f850ab9d63\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">the vectors below are initialized to the maximum number of feature-tracks <br /></td></tr>\n<tr class=\"separator:a83d59cf336b9d8e927b125f850ab9d63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb36ee9773605f69538ebd27df49bc97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb36ee9773605f69538ebd27df49bc97\"></a>\nKeypoints&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">px_vec_</a></td></tr>\n<tr class=\"memdesc:acb36ee9773605f69538ebd27df49bc97\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pixel Coordinates. <br /></td></tr>\n<tr class=\"separator:acb36ee9773605f69538ebd27df49bc97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c26e6a2f3148d00539863eab5548bcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6c26e6a2f3148d00539863eab5548bcf\"></a>\nBearings&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">f_vec_</a></td></tr>\n<tr class=\"memdesc:a6c26e6a2f3148d00539863eab5548bcf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bearing Vector. <br /></td></tr>\n<tr class=\"separator:a6c26e6a2f3148d00539863eab5548bcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2788e7b975245189b3058718748facb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2788e7b975245189b3058718748facb\"></a>\nScores&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">score_vec_</a></td></tr>\n<tr class=\"memdesc:ac2788e7b975245189b3058718748facb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keypoint detection scores. <br /></td></tr>\n<tr class=\"separator:ac2788e7b975245189b3058718748facb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1accb3c86ed9d7abf140d83cc24f958d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1accb3c86ed9d7abf140d83cc24f958d\"></a>\nLevels&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">level_vec_</a></td></tr>\n<tr class=\"memdesc:a1accb3c86ed9d7abf140d83cc24f958d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Level of the feature. <br /></td></tr>\n<tr class=\"separator:a1accb3c86ed9d7abf140d83cc24f958d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9824ce581e2aa2d8930a0378a98f84a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9824ce581e2aa2d8930a0378a98f84a6\"></a>\nGradients&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">grad_vec_</a></td></tr>\n<tr class=\"memdesc:a9824ce581e2aa2d8930a0378a98f84a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gradient direction of edgelet normal. <br /></td></tr>\n<tr class=\"separator:a9824ce581e2aa2d8930a0378a98f84a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71f690854f4a63c9b1496e3945d6156c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a71f690854f4a63c9b1496e3945d6156c\"></a>\nFeatureTypes&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">type_vec_</a></td></tr>\n<tr class=\"memdesc:a71f690854f4a63c9b1496e3945d6156c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Is the feature a corner or an edgelet? <br /></td></tr>\n<tr class=\"separator:a71f690854f4a63c9b1496e3945d6156c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd9e2bf1dcaa1f82206b616d662f6437\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afd9e2bf1dcaa1f82206b616d662f6437\"></a>\nLandmarks&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">landmark_vec_</a></td></tr>\n<tr class=\"memdesc:afd9e2bf1dcaa1f82206b616d662f6437\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reference to 3D point. Can contain nullpointers! <br /></td></tr>\n<tr class=\"separator:afd9e2bf1dcaa1f82206b616d662f6437\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9f027e13363d1bc6a96f90f58840bf8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa9f027e13363d1bc6a96f90f58840bf8\"></a>\nTrackIds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">track_id_vec_</a></td></tr>\n<tr class=\"memdesc:aa9f027e13363d1bc6a96f90f58840bf8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">ID of every observed 3d point. -1 if no point assigned. <br /></td></tr>\n<tr class=\"separator:aa9f027e13363d1bc6a96f90f58840bf8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78fb662e02b5d690d0ec5aff180c3b95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78fb662e02b5d690d0ec5aff180c3b95\"></a>\nSeedRefs&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">seed_ref_vec_</a></td></tr>\n<tr class=\"memdesc:a78fb662e02b5d690d0ec5aff180c3b95\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Only for seeds during reprojection. <br /></td></tr>\n<tr class=\"separator:a78fb662e02b5d690d0ec5aff180c3b95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa35f9b3a6e275eddc65c7f366a691301\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa35f9b3a6e275eddc65c7f366a691301\"></a>\nSeedStates&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">invmu_sigma2_a_b_vec_</a></td></tr>\n<tr class=\"memdesc:aa35f9b3a6e275eddc65c7f366a691301\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vector containing all necessary information for seed update. <br /></td></tr>\n<tr class=\"separator:aa35f9b3a6e275eddc65c7f366a691301\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a715ee179b47ed0ed16402e46890b3ca7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a715ee179b47ed0ed16402e46890b3ca7\"></a>\nstd::vector&lt; bool &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>in_ba_graph_vec_</b></td></tr>\n<tr class=\"separator:a715ee179b47ed0ed16402e46890b3ca7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a2a4b577e33d643e4455c1bdc4573b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7a2a4b577e33d643e4455c1bdc4573b7\"></a>\nFloatType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>seed_mu_range_</b></td></tr>\n<tr class=\"separator:a7a2a4b577e33d643e4455c1bdc4573b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a4708038228f42fe71f25c05f1bf378c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4708038228f42fe71f25c05f1bf378c9\"></a>\nstatic int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:a4708038228f42fe71f25c05f1bf378c9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Counts the number of created frames. Used to set the unique id. <br /></td></tr>\n<tr class=\"separator:a4708038228f42fe71f25c05f1bf378c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>A frame saves the image, the associated features and the estimated pose. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad60c0defb5c61abcadb3f341acaa62d9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad60c0defb5c61abcadb3f341acaa62d9\">&#9670;&nbsp;</a></span>jacobian_xyz2uv()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void svo::Frame::jacobian_xyz2uv </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>xyz_in_f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Eigen::Matrix&lt; double, 2, 6 &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>J</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p><a class=\"el\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \">Frame</a> jacobian for projection of 3D point in (f)rame coordinate to unit plane coordinates uv (focal length = 1). </p>\n\n</div>\n</div>\n<a id=\"a436a95418ec6eba4dd5fa283b9160dc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a436a95418ec6eba4dd5fa283b9160dc8\">&#9670;&nbsp;</a></span>setKeyPoints()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::Frame::setKeyPoints </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>The KeyPoints are those five features which are closest to the 4 image corners and to the center and which have a 3D point assigned. These points are used to quickly check whether two frames have overlapping field of view. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"frame_8h_source.html\">frame.h</a></li>\n<li>svo_common/src/frame.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameBundle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameBundle Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>at</b>(size_t i) const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>begin</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>begin</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>bundle_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cbegin</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cend</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>const_iterator</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>empty</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>end</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>end</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FrameBundle</b>(const std::vector&lt; FramePtr &gt; &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FrameBundle</b>(const FrameBundle &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FrameList</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frames_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">get_T_W_B</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getBundleId</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">getMinTimestampNanoseconds</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_measurements_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">imu_timestamps_ns_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>is_keyframe_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isKeyframe</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>iterator</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064\">numFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9\">numLandmarks</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da\">numTrackedFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FrameBundle &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">set_T_W_B</a>(const Transformation &amp;T_W_B)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setKeyframe</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>size</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>value_type</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrameBundle</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameBundle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameBundle Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1FrameBundle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameBundle Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a9a6c9741d6ff640ab023719f7d0a3348\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a6c9741d6ff640ab023719f7d0a3348\"></a>\ntypedef std::vector&lt; FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameList</b></td></tr>\n<tr class=\"separator:a9a6c9741d6ff640ab023719f7d0a3348\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9671c548403b11c5d211c72ec5c47c40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9671c548403b11c5d211c72ec5c47c40\"></a>\ntypedef FrameList::value_type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>value_type</b></td></tr>\n<tr class=\"separator:a9671c548403b11c5d211c72ec5c47c40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa38ef917e050e9e51cb805255d9276fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa38ef917e050e9e51cb805255d9276fd\"></a>\ntypedef FrameList::iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>iterator</b></td></tr>\n<tr class=\"separator:aa38ef917e050e9e51cb805255d9276fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ec95605413cbdffe8c11f7cd1d1f1a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8ec95605413cbdffe8c11f7cd1d1f1a2\"></a>\ntypedef FrameList::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>const_iterator</b></td></tr>\n<tr class=\"separator:a8ec95605413cbdffe8c11f7cd1d1f1a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af52c52ad9cecc1a00963c1f0309a58b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af52c52ad9cecc1a00963c1f0309a58b2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameBundle</b> (const std::vector&lt; FramePtr &gt; &amp;frames)</td></tr>\n<tr class=\"separator:af52c52ad9cecc1a00963c1f0309a58b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa235f6accf0f57e9746238204c2aac76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa235f6accf0f57e9746238204c2aac76\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameBundle</b> (const <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> &amp;)=delete</td></tr>\n<tr class=\"separator:aa235f6accf0f57e9746238204c2aac76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631d371a72542564a3da96161329cd3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a631d371a72542564a3da96161329cd3f\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a631d371a72542564a3da96161329cd3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c36c70a2bd465104ab1f260deaa51e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8c36c70a2bd465104ab1f260deaa51e0\"></a>\nconst FramePtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>at</b> (size_t i) const</td></tr>\n<tr class=\"separator:a8c36c70a2bd465104ab1f260deaa51e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13a0d7b8210ae2cd8f263e484cf9de81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13a0d7b8210ae2cd8f263e484cf9de81\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>size</b> () const</td></tr>\n<tr class=\"separator:a13a0d7b8210ae2cd8f263e484cf9de81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7ba1c0c513eca2fa2266f037d1e149d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7ba1c0c513eca2fa2266f037d1e149d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>empty</b> () const</td></tr>\n<tr class=\"separator:af7ba1c0c513eca2fa2266f037d1e149d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a106283eb1172b7c068fcba5ca846302a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a106283eb1172b7c068fcba5ca846302a\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBundleId</b> () const</td></tr>\n<tr class=\"separator:a106283eb1172b7c068fcba5ca846302a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5390318b9d6a32258d22e3f1c53b38f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab5390318b9d6a32258d22e3f1c53b38f\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">getMinTimestampNanoseconds</a> () const</td></tr>\n<tr class=\"memdesc:ab5390318b9d6a32258d22e3f1c53b38f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get timestamp of camera rig. <br /></td></tr>\n<tr class=\"separator:ab5390318b9d6a32258d22e3f1c53b38f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a736afc6e54f4707d603f67405bdd953a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a736afc6e54f4707d603f67405bdd953a\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">get_T_W_B</a> () const</td></tr>\n<tr class=\"memdesc:a736afc6e54f4707d603f67405bdd953a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of camera rig. <br /></td></tr>\n<tr class=\"separator:a736afc6e54f4707d603f67405bdd953a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adee577b4de32262e5e61b1209aa50677\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adee577b4de32262e5e61b1209aa50677\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">set_T_W_B</a> (const Transformation &amp;T_W_B)</td></tr>\n<tr class=\"memdesc:adee577b4de32262e5e61b1209aa50677\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of camera rig. <br /></td></tr>\n<tr class=\"separator:adee577b4de32262e5e61b1209aa50677\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a662dc3d0e9faf3804eaf5740a06613ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a662dc3d0e9faf3804eaf5740a06613ee\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setKeyframe</b> ()</td></tr>\n<tr class=\"separator:a662dc3d0e9faf3804eaf5740a06613ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43bf38e4eb9a6b111ce9397b78d7f81d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43bf38e4eb9a6b111ce9397b78d7f81d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isKeyframe</b> () const</td></tr>\n<tr class=\"separator:a43bf38e4eb9a6b111ce9397b78d7f81d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5467fcf682ad5bb550fcb613aefcc6e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5467fcf682ad5bb550fcb613aefcc6e9\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9\">numLandmarks</a> () const</td></tr>\n<tr class=\"memdesc:a5467fcf682ad5bb550fcb613aefcc6e9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of landmark references in frames. <br /></td></tr>\n<tr class=\"separator:a5467fcf682ad5bb550fcb613aefcc6e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad635ea477834db67ab2b01c8674ca064\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad635ea477834db67ab2b01c8674ca064\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064\">numFeatures</a> () const</td></tr>\n<tr class=\"memdesc:ad635ea477834db67ab2b01c8674ca064\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of features. Not necessarily succesfully tracked ones. <br /></td></tr>\n<tr class=\"separator:ad635ea477834db67ab2b01c8674ca064\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abfc25b103af8196bcd8620f36d4e80da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abfc25b103af8196bcd8620f36d4e80da\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da\">numTrackedFeatures</a> () const</td></tr>\n<tr class=\"memdesc:abfc25b103af8196bcd8620f36d4e80da\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of tracked features: both landmarks and matched seeds. <br /></td></tr>\n<tr class=\"separator:abfc25b103af8196bcd8620f36d4e80da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165dd888b36e166db74e4ea51d44b8a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a165dd888b36e166db74e4ea51d44b8a8\"></a>\nFrameList::iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>begin</b> ()</td></tr>\n<tr class=\"separator:a165dd888b36e166db74e4ea51d44b8a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab89afe34aeedea9c605a94cb185dd9d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab89afe34aeedea9c605a94cb185dd9d8\"></a>\nFrameList::iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>end</b> ()</td></tr>\n<tr class=\"separator:ab89afe34aeedea9c605a94cb185dd9d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08d93dc77747e831c61ec2ed6733c780\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a08d93dc77747e831c61ec2ed6733c780\"></a>\nFrameList::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>begin</b> () const</td></tr>\n<tr class=\"separator:a08d93dc77747e831c61ec2ed6733c780\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3fe7a2c7ea72f52ee7c5428ecbad3975\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3fe7a2c7ea72f52ee7c5428ecbad3975\"></a>\nFrameList::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>end</b> () const</td></tr>\n<tr class=\"separator:a3fe7a2c7ea72f52ee7c5428ecbad3975\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa92117b97f1e376135a343e335aff852\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa92117b97f1e376135a343e335aff852\"></a>\nFrameList::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cbegin</b> () const</td></tr>\n<tr class=\"separator:aa92117b97f1e376135a343e335aff852\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74dd835a3e0ac4db53c7fdd1a9856bb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a74dd835a3e0ac4db53c7fdd1a9856bb1\"></a>\nFrameList::const_iterator&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cend</b> () const</td></tr>\n<tr class=\"separator:a74dd835a3e0ac4db53c7fdd1a9856bb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adeeaf270b591d28ad96a23cea5236b5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adeeaf270b591d28ad96a23cea5236b5a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:adeeaf270b591d28ad96a23cea5236b5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9488bfeb4fa0efc13a0a21ce6f05eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9488bfeb4fa0efc13a0a21ce6f05eec\"></a>\nFrameList&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frames_</b></td></tr>\n<tr class=\"separator:ad9488bfeb4fa0efc13a0a21ce6f05eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13b70e1a1ece794728627ad34b632721\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Eigen::Matrix&lt; int64_t, 1, Eigen::Dynamic &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">imu_timestamps_ns_</a></td></tr>\n<tr class=\"separator:a13b70e1a1ece794728627ad34b632721\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca0722fc8f2efcd87ee7d34b7146c97d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aca0722fc8f2efcd87ee7d34b7146c97d\"></a>\nEigen::Matrix&lt; double, 6, Eigen::Dynamic &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_measurements_</b></td></tr>\n<tr class=\"separator:aca0722fc8f2efcd87ee7d34b7146c97d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a40613f0d2e65e1d2e76344bd19987e3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40613f0d2e65e1d2e76344bd19987e3f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>is_keyframe_</b> = false</td></tr>\n<tr class=\"separator:a40613f0d2e65e1d2e76344bd19987e3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a019085e039309d3c13a866ea8ef8e2d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a019085e039309d3c13a866ea8ef8e2d1\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_id_</b></td></tr>\n<tr class=\"separator:a019085e039309d3c13a866ea8ef8e2d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a13b70e1a1ece794728627ad34b632721\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13b70e1a1ece794728627ad34b632721\">&#9670;&nbsp;</a></span>imu_timestamps_ns_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Eigen::Matrix&lt;int64_t, 1, Eigen::Dynamic&gt; svo::FrameBundle::imu_timestamps_ns_</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>IMU measurements since the last nframe (including the last IMU measurement of the previous edge for integration). </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"frame_8h_source.html\">frame.h</a></li>\n<li>svo_common/src/frame.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameGpu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameGpu Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bundle_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">bundleId</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">checkKeyPoints</a>(const FeaturePtr &amp;ftr)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>clearFeatureStorage</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">copyFeaturesFrom</a>(const Frame &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cu_camera_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">cu_img_pyramid_copy_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cu_T_cam_imu_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cu_T_imu_cam_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">deleteLandmark</a>(const size_t &amp;feature_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">f_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d\">Frame</a>(const CameraPtr &amp;cam, const cv::Mat &amp;img, const int64_t timestamp_ns, const size_t n_pyr_levels)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594\">Frame</a>(const int id, const int64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Frame</b>(const Frame &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460\">FrameGpu</a>(const CameraPtr &amp;cam, const cv::Mat &amp;img, const uint64_t timestamp_ns, const size_t n_pyr_levels)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#ab93bcafca2b6bc7bb11c6dc07e3397ee\">FrameGpu</a>(const int id, const uint64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FrameGpu</b>(const FrameGpu &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getEmptyFeatureWrapper</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getErrorMultiplier</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getFeatureWrapper</b>(size_t idx) (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">getNFrameIndex</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a>(size_t idx) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">getSeedPosInFrame</a>(size_t idx) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">getTimestampNSec</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">getTimestampSec</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">grad_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">imuPos</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>in_ba_graph_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>in_ba_graph_vec_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">initFrame</a>(const cv::Mat &amp;img, size_t n_pyr_levels)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">initGpuData</a>(imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_imu_cam, imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_cam_imu, imp::cu::PinholeCamera::Ptr &amp;cu_camera)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">invmu_sigma2_a_b_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a>(size_t i) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">isVisible</a>(const Eigen::Vector3d &amp;xyz_w) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">jacobian_xyz2f_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 3, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">jacobian_xyz2image_imu</a>(const Camera &amp;cam, const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">jacobian_xyz2img_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, const Eigen::Matrix&lt; double, 2, 3 &gt; &amp;J_cam, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">jacobian_xyz2uv</a>(const Eigen::Vector3d &amp;xyz_in_f, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">jacobian_xyz2uv_imu</a>(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">key_pts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">landmark_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Landmarks</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">level_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FrameGpu &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const Frame &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>original_color_image_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">pos</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">px_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">R_imu_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">resizeFeatureStorage</a>(size_t num)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">score_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>seed_mu_range_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">seed_ref_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SeedRefs</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>serialize</b>(Archive &amp;ar, const unsigned) (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">set_T_cam_imu</a>(const Transformation &amp;T_cam_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">setKeyPoints</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">setNFrameIndex</a>(size_t nframe_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_cam_body_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">T_cam_world</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">T_imu_world</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>timestamp_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">track_id_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">type_vec_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">~Frame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">~FrameGpu</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameGpu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameGpu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1FrameGpu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameGpu Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>The <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\" title=\"The FrameGpu class adds GPU data members to the frame base class. \">FrameGpu</a> class adds GPU data members to the frame base class.  \n <a href=\"classsvo_1_1FrameGpu.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame__gpu_8h_source.html\">frame_gpu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FrameGpu:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameGpu__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameGpu_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FrameGpu_inherit__map\" id=\"svo_1_1FrameGpu_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \" alt=\"\" coords=\"17,5,105,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FrameGpu:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameGpu__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameGpu_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FrameGpu_coll__map\" id=\"svo_1_1FrameGpu_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \" alt=\"\" coords=\"17,95,105,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a63931645d26991b9bf4c65756005a839\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63931645d26991b9bf4c65756005a839\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a63931645d26991b9bf4c65756005a839\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1Frame\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1Frame')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td></tr>\n<tr class=\"memitem:a1df2f9ea8f00364921e16ba258789c22 inherit pub_types_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1df2f9ea8f00364921e16ba258789c22\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b> = std::mutex</td></tr>\n<tr class=\"separator:a1df2f9ea8f00364921e16ba258789c22 inherit pub_types_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3adddb424e65b216bcf77202b12cd64c inherit pub_types_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3adddb424e65b216bcf77202b12cd64c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b> = std::unique_lock&lt; std::mutex &gt;</td></tr>\n<tr class=\"separator:a3adddb424e65b216bcf77202b12cd64c inherit pub_types_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa57b9953d1e582eda30d9389b8131899 inherit pub_types_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa57b9953d1e582eda30d9389b8131899\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Landmarks</b> = std::vector&lt; PointPtr &gt;</td></tr>\n<tr class=\"separator:aa57b9953d1e582eda30d9389b8131899 inherit pub_types_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d08c93de2f127b1ef5cfb372b60e6e inherit pub_types_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af6d08c93de2f127b1ef5cfb372b60e6e\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedRefs</b> = std::vector&lt; <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a> &gt;</td></tr>\n<tr class=\"separator:af6d08c93de2f127b1ef5cfb372b60e6e inherit pub_types_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6ed28aa5718fde01dfc05c42cc977460\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6ed28aa5718fde01dfc05c42cc977460\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460\">FrameGpu</a> (const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const cv::Mat &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, const uint64_t timestamp_ns, const size_t n_pyr_levels)</td></tr>\n<tr class=\"memdesc:a6ed28aa5718fde01dfc05c42cc977460\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default Constructor. <br /></td></tr>\n<tr class=\"separator:a6ed28aa5718fde01dfc05c42cc977460\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab93bcafca2b6bc7bb11c6dc07e3397ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab93bcafca2b6bc7bb11c6dc07e3397ee\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#ab93bcafca2b6bc7bb11c6dc07e3397ee\">FrameGpu</a> (const int <a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>, const uint64_t timestamp_ns, const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>)</td></tr>\n<tr class=\"memdesc:ab93bcafca2b6bc7bb11c6dc07e3397ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor without image. Just for testing! <br /></td></tr>\n<tr class=\"separator:ab93bcafca2b6bc7bb11c6dc07e3397ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0b3677297fc722028c14f24c632191e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae0b3677297fc722028c14f24c632191e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a> ()</td></tr>\n<tr class=\"memdesc:ae0b3677297fc722028c14f24c632191e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Empty constructor. Just for testing! <br /></td></tr>\n<tr class=\"separator:ae0b3677297fc722028c14f24c632191e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6d9d899ea61194bff5d761398934d2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa6d9d899ea61194bff5d761398934d2c\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">~FrameGpu</a> ()</td></tr>\n<tr class=\"memdesc:aa6d9d899ea61194bff5d761398934d2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor. <br /></td></tr>\n<tr class=\"separator:aa6d9d899ea61194bff5d761398934d2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c9db28cd7954bac4e4189eb86da05c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c9db28cd7954bac4e4189eb86da05c1\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameGpu</b> (const <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a0c9db28cd7954bac4e4189eb86da05c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed479d606a764f29aeb35b3e8a58b95b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed479d606a764f29aeb35b3e8a58b95b\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> &amp;)=delete</td></tr>\n<tr class=\"separator:aed479d606a764f29aeb35b3e8a58b95b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b7e406066dd361c70c745369138760a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b7e406066dd361c70c745369138760a\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">initGpuData</a> (imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_imu_cam, imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_cam_imu, imp::cu::PinholeCamera::Ptr &amp;cu_camera)</td></tr>\n<tr class=\"memdesc:a2b7e406066dd361c70c745369138760a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initialize new frame and create image pyramid. <br /></td></tr>\n<tr class=\"separator:a2b7e406066dd361c70c745369138760a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1Frame\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1Frame')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td></tr>\n<tr class=\"memitem:a6a7f235279498122c11fe98e9309e59d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a7f235279498122c11fe98e9309e59d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d\">Frame</a> (const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const cv::Mat &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, const int64_t timestamp_ns, const size_t n_pyr_levels)</td></tr>\n<tr class=\"memdesc:a6a7f235279498122c11fe98e9309e59d inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default Constructor. <br /></td></tr>\n<tr class=\"separator:a6a7f235279498122c11fe98e9309e59d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95c9a8be611c28f653269a45460ce594 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95c9a8be611c28f653269a45460ce594\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594\">Frame</a> (const int <a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>, const int64_t timestamp_ns, const CameraPtr &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>)</td></tr>\n<tr class=\"memdesc:a95c9a8be611c28f653269a45460ce594 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor without image. Just for testing! <br /></td></tr>\n<tr class=\"separator:a95c9a8be611c28f653269a45460ce594 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a659039742b5d2b5545feb811efe935e1 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a659039742b5d2b5545feb811efe935e1\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a> ()</td></tr>\n<tr class=\"memdesc:a659039742b5d2b5545feb811efe935e1 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Empty constructor. Just for testing! <br /></td></tr>\n<tr class=\"separator:a659039742b5d2b5545feb811efe935e1 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3d890f9fee920036f430bf6e546a174 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3d890f9fee920036f430bf6e546a174\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">~Frame</a> ()</td></tr>\n<tr class=\"memdesc:aa3d890f9fee920036f430bf6e546a174 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor. <br /></td></tr>\n<tr class=\"separator:aa3d890f9fee920036f430bf6e546a174 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8140b737e586a0681df3d05dbc89bc6 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8140b737e586a0681df3d05dbc89bc6\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Frame</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;)=delete</td></tr>\n<tr class=\"separator:ab8140b737e586a0681df3d05dbc89bc6 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bf86325cb343c20c0a233e84a739110 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bf86325cb343c20c0a233e84a739110\"></a>\n<a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a9bf86325cb343c20c0a233e84a739110 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ee4da5f0e0a4e0dbf36086d61f17cd inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ee4da5f0e0a4e0dbf36086d61f17cd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">initFrame</a> (const cv::Mat &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, size_t n_pyr_levels)</td></tr>\n<tr class=\"memdesc:a09ee4da5f0e0a4e0dbf36086d61f17cd inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initialize new frame and create image pyramid. <br /></td></tr>\n<tr class=\"separator:a09ee4da5f0e0a4e0dbf36086d61f17cd inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90c4503d84f89bad3a1ed7971902b000 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a90c4503d84f89bad3a1ed7971902b000\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a> ()</td></tr>\n<tr class=\"memdesc:a90c4503d84f89bad3a1ed7971902b000 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Select this frame as keyframe. <br /></td></tr>\n<tr class=\"separator:a90c4503d84f89bad3a1ed7971902b000 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af223f8e7708a90603f962ca37b3996d5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af223f8e7708a90603f962ca37b3996d5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">deleteLandmark</a> (const size_t &amp;feature_index)</td></tr>\n<tr class=\"memdesc:af223f8e7708a90603f962ca37b3996d5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Delete feature. <br /></td></tr>\n<tr class=\"separator:af223f8e7708a90603f962ca37b3996d5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa00ae41c589a338e52233ae1b258fd32 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa00ae41c589a338e52233ae1b258fd32\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">resizeFeatureStorage</a> (size_t num)</td></tr>\n<tr class=\"memdesc:aa00ae41c589a338e52233ae1b258fd32 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resize the number of features. (NOT THREADSAFE) <br /></td></tr>\n<tr class=\"separator:aa00ae41c589a338e52233ae1b258fd32 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af556b971591d297012d216a5f750993d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af556b971591d297012d216a5f750993d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>clearFeatureStorage</b> ()</td></tr>\n<tr class=\"separator:af556b971591d297012d216a5f750993d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc6e29aea1bc1432cf4cfcc02dfa0c74 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adc6e29aea1bc1432cf4cfcc02dfa0c74\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">copyFeaturesFrom</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;other)</td></tr>\n<tr class=\"memdesc:adc6e29aea1bc1432cf4cfcc02dfa0c74 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Copy feature data from another frame. <br /></td></tr>\n<tr class=\"separator:adc6e29aea1bc1432cf4cfcc02dfa0c74 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5aac514a1ffec76152784adba53ebef5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5aac514a1ffec76152784adba53ebef5\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getFeatureWrapper</b> (size_t idx)</td></tr>\n<tr class=\"separator:a5aac514a1ffec76152784adba53ebef5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bee4f1444c28a4397d90a5a57798164 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0bee4f1444c28a4397d90a5a57798164\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getEmptyFeatureWrapper</b> ()</td></tr>\n<tr class=\"separator:a0bee4f1444c28a4397d90a5a57798164 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cf372944980408bfc193c07deafd41d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cf372944980408bfc193c07deafd41d\"></a>\nFloatType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a> (size_t idx) const</td></tr>\n<tr class=\"memdesc:a3cf372944980408bfc193c07deafd41d inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get depth at seed. <br /></td></tr>\n<tr class=\"separator:a3cf372944980408bfc193c07deafd41d inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a9283929911b5480b133ae84fdd6577 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1a9283929911b5480b133ae84fdd6577\"></a>\nPosition&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">getSeedPosInFrame</a> (size_t idx) const</td></tr>\n<tr class=\"memdesc:a1a9283929911b5480b133ae84fdd6577 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get coordinates of seed in frame coordinates. <br /></td></tr>\n<tr class=\"separator:a1a9283929911b5480b133ae84fdd6577 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34b93936cd3e520a509ba4a3d7e46bc7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34b93936cd3e520a509ba4a3d7e46bc7\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a> () const</td></tr>\n<tr class=\"memdesc:a34b93936cd3e520a509ba4a3d7e46bc7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of features. Not necessarily succesfully tracked ones. <br /></td></tr>\n<tr class=\"separator:a34b93936cd3e520a509ba4a3d7e46bc7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ba195e035e25336118752e8d808137 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ba195e035e25336118752e8d808137\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a> (size_t i) const</td></tr>\n<tr class=\"memdesc:a09ba195e035e25336118752e8d808137 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if i-th keypoint has a reference to a landmark. <br /></td></tr>\n<tr class=\"separator:a09ba195e035e25336118752e8d808137 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c72a896ce597c05ca09d5d2758d15a6 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5c72a896ce597c05ca09d5d2758d15a6\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a> () const</td></tr>\n<tr class=\"memdesc:a5c72a896ce597c05ca09d5d2758d15a6 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of successfully tracked features: seeds and actual landmarks. <br /></td></tr>\n<tr class=\"separator:a5c72a896ce597c05ca09d5d2758d15a6 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a857540046a75a544750db47e907def0c inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a857540046a75a544750db47e907def0c\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a> () const</td></tr>\n<tr class=\"memdesc:a857540046a75a544750db47e907def0c inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of landmark references in frames. <br /></td></tr>\n<tr class=\"separator:a857540046a75a544750db47e907def0c inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a436a95418ec6eba4dd5fa283b9160dc8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">setKeyPoints</a> ()</td></tr>\n<tr class=\"separator:a436a95418ec6eba4dd5fa283b9160dc8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5820b68c25453f4bceccd46e3d96f697 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5820b68c25453f4bceccd46e3d96f697\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">checkKeyPoints</a> (const FeaturePtr &amp;ftr)</td></tr>\n<tr class=\"memdesc:a5820b68c25453f4bceccd46e3d96f697 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if we can select five better key-points. <br /></td></tr>\n<tr class=\"separator:a5820b68c25453f4bceccd46e3d96f697 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9ba93932550e92aa43195aa831f19f7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9ba93932550e92aa43195aa831f19f7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">isVisible</a> (const Eigen::Vector3d &amp;xyz_w) const</td></tr>\n<tr class=\"memdesc:ab9ba93932550e92aa43195aa831f19f7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if a point in (w)orld coordinate frame is visible in the image. <br /></td></tr>\n<tr class=\"separator:ab9ba93932550e92aa43195aa831f19f7 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a66fe3946a76445ada2e38147cfbd8e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5a66fe3946a76445ada2e38147cfbd8e\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:a5a66fe3946a76445ada2e38147cfbd8e inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Masks is same size as the image. Convention: 0 == masked, nonzero == valid. <br /></td></tr>\n<tr class=\"separator:a5a66fe3946a76445ada2e38147cfbd8e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f86fbd03628ffd017f517a9a45eb95f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f86fbd03628ffd017f517a9a45eb95f\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a> () const</td></tr>\n<tr class=\"memdesc:a4f86fbd03628ffd017f517a9a45eb95f inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Full resolution image stored in the frame. <br /></td></tr>\n<tr class=\"separator:a4f86fbd03628ffd017f517a9a45eb95f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85b6751930952162b2f7ced8f06d2036 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a85b6751930952162b2f7ced8f06d2036\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a> () const</td></tr>\n<tr class=\"memdesc:a85b6751930952162b2f7ced8f06d2036 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Id of frame. <br /></td></tr>\n<tr class=\"separator:a85b6751930952162b2f7ced8f06d2036 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b98dd459dee140f95ed966dc9ffab37 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b98dd459dee140f95ed966dc9ffab37\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">bundleId</a> () const</td></tr>\n<tr class=\"memdesc:a2b98dd459dee140f95ed966dc9ffab37 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Id of frame bundle. <br /></td></tr>\n<tr class=\"separator:a2b98dd459dee140f95ed966dc9ffab37 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8ec058962266550f9b9f5125892fab8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8ec058962266550f9b9f5125892fab8\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">getNFrameIndex</a> () const</td></tr>\n<tr class=\"memdesc:ab8ec058962266550f9b9f5125892fab8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get storage index of frame in parent NFrame. <br /></td></tr>\n<tr class=\"separator:ab8ec058962266550f9b9f5125892fab8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a36595081e9197047d95287a21a7b6e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7a36595081e9197047d95287a21a7b6e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">setNFrameIndex</a> (size_t nframe_index)</td></tr>\n<tr class=\"memdesc:a7a36595081e9197047d95287a21a7b6e inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set storage index of frame in parent NFrame. <br /></td></tr>\n<tr class=\"separator:a7a36595081e9197047d95287a21a7b6e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9227125f71925f4562e99d938a7b097f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9227125f71925f4562e99d938a7b097f\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a> () const</td></tr>\n<tr class=\"memdesc:a9227125f71925f4562e99d938a7b097f inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera pose in imu frame. <br /></td></tr>\n<tr class=\"separator:a9227125f71925f4562e99d938a7b097f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a054fe91073950d31f74111e68417cf15 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a054fe91073950d31f74111e68417cf15\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a> () const</td></tr>\n<tr class=\"memdesc:a054fe91073950d31f74111e68417cf15 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get imu pose in camera frame. <br /></td></tr>\n<tr class=\"separator:a054fe91073950d31f74111e68417cf15 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bd2d83bab896de855384d059c43de5f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bd2d83bab896de855384d059c43de5f\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">T_cam_world</a> () const</td></tr>\n<tr class=\"memdesc:a1bd2d83bab896de855384d059c43de5f inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of world origin in frame coordinates. <br /></td></tr>\n<tr class=\"separator:a1bd2d83bab896de855384d059c43de5f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a013ffe3d5c749b856c1c2f812a6b498e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a013ffe3d5c749b856c1c2f812a6b498e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a> () const</td></tr>\n<tr class=\"memdesc:a013ffe3d5c749b856c1c2f812a6b498e inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of the cam in world coordinates. <br /></td></tr>\n<tr class=\"separator:a013ffe3d5c749b856c1c2f812a6b498e inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aada7346f4b09e9273461136e909b9bc5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aada7346f4b09e9273461136e909b9bc5\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a> () const</td></tr>\n<tr class=\"memdesc:aada7346f4b09e9273461136e909b9bc5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of imu in world coordinates. <br /></td></tr>\n<tr class=\"separator:aada7346f4b09e9273461136e909b9bc5 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a766ef97750ad3d3fac12b8dada48db2a inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a766ef97750ad3d3fac12b8dada48db2a\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">T_imu_world</a> () const</td></tr>\n<tr class=\"memdesc:a766ef97750ad3d3fac12b8dada48db2a inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get pose of world-origin in IMU coordinates. <br /></td></tr>\n<tr class=\"separator:a766ef97750ad3d3fac12b8dada48db2a inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a352e9d9ef659c384a3f9d422cf24f940 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a352e9d9ef659c384a3f9d422cf24f940\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">set_T_cam_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>)</td></tr>\n<tr class=\"memdesc:a352e9d9ef659c384a3f9d422cf24f940 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set camera to imu transformation. <br /></td></tr>\n<tr class=\"separator:a352e9d9ef659c384a3f9d422cf24f940 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dbb5a6ff1428e5f9fac69877a71b85f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dbb5a6ff1428e5f9fac69877a71b85f\"></a>\nconst CameraPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a> () const</td></tr>\n<tr class=\"memdesc:a7dbb5a6ff1428e5f9fac69877a71b85f inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model. <br /></td></tr>\n<tr class=\"separator:a7dbb5a6ff1428e5f9fac69877a71b85f inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04f38c38d3a837d9408fb1cceaafdc46 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a04f38c38d3a837d9408fb1cceaafdc46\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">getTimestampNSec</a> () const</td></tr>\n<tr class=\"memdesc:a04f38c38d3a837d9408fb1cceaafdc46 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of frame in nanoseconds. <br /></td></tr>\n<tr class=\"separator:a04f38c38d3a837d9408fb1cceaafdc46 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a677ab5fadd2f9dd87c35a36c57460528 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a677ab5fadd2f9dd87c35a36c57460528\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">getTimestampSec</a> () const</td></tr>\n<tr class=\"memdesc:a677ab5fadd2f9dd87c35a36c57460528 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of frame in seconds. <br /></td></tr>\n<tr class=\"separator:a677ab5fadd2f9dd87c35a36c57460528 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09ebfebf95e30d65273e69c55e6617a2 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09ebfebf95e30d65273e69c55e6617a2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a> () const</td></tr>\n<tr class=\"memdesc:a09ebfebf95e30d65273e69c55e6617a2 inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Was this frame selected as keyframe? <br /></td></tr>\n<tr class=\"separator:a09ebfebf95e30d65273e69c55e6617a2 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace67c4917849a759810d2927886b02ad inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace67c4917849a759810d2927886b02ad\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">pos</a> () const</td></tr>\n<tr class=\"memdesc:ace67c4917849a759810d2927886b02ad inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return the pose of the frame in the (w)orld coordinate frame. <br /></td></tr>\n<tr class=\"separator:ace67c4917849a759810d2927886b02ad inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65ace6a33926bac64d78617444c0efab inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65ace6a33926bac64d78617444c0efab\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">imuPos</a> () const</td></tr>\n<tr class=\"memdesc:a65ace6a33926bac64d78617444c0efab inherit pub_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the pose of the imu frame in (w)orld coordinate frame. <br /></td></tr>\n<tr class=\"separator:a65ace6a33926bac64d78617444c0efab inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ae23c4d53f2a606d51b3f2f5af1e6fb inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5ae23c4d53f2a606d51b3f2f5af1e6fb\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getErrorMultiplier</b> () const</td></tr>\n<tr class=\"separator:a5ae23c4d53f2a606d51b3f2f5af1e6fb inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa23ee69bdec8975d5194531cea9c2c33 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa23ee69bdec8975d5194531cea9c2c33\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const</td></tr>\n<tr class=\"separator:aa23ee69bdec8975d5194531cea9c2c33 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06e1507b1dabd4e036a30f42e90b4ea8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a06e1507b1dabd4e036a30f42e90b4ea8\"></a>\ntemplate&lt;typename Archive &gt; </td></tr>\n<tr class=\"memitem:a06e1507b1dabd4e036a30f42e90b4ea8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>serialize</b> (Archive &amp;ar, const unsigned)</td></tr>\n<tr class=\"separator:a06e1507b1dabd4e036a30f42e90b4ea8 inherit pub_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:afc537469a5ad3d24e76b57a638c8304f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afc537469a5ad3d24e76b57a638c8304f\"></a>\nstd::vector&lt; imp::cu::ImageGpu8uC1::Ptr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">cu_img_pyramid_copy_</a></td></tr>\n<tr class=\"memdesc:afc537469a5ad3d24e76b57a638c8304f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image Pyramid. <br /></td></tr>\n<tr class=\"separator:afc537469a5ad3d24e76b57a638c8304f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a533786d77b1798e9f73083ddb8b789b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a533786d77b1798e9f73083ddb8b789b0\"></a>\nimp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_T_imu_cam_</b></td></tr>\n<tr class=\"separator:a533786d77b1798e9f73083ddb8b789b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7c1717822060d1966912acca312b82e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7c1717822060d1966912acca312b82e\"></a>\nimp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_T_cam_imu_</b></td></tr>\n<tr class=\"separator:ac7c1717822060d1966912acca312b82e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2175e6f13ee00ee322da1ab64302d433\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2175e6f13ee00ee322da1ab64302d433\"></a>\nimp::cu::PinholeCamera::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_camera_</b></td></tr>\n<tr class=\"separator:a2175e6f13ee00ee322da1ab64302d433\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1Frame\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1Frame')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td></tr>\n<tr class=\"memitem:a3220d0fd39e2c2b6b502ebe5e56fe3e0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3220d0fd39e2c2b6b502ebe5e56fe3e0\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a></td></tr>\n<tr class=\"memdesc:a3220d0fd39e2c2b6b502ebe5e56fe3e0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unique id of the frame. <br /></td></tr>\n<tr class=\"separator:a3220d0fd39e2c2b6b502ebe5e56fe3e0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13b4e23a33667f2ededd5ec9b9719b2c inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13b4e23a33667f2ededd5ec9b9719b2c\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_id_</b></td></tr>\n<tr class=\"separator:a13b4e23a33667f2ededd5ec9b9719b2c inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c725631540e15ccc2f0d1378a8ba170 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c725631540e15ccc2f0d1378a8ba170\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a> = -1</td></tr>\n<tr class=\"memdesc:a2c725631540e15ccc2f0d1378a8ba170 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Storage index in NFrame. <br /></td></tr>\n<tr class=\"separator:a2c725631540e15ccc2f0d1378a8ba170 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a697ab5c0ab639af5ff97e7f2bba471df inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a697ab5c0ab639af5ff97e7f2bba471df\"></a>\nCameraPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a></td></tr>\n<tr class=\"memdesc:a697ab5c0ab639af5ff97e7f2bba471df inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model. <br /></td></tr>\n<tr class=\"separator:a697ab5c0ab639af5ff97e7f2bba471df inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a749fa7087396f987838c81697c97ae33 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a749fa7087396f987838c81697c97ae33\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a></td></tr>\n<tr class=\"memdesc:a749fa7087396f987838c81697c97ae33 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Transform (f)rame from (w)orld. <br /></td></tr>\n<tr class=\"separator:a749fa7087396f987838c81697c97ae33 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1147e6dd9b678161585875e4a4048987 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1147e6dd9b678161585875e4a4048987\"></a>\nImgPyr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a></td></tr>\n<tr class=\"memdesc:a1147e6dd9b678161585875e4a4048987 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image Pyramid. <br /></td></tr>\n<tr class=\"separator:a1147e6dd9b678161585875e4a4048987 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dee8075f4ba26726adfc62cf4f09d0a inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5dee8075f4ba26726adfc62cf4f09d0a\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>original_color_image_</b></td></tr>\n<tr class=\"separator:a5dee8075f4ba26726adfc62cf4f09d0a inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf53d418a1e2368f3f4010b4f81ba2c0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf53d418a1e2368f3f4010b4f81ba2c0\"></a>\nstd::vector&lt; std::pair&lt; int, Position &gt;, Eigen::aligned_allocator&lt; std::pair&lt; int, Position &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">key_pts_</a></td></tr>\n<tr class=\"memdesc:acf53d418a1e2368f3f4010b4f81ba2c0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Five features and associated 3D points which are used to detect if two frames have overlapping field of view. store index + depth. <br /></td></tr>\n<tr class=\"separator:acf53d418a1e2368f3f4010b4f81ba2c0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ae56e6cb7e35f1ec17aedb9f00ac3d0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a> = false</td></tr>\n<tr class=\"memdesc:a4ae56e6cb7e35f1ec17aedb9f00ac3d0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Was this frames selected as keyframe? <br /></td></tr>\n<tr class=\"separator:a4ae56e6cb7e35f1ec17aedb9f00ac3d0 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a137c490d744a7002f7608801714edba9 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a137c490d744a7002f7608801714edba9\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a></td></tr>\n<tr class=\"memdesc:a137c490d744a7002f7608801714edba9 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of last publishing. <br /></td></tr>\n<tr class=\"separator:a137c490d744a7002f7608801714edba9 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d17861d1073e693a369b5c7656e1d36 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d17861d1073e693a369b5c7656e1d36\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">R_imu_world_</a></td></tr>\n<tr class=\"memdesc:a1d17861d1073e693a369b5c7656e1d36 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">IMU Attitude provided by <em>external</em> attitude extimator. <br /></td></tr>\n<tr class=\"separator:a1d17861d1073e693a369b5c7656e1d36 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ce172da4157f8fb3941ea8d05cc0f44 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ce172da4157f8fb3941ea8d05cc0f44\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>in_ba_graph_</b> = false</td></tr>\n<tr class=\"separator:a2ce172da4157f8fb3941ea8d05cc0f44 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e6e195bb3dca4d9a2e623e5e3cbeb86 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e6e195bb3dca4d9a2e623e5e3cbeb86\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_</b> = -1</td></tr>\n<tr class=\"separator:a2e6e195bb3dca4d9a2e623e5e3cbeb86 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f0bd5479004f541142a4197d73f1ef1 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f0bd5479004f541142a4197d73f1ef1\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a></td></tr>\n<tr class=\"memdesc:a7f0bd5479004f541142a4197d73f1ef1 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">!&lt; Timestamp of when the image was recorded in nanoseconds. <br /></td></tr>\n<tr class=\"separator:a7f0bd5479004f541142a4197d73f1ef1 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a319359d47b4fd6ad122b28534ca1e07a inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a319359d47b4fd6ad122b28534ca1e07a\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_cam_body_</b></td></tr>\n<tr class=\"separator:a319359d47b4fd6ad122b28534ca1e07a inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83d59cf336b9d8e927b125f850ab9d63 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a83d59cf336b9d8e927b125f850ab9d63\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a> = 0u</td></tr>\n<tr class=\"memdesc:a83d59cf336b9d8e927b125f850ab9d63 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">the vectors below are initialized to the maximum number of feature-tracks <br /></td></tr>\n<tr class=\"separator:a83d59cf336b9d8e927b125f850ab9d63 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb36ee9773605f69538ebd27df49bc97 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb36ee9773605f69538ebd27df49bc97\"></a>\nKeypoints&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">px_vec_</a></td></tr>\n<tr class=\"memdesc:acb36ee9773605f69538ebd27df49bc97 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pixel Coordinates. <br /></td></tr>\n<tr class=\"separator:acb36ee9773605f69538ebd27df49bc97 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c26e6a2f3148d00539863eab5548bcf inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6c26e6a2f3148d00539863eab5548bcf\"></a>\nBearings&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">f_vec_</a></td></tr>\n<tr class=\"memdesc:a6c26e6a2f3148d00539863eab5548bcf inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bearing Vector. <br /></td></tr>\n<tr class=\"separator:a6c26e6a2f3148d00539863eab5548bcf inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2788e7b975245189b3058718748facb inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2788e7b975245189b3058718748facb\"></a>\nScores&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">score_vec_</a></td></tr>\n<tr class=\"memdesc:ac2788e7b975245189b3058718748facb inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keypoint detection scores. <br /></td></tr>\n<tr class=\"separator:ac2788e7b975245189b3058718748facb inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1accb3c86ed9d7abf140d83cc24f958d inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1accb3c86ed9d7abf140d83cc24f958d\"></a>\nLevels&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">level_vec_</a></td></tr>\n<tr class=\"memdesc:a1accb3c86ed9d7abf140d83cc24f958d inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Level of the feature. <br /></td></tr>\n<tr class=\"separator:a1accb3c86ed9d7abf140d83cc24f958d inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9824ce581e2aa2d8930a0378a98f84a6 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9824ce581e2aa2d8930a0378a98f84a6\"></a>\nGradients&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">grad_vec_</a></td></tr>\n<tr class=\"memdesc:a9824ce581e2aa2d8930a0378a98f84a6 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gradient direction of edgelet normal. <br /></td></tr>\n<tr class=\"separator:a9824ce581e2aa2d8930a0378a98f84a6 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71f690854f4a63c9b1496e3945d6156c inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a71f690854f4a63c9b1496e3945d6156c\"></a>\nFeatureTypes&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">type_vec_</a></td></tr>\n<tr class=\"memdesc:a71f690854f4a63c9b1496e3945d6156c inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Is the feature a corner or an edgelet? <br /></td></tr>\n<tr class=\"separator:a71f690854f4a63c9b1496e3945d6156c inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd9e2bf1dcaa1f82206b616d662f6437 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afd9e2bf1dcaa1f82206b616d662f6437\"></a>\nLandmarks&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">landmark_vec_</a></td></tr>\n<tr class=\"memdesc:afd9e2bf1dcaa1f82206b616d662f6437 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reference to 3D point. Can contain nullpointers! <br /></td></tr>\n<tr class=\"separator:afd9e2bf1dcaa1f82206b616d662f6437 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9f027e13363d1bc6a96f90f58840bf8 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa9f027e13363d1bc6a96f90f58840bf8\"></a>\nTrackIds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">track_id_vec_</a></td></tr>\n<tr class=\"memdesc:aa9f027e13363d1bc6a96f90f58840bf8 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">ID of every observed 3d point. -1 if no point assigned. <br /></td></tr>\n<tr class=\"separator:aa9f027e13363d1bc6a96f90f58840bf8 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78fb662e02b5d690d0ec5aff180c3b95 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78fb662e02b5d690d0ec5aff180c3b95\"></a>\nSeedRefs&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">seed_ref_vec_</a></td></tr>\n<tr class=\"memdesc:a78fb662e02b5d690d0ec5aff180c3b95 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Only for seeds during reprojection. <br /></td></tr>\n<tr class=\"separator:a78fb662e02b5d690d0ec5aff180c3b95 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa35f9b3a6e275eddc65c7f366a691301 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa35f9b3a6e275eddc65c7f366a691301\"></a>\nSeedStates&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">invmu_sigma2_a_b_vec_</a></td></tr>\n<tr class=\"memdesc:aa35f9b3a6e275eddc65c7f366a691301 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vector containing all necessary information for seed update. <br /></td></tr>\n<tr class=\"separator:aa35f9b3a6e275eddc65c7f366a691301 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a715ee179b47ed0ed16402e46890b3ca7 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a715ee179b47ed0ed16402e46890b3ca7\"></a>\nstd::vector&lt; bool &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>in_ba_graph_vec_</b></td></tr>\n<tr class=\"separator:a715ee179b47ed0ed16402e46890b3ca7 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a2a4b577e33d643e4455c1bdc4573b7 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7a2a4b577e33d643e4455c1bdc4573b7\"></a>\nFloatType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>seed_mu_range_</b></td></tr>\n<tr class=\"separator:a7a2a4b577e33d643e4455c1bdc4573b7 inherit pub_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classsvo_1_1Frame\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classsvo_1_1Frame')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td></tr>\n<tr class=\"memitem:ad60c0defb5c61abcadb3f341acaa62d9 inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">jacobian_xyz2uv</a> (const Eigen::Vector3d &amp;xyz_in_f, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"separator:ad60c0defb5c61abcadb3f341acaa62d9 inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e4ba9ed976e38b3897f777dd0001b6e inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e4ba9ed976e38b3897f777dd0001b6e\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">jacobian_xyz2uv_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a0e4ba9ed976e38b3897f777dd0001b6e inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of reprojection error (on unit plane) w.r.t. IMU pose. <br /></td></tr>\n<tr class=\"separator:a0e4ba9ed976e38b3897f777dd0001b6e inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad18170c2e4927c490edd7b871ada2faf inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad18170c2e4927c490edd7b871ada2faf\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">jacobian_xyz2img_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, const Eigen::Matrix&lt; double, 2, 3 &gt; &amp;J_cam, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:ad18170c2e4927c490edd7b871ada2faf inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of reprojection error (on image plane) w.r.t. IMU pose. <br /></td></tr>\n<tr class=\"separator:ad18170c2e4927c490edd7b871ada2faf inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03fbea569ca4969a51434cb23a73106a inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a03fbea569ca4969a51434cb23a73106a\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">jacobian_xyz2f_imu</a> (const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 3, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a03fbea569ca4969a51434cb23a73106a inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of using unit bearing vector for map point w.r.t IMU pose. <br /></td></tr>\n<tr class=\"separator:a03fbea569ca4969a51434cb23a73106a inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a949e59fb915ca2e5bbd00fa352a2d633 inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a949e59fb915ca2e5bbd00fa352a2d633\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">jacobian_xyz2image_imu</a> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>, const Transformation &amp;<a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</td></tr>\n<tr class=\"memdesc:a949e59fb915ca2e5bbd00fa352a2d633 inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian to image plane(also taking distortion into consideration) w.r.t IMU pose. <br /></td></tr>\n<tr class=\"separator:a949e59fb915ca2e5bbd00fa352a2d633 inherit pub_static_methods_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_attribs_classsvo_1_1Frame\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_attribs_classsvo_1_1Frame')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a></td></tr>\n<tr class=\"memitem:a4708038228f42fe71f25c05f1bf378c9 inherit pub_static_attribs_classsvo_1_1Frame\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4708038228f42fe71f25c05f1bf378c9\"></a>\nstatic int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:a4708038228f42fe71f25c05f1bf378c9 inherit pub_static_attribs_classsvo_1_1Frame\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Counts the number of created frames. Used to set the unique id. <br /></td></tr>\n<tr class=\"separator:a4708038228f42fe71f25c05f1bf378c9 inherit pub_static_attribs_classsvo_1_1Frame\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>The <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\" title=\"The FrameGpu class adds GPU data members to the frame base class. \">FrameGpu</a> class adds GPU data members to the frame base class. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"frame__gpu_8h_source.html\">frame_gpu.h</a></li>\n<li>svo_img_align/src/frame_gpu.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameGpu__coll__graph.md5",
    "content": "2f7820db4a2b9b72485f1b08609b263e"
  },
  {
    "path": "docs/classsvo_1_1FrameGpu__inherit__graph.md5",
    "content": "13574eb9b9b2cf497ff87baf83ee9f22"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerArray-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerArray Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addCallback</b>(const Callback &amp;callback) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addImages</b>(const std::vector&lt; cv::Mat &gt; &amp;images, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bundle_adjustment_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Callback</b> typedef (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depth_filter_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_max_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">FrameHandlerArray</a>(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a>(const BaseOptions &amp;base_options, const ReprojectorOptions &amp;reprojector_options, const DepthFilterOptions &amp;depthfilter_options, const DetectorOptions &amp;detector_options, const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FrameHandlerBase</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getBundleAdjuster</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getLastFrames</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a>(const bool use_velocity_in_frame)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_motion_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_rotation_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>lastFrames</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>linkBatchWorker</b>(BatchWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linkRealtimeWorker</b>(RealtimeWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>makeKeyframe</b>(const size_t camera_id) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a>(const Transformation &amp;T_f_w)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NewKeyFrameCriteria</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizePose</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimizeStructure</b>(const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>overlap_kfs_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pose_optimizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>processFirstFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>processFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">processFrameBundle</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>processSecondFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projectMapInFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_imu_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_imulast_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reloc_keyframe_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reprojectors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">resetAll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a>(const AbstractBundleAdjustmentPtr &amp;ba)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a>(const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a>(const std::vector&lt; FramePtr &gt; &amp;first_frames)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a>(const Transformation &amp;T_world_cam, size_t cam_index=0)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a>(const Transformation &amp;T_world_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setInitialPose</b>(const FrameBundlePtr &amp;frame_bundle) const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setRotationIncrementPrior</b>(const Quaternion &amp;R_lastimu_newimu) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setRotationPrior</b>(const Quaternion &amp;R_imu_world) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a>(const size_t num_observations)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sparse_img_align_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sparseImageAlignment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_newimu_lastimu_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>triggerCallbacks</b>(CallbackArgs... args) const (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>upgradeSeedsToFeatures</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrameHandlerArray</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FrameHandlerBase</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerArray.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameHandlerArray Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"classsvo_1_1FrameHandlerArray-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerArray Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::FrameHandlerArray:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerArray__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerArray_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FrameHandlerArray_inherit__map\" id=\"svo_1_1FrameHandlerArray_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"17,95,179,121\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"5,5,191,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FrameHandlerArray:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerArray__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerArray_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FrameHandlerArray_coll__map\" id=\"svo_1_1FrameHandlerArray_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"601,229,764,255\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"247,5,432,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; double \\&gt;\" alt=\"\" coords=\"255,71,423,98\"/>\n<area shape=\"rect\" id=\"node5\" href=\"structsvo_1_1BaseOptions.html\" title=\"Options for base frame handler module. Sets tracing and quality options. \" alt=\"\" coords=\"276,229,403,255\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; size_t \\&gt;\" alt=\"\" coords=\"257,279,422,306\"/>\n<area shape=\"rect\" id=\"node9\" href=\"classvk_1_1Timer.html\" title=\"vk::Timer\" alt=\"\" coords=\"301,381,378,407\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a643f2c7c1873dad682e9bc45f80a5e77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a643f2c7c1873dad682e9bc45f80a5e77\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">FrameHandlerArray</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depth_filter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;feature_detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td></tr>\n<tr class=\"memdesc:a643f2c7c1873dad682e9bc45f80a5e77\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a643f2c7c1873dad682e9bc45f80a5e77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5aa7c076e6866c5c11105415fd031fc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5aa7c076e6866c5c11105415fd031fc2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImages</b> (const std::vector&lt; cv::Mat &gt; &amp;images, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:a5aa7c076e6866c5c11105415fd031fc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafab401b1bba9c2086cc64c3821b519f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aafab401b1bba9c2086cc64c3821b519f\"></a>\nconst FrameBundlePtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>lastFrames</b> () const</td></tr>\n<tr class=\"separator:aafab401b1bba9c2086cc64c3821b519f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4728af3f3b1da1725ee24b811619b2f4\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depthfilter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td></tr>\n<tr class=\"memdesc:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adff0a39829af586cef39747a691d8874\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameHandlerBase</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6949716b6ec6711c94cba6d2a26f3f50\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6411fbf14c5a05c29c2a46fd6fb98acd\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a> () const</td></tr>\n<tr class=\"memdesc:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Has the pipeline started? (set_start_ is set to false when started). <br /></td></tr>\n<tr class=\"separator:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8b06f38023a60b23f43e5f61f95ccc1\"></a>\nconst MapPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a> () const</td></tr>\n<tr class=\"memdesc:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current map. <br /></td></tr>\n<tr class=\"separator:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1787cc2c35cdcb8f8db501570acbf0e9\"></a>\nconst CameraBundle::Ptr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a> () const</td></tr>\n<tr class=\"memdesc:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera bundle. <br /></td></tr>\n<tr class=\"separator:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9db554efa667216557b45d7d86c40035\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a> () const</td></tr>\n<tr class=\"memdesc:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get tracking quality. <br /></td></tr>\n<tr class=\"separator:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accb137df18256727849eebc75a1652fc\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a> () const</td></tr>\n<tr class=\"memdesc:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the processing time of the previous iteration. <br /></td></tr>\n<tr class=\"separator:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ec9d5f1b3aacc63b84496c3a8eb4d10\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a> () const</td></tr>\n<tr class=\"memdesc:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the number of feature observations of the last frame. <br /></td></tr>\n<tr class=\"separator:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62aa9b869ad2e6175c21e07fe2a2d7ff\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a> (const AbstractBundleAdjustmentPtr &amp;ba)</td></tr>\n<tr class=\"memdesc:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Set Bundle-Adjuster handler. <br /></td></tr>\n<tr class=\"separator:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d2ab4b4e06419c63c756c38cbd107da\"></a>\nconst AbstractBundleAdjustmentPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBundleAdjuster</b> () const</td></tr>\n<tr class=\"separator:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a448477cd9e952bea40b0143f6a462d0c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a> (const Transformation &amp;T_world_imu)</td></tr>\n<tr class=\"memdesc:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the IMU pose. <br /></td></tr>\n<tr class=\"separator:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa37ae9b23a5942ea1ad870e54b9ec2b4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a> (const Transformation &amp;T_world_cam, size_t cam_index=0)</td></tr>\n<tr class=\"memdesc:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the camera pose. <br /></td></tr>\n<tr class=\"separator:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf76d39d06a9d9fbee8a20d64758afb2\"></a>\nstd::vector&lt; FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a> () const</td></tr>\n<tr class=\"memdesc:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the set of spatially closest keyframes of the last frame. <br /></td></tr>\n<tr class=\"separator:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3b8de712d4e57aa6d31ab6e895df54d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation parameters. <br /></td></tr>\n<tr class=\"separator:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a994c2419caeab4d78e51e111f4fb0c7d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a> (const std::vector&lt; FramePtr &gt; &amp;first_frames)</td></tr>\n<tr class=\"memdesc:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the first frame (used for synthetic datasets in benchmark node) <br /></td></tr>\n<tr class=\"separator:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a> ()</td></tr>\n<tr class=\"separator:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2ccfae9c7fddf9cf7d4caa2655754f9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Will reset the map as soon as the current frame is finished processing. <br /></td></tr>\n<tr class=\"separator:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a287e9cfb8f8534dd4c968e508d900890\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a> () const</td></tr>\n<tr class=\"memdesc:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af92e9be1b148232309a57caa133c7c8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4371ddb46f1a5d6f8341e2c32eda16f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94261b973c67e7c568b97dd289ec34e0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationPrior</b> (const Quaternion &amp;R_imu_world)</td></tr>\n<tr class=\"separator:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b29027679e7d4e569f6348713204451\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationIncrementPrior</b> (const Quaternion &amp;R_lastimu_newimu)</td></tr>\n<tr class=\"separator:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b241c203805da9c9f0f281a93176e76\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getLastFrames</b> () const</td></tr>\n<tr class=\"separator:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa137938e09bef10b681a9d1b9ff7b497\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a> (const Transformation &amp;T_f_w)</td></tr>\n<tr class=\"memdesc:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default keyframe selection criterion. <br /></td></tr>\n<tr class=\"separator:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d7eb9a994e85a15a19656527b69fc26\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCallback</b> (const Callback &amp;callback)</td></tr>\n<tr class=\"separator:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7143c4a5e7719c9b613e450052d9bd93\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkBatchWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18b9738f703e4cc7db342550e9109e43\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkRealtimeWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a189623c3628ba7816bafebff35cb3f83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a189623c3628ba7816bafebff35cb3f83\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a189623c3628ba7816bafebff35cb3f83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab7a1f9ab39715dea3f20c1e096380eb9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afebe181759fb81a2d916fd7deeb2da69\"></a>\n<a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td></tr>\n<tr class=\"memdesc:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Options for BaseFrameHandler module. <br /></td></tr>\n<tr class=\"separator:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3134fcde8903009914568658d64d673d\"></a>\nCameraBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td></tr>\n<tr class=\"memdesc:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) <br /></td></tr>\n<tr class=\"separator:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af508b33ff564584a69ba0a7b225705af\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td></tr>\n<tr class=\"memdesc:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current frame-bundle that is being processed. <br /></td></tr>\n<tr class=\"separator:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeac142109c38dcf88d26dd5e022142d4\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td></tr>\n<tr class=\"memdesc:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Last frame-bundle that was processed. Can be nullptr. <br /></td></tr>\n<tr class=\"separator:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f25d8ecadf657853997b46408ccde9a\"></a>\nNewKeyFrameCriteria&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td></tr>\n<tr class=\"memdesc:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Custom callback to check if new keyframe is required. <br /></td></tr>\n<tr class=\"separator:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7963fe5b1a195cb1fa89a494a1ac632\"></a>\nVector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td></tr>\n<tr class=\"memdesc:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior computed from simple constant velocity assumption. <br /></td></tr>\n<tr class=\"separator:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a735f6fdf6ea066ed4a23370da868474e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td></tr>\n<tr class=\"memdesc:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial orientation. <br /></td></tr>\n<tr class=\"separator:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6fee293a59b3e14785deac23f9fdc9\"></a>\nSparseImgAlignBasePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparse_img_align_</b></td></tr>\n<tr class=\"separator:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48670a6ba2b2c7e823524254a4c6dfc5\"></a>\nstd::vector&lt; ReprojectorPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reprojectors_</b></td></tr>\n<tr class=\"separator:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1d063cd667efcc3901aab0c6944372b\"></a>\nPoseOptimizerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pose_optimizer_</b></td></tr>\n<tr class=\"separator:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87e8cef6075f4df76d5d5ec19677e5bd\"></a>\nDepthFilterPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_filter_</b></td></tr>\n<tr class=\"separator:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bbe74c39ee4804826c223c564fe1aa8\"></a>\nInitializerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializer_</b></td></tr>\n<tr class=\"separator:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a3494c8e26fbc59bcbeee40ea97cb8d7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3494c8e26fbc59bcbeee40ea97cb8d7c\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">processFrameBundle</a> () override</td></tr>\n<tr class=\"memdesc:a3494c8e26fbc59bcbeee40ea97cb8d7c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pipeline implementation. Called by base class. <br /></td></tr>\n<tr class=\"separator:a3494c8e26fbc59bcbeee40ea97cb8d7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78d35206b4b8ef9b5c8a759a8b133183\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78d35206b4b8ef9b5c8a759a8b133183\"></a>\nUpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>processFirstFrame</b> ()</td></tr>\n<tr class=\"separator:a78d35206b4b8ef9b5c8a759a8b133183\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe20affdc157be8dc51d7c08fd53c597\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abe20affdc157be8dc51d7c08fd53c597\"></a>\nUpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>processSecondFrame</b> ()</td></tr>\n<tr class=\"separator:abe20affdc157be8dc51d7c08fd53c597\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfeb1a63ad339280d5fdd29d38d3c7d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acfeb1a63ad339280d5fdd29d38d3c7d5\"></a>\nUpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>processFrame</b> ()</td></tr>\n<tr class=\"separator:acfeb1a63ad339280d5fdd29d38d3c7d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb6448a3ed87a40b5be5ee940c00c7dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeb6448a3ed87a40b5be5ee940c00c7dd\"></a>\nUpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>makeKeyframe</b> (const size_t camera_id)</td></tr>\n<tr class=\"separator:aeb6448a3ed87a40b5be5ee940c00c7dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6e2b5fece87e4058f8ee657a274b919\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa6e2b5fece87e4058f8ee657a274b919\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">resetAll</a> ()</td></tr>\n<tr class=\"memdesc:aa6e2b5fece87e4058f8ee657a274b919\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the frame handler. Implement in derived class. <br /></td></tr>\n<tr class=\"separator:aa6e2b5fece87e4058f8ee657a274b919\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a265250534782f747c1771aee1e8ca968\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setInitialPose</b> (const FrameBundlePtr &amp;frame_bundle) const</td></tr>\n<tr class=\"separator:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adfd72d12740106888bcaf9ee998ec38b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparseImageAlignment</b> ()</td></tr>\n<tr class=\"separator:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7585a1c1e8129ef0b69579f839bb30\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projectMapInFrame</b> ()</td></tr>\n<tr class=\"separator:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaeb3d495413f017c5c25eb658417f450\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizePose</b> ()</td></tr>\n<tr class=\"separator:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a51e15cfff626cb547355fdac19671df2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizeStructure</b> (const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter)</td></tr>\n<tr class=\"separator:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fd6722e78bb21097e8a9316b6e37150\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>upgradeSeedsToFeatures</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9423e9934db9ef80de33fdbb3bb9bf10\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a> ()</td></tr>\n<tr class=\"memdesc:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the map and frame handler to start from scratch. <br /></td></tr>\n<tr class=\"separator:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa73abab637db87bf6bfc2d913941018c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a> (const size_t num_observations)</td></tr>\n<tr class=\"memdesc:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a> (const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td></tr>\n<tr class=\"separator:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0657a487fcb022f2b868089ee1ae6066\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a> (const bool use_velocity_in_frame)</td></tr>\n<tr class=\"memdesc:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get motion prior, between last and new frames expressed in IMU frame. <br /></td></tr>\n<tr class=\"separator:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade31cb99ea4151d64b6778ed432aeab5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triggerCallbacks</b> (CallbackArgs... args) const</td></tr>\n<tr class=\"separator:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d84d297f21c10d00823dd3d10d3db4\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d1365b44b80eb0bc68fd8d06d6f5c02\"></a>\ntypedef std::function&lt; bool(const Transformation &amp;pose)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NewKeyFrameCriteria</b></td></tr>\n<tr class=\"separator:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac22a9d69a8c197246a8f1eb0997a5bc4\"></a>\ntypedef std::function&lt; void(CallbackArgs...)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Callback</b></td></tr>\n<tr class=\"separator:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a892e230faa0a3073ed05b363968ebe98\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td></tr>\n<tr class=\"memdesc:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d5da447318a37a2569f360a799bc795\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td></tr>\n<tr class=\"memdesc:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag that the user can set. Will reset the system before the next iteration. <br /></td></tr>\n<tr class=\"separator:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8feb15626100f7ef0adccd1d412596ad\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td></tr>\n<tr class=\"memdesc:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag the user can set to start the system when the next image is received. <br /></td></tr>\n<tr class=\"separator:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f186966e5ef11f3c7b011dd147b3c91\"></a>\nMapPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td></tr>\n<tr class=\"memdesc:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> of keyframes created by the slam system. <br /></td></tr>\n<tr class=\"separator:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60b9699bf6c7dd0e13c48f54b859a3d0\"></a>\n<a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td></tr>\n<tr class=\"memdesc:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stopwatch to measure time to process frame. <br /></td></tr>\n<tr class=\"separator:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad4dfcc808f58f96c2ffbc6f25ebaa39e\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; double &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td></tr>\n<tr class=\"memdesc:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Total processing time of the last 10 frames, used to give some user feedback on the performance. <br /></td></tr>\n<tr class=\"separator:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39961b8ed6a52d37cd5e12e7a506dac1\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td></tr>\n<tr class=\"memdesc:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance. <br /></td></tr>\n<tr class=\"separator:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21c9f984ddd3b2096595ec07dd5df12e\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td></tr>\n<tr class=\"memdesc:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observations in the previous frame. <br /></td></tr>\n<tr class=\"separator:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a731f97f7daa1b810d4f0c39f45c4804e\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td></tr>\n<tr class=\"memdesc:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An estimate of the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af74f64e83ef1c88cbcedf5f6e91ab208\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of frames processed since started. <br /></td></tr>\n<tr class=\"separator:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc7b83a56b092b5b6e1a2b220ff8df20\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td></tr>\n<tr class=\"memdesc:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Median depth at last frame. <br /></td></tr>\n<tr class=\"separator:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae014ba4e454ff376cb5b0ba25173e4ab\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td></tr>\n<tr class=\"memdesc:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Min depth at last frame. <br /></td></tr>\n<tr class=\"separator:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff7da0935e28913bfdf8b9df4346833c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_max_</b></td></tr>\n<tr class=\"separator:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2340afc882c8ea3899d3be722a2a0e62\"></a>\nstd::vector&lt; std::vector&lt; FramePtr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>overlap_kfs_</b></td></tr>\n<tr class=\"separator:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a11ce532498e637214c61f902b57208ee\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_rotation_prior_</b> = false</td></tr>\n<tr class=\"separator:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79cd74b43b1e549efda17b8e71e3ca74\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imu_world_</b></td></tr>\n<tr class=\"separator:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20affdd1bc5605c40e62bb729b7f3e75\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imulast_world_</b></td></tr>\n<tr class=\"separator:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad85609e9e6b52957a8232f30bc3f6b7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_motion_prior_</b> = false</td></tr>\n<tr class=\"separator:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcac46110f12d4b05d289f2c542e08d8\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_newimu_lastimu_prior_</b></td></tr>\n<tr class=\"separator:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ce2e32ec17616111831895a89eee9bb\"></a>\nAbstractBundleAdjustmentPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_adjustment_</b></td></tr>\n<tr class=\"separator:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12c2a36c904b033cb3c533bcca8c3d13\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reloc_keyframe_</b></td></tr>\n<tr class=\"separator:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa0a849e73db01c049e253906bc0518f\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td></tr>\n<tr class=\"memdesc:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">With how many frames did we try to relocalize? <br /></td></tr>\n<tr class=\"separator:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"frame__handler__array_8h_source.html\">frame_handler_array.h</a></li>\n<li>svo/src/frame_handler_array.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerArray__coll__graph.md5",
    "content": "94cb1c91518e353af097db54d7c91af3"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerArray__inherit__graph.md5",
    "content": "54bda1fd23063055dfa329c74a76ffdb"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addCallback</b>(const Callback &amp;callback) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>bundle_adjustment_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Callback</b> typedef (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_filter_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depth_max_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a>(const BaseOptions &amp;base_options, const ReprojectorOptions &amp;reprojector_options, const DepthFilterOptions &amp;depthfilter_options, const DetectorOptions &amp;detector_options, const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FrameHandlerBase</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getBundleAdjuster</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getLastFrames</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a>(const bool use_velocity_in_frame)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_motion_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_rotation_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linkBatchWorker</b>(BatchWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>linkRealtimeWorker</b>(RealtimeWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a>(const Transformation &amp;T_f_w)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NewKeyFrameCriteria</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizePose</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimizeStructure</b>(const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>overlap_kfs_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pose_optimizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d\">processFrameBundle</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>projectMapInFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_imu_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_imulast_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reloc_keyframe_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reprojectors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">resetAll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a>(const AbstractBundleAdjustmentPtr &amp;ba)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a>(const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a>(const std::vector&lt; FramePtr &gt; &amp;first_frames)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a>(const Transformation &amp;T_world_cam, size_t cam_index=0)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a>(const Transformation &amp;T_world_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setInitialPose</b>(const FrameBundlePtr &amp;frame_bundle) const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setRotationIncrementPrior</b>(const Quaternion &amp;R_lastimu_newimu) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setRotationPrior</b>(const Quaternion &amp;R_imu_world) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a>(const size_t num_observations)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sparse_img_align_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sparseImageAlignment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_newimu_lastimu_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>triggerCallbacks</b>(CallbackArgs... args) const (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>upgradeSeedsToFeatures</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrameHandlerBase</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameHandlerBase Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classsvo_1_1FrameHandlerBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerBase Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Base class for various VO pipelines. Manages the map and the state machine.  \n <a href=\"classsvo_1_1FrameHandlerBase.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame__handler__base_8h_source.html\">frame_handler_base.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FrameHandlerBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerBase__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerBase_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FrameHandlerBase_inherit__map\" id=\"svo_1_1FrameHandlerBase_inherit__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1FrameHandlerArray.html\" title=\"svo::FrameHandlerArray\" alt=\"\" coords=\"5,169,169,196\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FrameHandlerMono.html\" title=\"svo::FrameHandlerMono\" alt=\"\" coords=\"194,169,359,196\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1FrameHandlerStereo.html\" title=\"svo::FrameHandlerStereo\" alt=\"\" coords=\"383,169,554,196\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"184,5,369,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FrameHandlerBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerBase__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerBase_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FrameHandlerBase_coll__map\" id=\"svo_1_1FrameHandlerBase_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"247,5,432,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; double \\&gt;\" alt=\"\" coords=\"255,71,423,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structsvo_1_1BaseOptions.html\" title=\"Options for base frame handler module. Sets tracing and quality options. \" alt=\"\" coords=\"276,229,403,255\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; size_t \\&gt;\" alt=\"\" coords=\"257,279,422,306\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classvk_1_1Timer.html\" title=\"vk::Timer\" alt=\"\" coords=\"301,381,378,407\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a81d84d297f21c10d00823dd3d10d3db4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d84d297f21c10d00823dd3d10d3db4\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:a81d84d297f21c10d00823dd3d10d3db4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d1365b44b80eb0bc68fd8d06d6f5c02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d1365b44b80eb0bc68fd8d06d6f5c02\"></a>\ntypedef std::function&lt; bool(const Transformation &amp;pose)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NewKeyFrameCriteria</b></td></tr>\n<tr class=\"separator:a2d1365b44b80eb0bc68fd8d06d6f5c02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac22a9d69a8c197246a8f1eb0997a5bc4\"></a>\ntypedef std::function&lt; void(CallbackArgs...)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Callback</b></td></tr>\n<tr class=\"separator:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4728af3f3b1da1725ee24b811619b2f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4728af3f3b1da1725ee24b811619b2f4\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depthfilter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td></tr>\n<tr class=\"memdesc:a4728af3f3b1da1725ee24b811619b2f4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a4728af3f3b1da1725ee24b811619b2f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adff0a39829af586cef39747a691d8874\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adff0a39829af586cef39747a691d8874\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameHandlerBase</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adff0a39829af586cef39747a691d8874\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6949716b6ec6711c94cba6d2a26f3f50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6949716b6ec6711c94cba6d2a26f3f50\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a6949716b6ec6711c94cba6d2a26f3f50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6411fbf14c5a05c29c2a46fd6fb98acd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6411fbf14c5a05c29c2a46fd6fb98acd\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a> () const</td></tr>\n<tr class=\"memdesc:a6411fbf14c5a05c29c2a46fd6fb98acd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Has the pipeline started? (set_start_ is set to false when started). <br /></td></tr>\n<tr class=\"separator:a6411fbf14c5a05c29c2a46fd6fb98acd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8b06f38023a60b23f43e5f61f95ccc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8b06f38023a60b23f43e5f61f95ccc1\"></a>\nconst MapPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a> () const</td></tr>\n<tr class=\"memdesc:ab8b06f38023a60b23f43e5f61f95ccc1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current map. <br /></td></tr>\n<tr class=\"separator:ab8b06f38023a60b23f43e5f61f95ccc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1787cc2c35cdcb8f8db501570acbf0e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1787cc2c35cdcb8f8db501570acbf0e9\"></a>\nconst CameraBundle::Ptr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a> () const</td></tr>\n<tr class=\"memdesc:a1787cc2c35cdcb8f8db501570acbf0e9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera bundle. <br /></td></tr>\n<tr class=\"separator:a1787cc2c35cdcb8f8db501570acbf0e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9db554efa667216557b45d7d86c40035\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9db554efa667216557b45d7d86c40035\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a> () const</td></tr>\n<tr class=\"memdesc:a9db554efa667216557b45d7d86c40035\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get tracking quality. <br /></td></tr>\n<tr class=\"separator:a9db554efa667216557b45d7d86c40035\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accb137df18256727849eebc75a1652fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accb137df18256727849eebc75a1652fc\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a> () const</td></tr>\n<tr class=\"memdesc:accb137df18256727849eebc75a1652fc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the processing time of the previous iteration. <br /></td></tr>\n<tr class=\"separator:accb137df18256727849eebc75a1652fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec9d5f1b3aacc63b84496c3a8eb4d10\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ec9d5f1b3aacc63b84496c3a8eb4d10\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a> () const</td></tr>\n<tr class=\"memdesc:a0ec9d5f1b3aacc63b84496c3a8eb4d10\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the number of feature observations of the last frame. <br /></td></tr>\n<tr class=\"separator:a0ec9d5f1b3aacc63b84496c3a8eb4d10\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62aa9b869ad2e6175c21e07fe2a2d7ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62aa9b869ad2e6175c21e07fe2a2d7ff\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a> (const AbstractBundleAdjustmentPtr &amp;ba)</td></tr>\n<tr class=\"memdesc:a62aa9b869ad2e6175c21e07fe2a2d7ff\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Set Bundle-Adjuster handler. <br /></td></tr>\n<tr class=\"separator:a62aa9b869ad2e6175c21e07fe2a2d7ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d2ab4b4e06419c63c756c38cbd107da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d2ab4b4e06419c63c756c38cbd107da\"></a>\nconst AbstractBundleAdjustmentPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBundleAdjuster</b> () const</td></tr>\n<tr class=\"separator:a9d2ab4b4e06419c63c756c38cbd107da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a448477cd9e952bea40b0143f6a462d0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a448477cd9e952bea40b0143f6a462d0c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a> (const Transformation &amp;T_world_imu)</td></tr>\n<tr class=\"memdesc:a448477cd9e952bea40b0143f6a462d0c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the IMU pose. <br /></td></tr>\n<tr class=\"separator:a448477cd9e952bea40b0143f6a462d0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa37ae9b23a5942ea1ad870e54b9ec2b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa37ae9b23a5942ea1ad870e54b9ec2b4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a> (const Transformation &amp;T_world_cam, size_t cam_index=0)</td></tr>\n<tr class=\"memdesc:aa37ae9b23a5942ea1ad870e54b9ec2b4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the camera pose. <br /></td></tr>\n<tr class=\"separator:aa37ae9b23a5942ea1ad870e54b9ec2b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf76d39d06a9d9fbee8a20d64758afb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf76d39d06a9d9fbee8a20d64758afb2\"></a>\nstd::vector&lt; FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a> () const</td></tr>\n<tr class=\"memdesc:abf76d39d06a9d9fbee8a20d64758afb2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the set of spatially closest keyframes of the last frame. <br /></td></tr>\n<tr class=\"separator:abf76d39d06a9d9fbee8a20d64758afb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b8de712d4e57aa6d31ab6e895df54d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3b8de712d4e57aa6d31ab6e895df54d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:ac3b8de712d4e57aa6d31ab6e895df54d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation parameters. <br /></td></tr>\n<tr class=\"separator:ac3b8de712d4e57aa6d31ab6e895df54d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a994c2419caeab4d78e51e111f4fb0c7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a994c2419caeab4d78e51e111f4fb0c7d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a> (const std::vector&lt; FramePtr &gt; &amp;first_frames)</td></tr>\n<tr class=\"memdesc:a994c2419caeab4d78e51e111f4fb0c7d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the first frame (used for synthetic datasets in benchmark node) <br /></td></tr>\n<tr class=\"separator:a994c2419caeab4d78e51e111f4fb0c7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr><td colspan=\"2\"><div class=\"groupHeader\">Main Interface</div></td></tr>\n<tr><td colspan=\"2\"><div class=\"groupText\"><p>These are the main functions to be used in this class when interfacing with the odometry pipeline. </p>\n</div></td></tr>\n<tr class=\"memitem:ac81827e117ff1e9aa1c88f9456aefc7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a> ()</td></tr>\n<tr class=\"separator:ac81827e117ff1e9aa1c88f9456aefc7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2ccfae9c7fddf9cf7d4caa2655754f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2ccfae9c7fddf9cf7d4caa2655754f9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab2ccfae9c7fddf9cf7d4caa2655754f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Will reset the map as soon as the current frame is finished processing. <br /></td></tr>\n<tr class=\"separator:ab2ccfae9c7fddf9cf7d4caa2655754f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a287e9cfb8f8534dd4c968e508d900890\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a287e9cfb8f8534dd4c968e508d900890\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a> () const</td></tr>\n<tr class=\"memdesc:a287e9cfb8f8534dd4c968e508d900890\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a287e9cfb8f8534dd4c968e508d900890\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af92e9be1b148232309a57caa133c7c8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af92e9be1b148232309a57caa133c7c8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:af92e9be1b148232309a57caa133c7c8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4371ddb46f1a5d6f8341e2c32eda16f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4371ddb46f1a5d6f8341e2c32eda16f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af4371ddb46f1a5d6f8341e2c32eda16f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94261b973c67e7c568b97dd289ec34e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94261b973c67e7c568b97dd289ec34e0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationPrior</b> (const Quaternion &amp;R_imu_world)</td></tr>\n<tr class=\"separator:a94261b973c67e7c568b97dd289ec34e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b29027679e7d4e569f6348713204451\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b29027679e7d4e569f6348713204451\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationIncrementPrior</b> (const Quaternion &amp;R_lastimu_newimu)</td></tr>\n<tr class=\"separator:a1b29027679e7d4e569f6348713204451\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b241c203805da9c9f0f281a93176e76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b241c203805da9c9f0f281a93176e76\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getLastFrames</b> () const</td></tr>\n<tr class=\"separator:a5b241c203805da9c9f0f281a93176e76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d7eb9a994e85a15a19656527b69fc26\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCallback</b> (const Callback &amp;callback)</td></tr>\n<tr class=\"separator:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7143c4a5e7719c9b613e450052d9bd93\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkBatchWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18b9738f703e4cc7db342550e9109e43\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkRealtimeWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab7a1f9ab39715dea3f20c1e096380eb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab7a1f9ab39715dea3f20c1e096380eb9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:ab7a1f9ab39715dea3f20c1e096380eb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a265250534782f747c1771aee1e8ca968\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a265250534782f747c1771aee1e8ca968\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setInitialPose</b> (const FrameBundlePtr &amp;frame_bundle) const</td></tr>\n<tr class=\"separator:a265250534782f747c1771aee1e8ca968\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adfd72d12740106888bcaf9ee998ec38b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adfd72d12740106888bcaf9ee998ec38b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparseImageAlignment</b> ()</td></tr>\n<tr class=\"separator:adfd72d12740106888bcaf9ee998ec38b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7585a1c1e8129ef0b69579f839bb30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7585a1c1e8129ef0b69579f839bb30\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projectMapInFrame</b> ()</td></tr>\n<tr class=\"separator:a3b7585a1c1e8129ef0b69579f839bb30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeb3d495413f017c5c25eb658417f450\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaeb3d495413f017c5c25eb658417f450\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizePose</b> ()</td></tr>\n<tr class=\"separator:aaeb3d495413f017c5c25eb658417f450\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51e15cfff626cb547355fdac19671df2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a51e15cfff626cb547355fdac19671df2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizeStructure</b> (const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter)</td></tr>\n<tr class=\"separator:a51e15cfff626cb547355fdac19671df2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fd6722e78bb21097e8a9316b6e37150\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fd6722e78bb21097e8a9316b6e37150\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>upgradeSeedsToFeatures</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:a6fd6722e78bb21097e8a9316b6e37150\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9423e9934db9ef80de33fdbb3bb9bf10\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9423e9934db9ef80de33fdbb3bb9bf10\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a> ()</td></tr>\n<tr class=\"memdesc:a9423e9934db9ef80de33fdbb3bb9bf10\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the map and frame handler to start from scratch. <br /></td></tr>\n<tr class=\"separator:a9423e9934db9ef80de33fdbb3bb9bf10\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2095d323a85868fa171146f26eceb1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa2095d323a85868fa171146f26eceb1d\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d\">processFrameBundle</a> ()=0</td></tr>\n<tr class=\"memdesc:aa2095d323a85868fa171146f26eceb1d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pipeline implementation in derived class. <br /></td></tr>\n<tr class=\"separator:aa2095d323a85868fa171146f26eceb1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accaed1e9a121fcf913e9366477feb72b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accaed1e9a121fcf913e9366477feb72b\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">resetAll</a> ()</td></tr>\n<tr class=\"memdesc:accaed1e9a121fcf913e9366477feb72b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the frame handler. Implement in derived class. <br /></td></tr>\n<tr class=\"separator:accaed1e9a121fcf913e9366477feb72b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa73abab637db87bf6bfc2d913941018c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa73abab637db87bf6bfc2d913941018c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a> (const size_t num_observations)</td></tr>\n<tr class=\"memdesc:aa73abab637db87bf6bfc2d913941018c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:aa73abab637db87bf6bfc2d913941018c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e79bb5f9415bd4b464574c487f37850\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a> (const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td></tr>\n<tr class=\"separator:a6e79bb5f9415bd4b464574c487f37850\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0657a487fcb022f2b868089ee1ae6066\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0657a487fcb022f2b868089ee1ae6066\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a> (const bool use_velocity_in_frame)</td></tr>\n<tr class=\"memdesc:a0657a487fcb022f2b868089ee1ae6066\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get motion prior, between last and new frames expressed in IMU frame. <br /></td></tr>\n<tr class=\"separator:a0657a487fcb022f2b868089ee1ae6066\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade31cb99ea4151d64b6778ed432aeab5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triggerCallbacks</b> (CallbackArgs... args) const</td></tr>\n<tr class=\"separator:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a892e230faa0a3073ed05b363968ebe98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a892e230faa0a3073ed05b363968ebe98\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td></tr>\n<tr class=\"memdesc:a892e230faa0a3073ed05b363968ebe98\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a892e230faa0a3073ed05b363968ebe98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d5da447318a37a2569f360a799bc795\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d5da447318a37a2569f360a799bc795\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td></tr>\n<tr class=\"memdesc:a4d5da447318a37a2569f360a799bc795\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag that the user can set. Will reset the system before the next iteration. <br /></td></tr>\n<tr class=\"separator:a4d5da447318a37a2569f360a799bc795\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8feb15626100f7ef0adccd1d412596ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8feb15626100f7ef0adccd1d412596ad\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td></tr>\n<tr class=\"memdesc:a8feb15626100f7ef0adccd1d412596ad\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag the user can set to start the system when the next image is received. <br /></td></tr>\n<tr class=\"separator:a8feb15626100f7ef0adccd1d412596ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f186966e5ef11f3c7b011dd147b3c91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f186966e5ef11f3c7b011dd147b3c91\"></a>\nMapPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td></tr>\n<tr class=\"memdesc:a4f186966e5ef11f3c7b011dd147b3c91\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> of keyframes created by the slam system. <br /></td></tr>\n<tr class=\"separator:a4f186966e5ef11f3c7b011dd147b3c91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60b9699bf6c7dd0e13c48f54b859a3d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60b9699bf6c7dd0e13c48f54b859a3d0\"></a>\n<a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td></tr>\n<tr class=\"memdesc:a60b9699bf6c7dd0e13c48f54b859a3d0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stopwatch to measure time to process frame. <br /></td></tr>\n<tr class=\"separator:a60b9699bf6c7dd0e13c48f54b859a3d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4dfcc808f58f96c2ffbc6f25ebaa39e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad4dfcc808f58f96c2ffbc6f25ebaa39e\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; double &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td></tr>\n<tr class=\"memdesc:ad4dfcc808f58f96c2ffbc6f25ebaa39e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Total processing time of the last 10 frames, used to give some user feedback on the performance. <br /></td></tr>\n<tr class=\"separator:ad4dfcc808f58f96c2ffbc6f25ebaa39e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39961b8ed6a52d37cd5e12e7a506dac1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39961b8ed6a52d37cd5e12e7a506dac1\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td></tr>\n<tr class=\"memdesc:a39961b8ed6a52d37cd5e12e7a506dac1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance. <br /></td></tr>\n<tr class=\"separator:a39961b8ed6a52d37cd5e12e7a506dac1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21c9f984ddd3b2096595ec07dd5df12e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21c9f984ddd3b2096595ec07dd5df12e\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td></tr>\n<tr class=\"memdesc:a21c9f984ddd3b2096595ec07dd5df12e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observations in the previous frame. <br /></td></tr>\n<tr class=\"separator:a21c9f984ddd3b2096595ec07dd5df12e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731f97f7daa1b810d4f0c39f45c4804e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a731f97f7daa1b810d4f0c39f45c4804e\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td></tr>\n<tr class=\"memdesc:a731f97f7daa1b810d4f0c39f45c4804e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An estimate of the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:a731f97f7daa1b810d4f0c39f45c4804e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af74f64e83ef1c88cbcedf5f6e91ab208\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af74f64e83ef1c88cbcedf5f6e91ab208\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:af74f64e83ef1c88cbcedf5f6e91ab208\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of frames processed since started. <br /></td></tr>\n<tr class=\"separator:af74f64e83ef1c88cbcedf5f6e91ab208\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc7b83a56b092b5b6e1a2b220ff8df20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc7b83a56b092b5b6e1a2b220ff8df20\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td></tr>\n<tr class=\"memdesc:abc7b83a56b092b5b6e1a2b220ff8df20\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Median depth at last frame. <br /></td></tr>\n<tr class=\"separator:abc7b83a56b092b5b6e1a2b220ff8df20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae014ba4e454ff376cb5b0ba25173e4ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae014ba4e454ff376cb5b0ba25173e4ab\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td></tr>\n<tr class=\"memdesc:ae014ba4e454ff376cb5b0ba25173e4ab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Min depth at last frame. <br /></td></tr>\n<tr class=\"separator:ae014ba4e454ff376cb5b0ba25173e4ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff7da0935e28913bfdf8b9df4346833c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff7da0935e28913bfdf8b9df4346833c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_max_</b></td></tr>\n<tr class=\"separator:aff7da0935e28913bfdf8b9df4346833c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2340afc882c8ea3899d3be722a2a0e62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2340afc882c8ea3899d3be722a2a0e62\"></a>\nstd::vector&lt; std::vector&lt; FramePtr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>overlap_kfs_</b></td></tr>\n<tr class=\"separator:a2340afc882c8ea3899d3be722a2a0e62\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11ce532498e637214c61f902b57208ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a11ce532498e637214c61f902b57208ee\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_rotation_prior_</b> = false</td></tr>\n<tr class=\"separator:a11ce532498e637214c61f902b57208ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79cd74b43b1e549efda17b8e71e3ca74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79cd74b43b1e549efda17b8e71e3ca74\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imu_world_</b></td></tr>\n<tr class=\"separator:a79cd74b43b1e549efda17b8e71e3ca74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20affdd1bc5605c40e62bb729b7f3e75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20affdd1bc5605c40e62bb729b7f3e75\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imulast_world_</b></td></tr>\n<tr class=\"separator:a20affdd1bc5605c40e62bb729b7f3e75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad85609e9e6b52957a8232f30bc3f6b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad85609e9e6b52957a8232f30bc3f6b7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_motion_prior_</b> = false</td></tr>\n<tr class=\"separator:aad85609e9e6b52957a8232f30bc3f6b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcac46110f12d4b05d289f2c542e08d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcac46110f12d4b05d289f2c542e08d8\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_newimu_lastimu_prior_</b></td></tr>\n<tr class=\"separator:abcac46110f12d4b05d289f2c542e08d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ce2e32ec17616111831895a89eee9bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ce2e32ec17616111831895a89eee9bb\"></a>\nAbstractBundleAdjustmentPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_adjustment_</b></td></tr>\n<tr class=\"separator:a9ce2e32ec17616111831895a89eee9bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12c2a36c904b033cb3c533bcca8c3d13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12c2a36c904b033cb3c533bcca8c3d13\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reloc_keyframe_</b></td></tr>\n<tr class=\"separator:a12c2a36c904b033cb3c533bcca8c3d13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa0a849e73db01c049e253906bc0518f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa0a849e73db01c049e253906bc0518f\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td></tr>\n<tr class=\"memdesc:aaa0a849e73db01c049e253906bc0518f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">With how many frames did we try to relocalize? <br /></td></tr>\n<tr class=\"separator:aaa0a849e73db01c049e253906bc0518f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"member-group\"></a>\nDebug Interface</h2></td></tr>\n<tr><td class=\"ititle\" colspan=\"2\"><p><a class=\"anchor\" id=\"amgrpf96bc70c0407d12afef82e079626b8f9\"></a>These parameters should be private but are currently not for easier debugging. It is unlikely that you need them. </p>\n</td></tr>\n<tr class=\"memitem:afebe181759fb81a2d916fd7deeb2da69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afebe181759fb81a2d916fd7deeb2da69\"></a>\n<a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td></tr>\n<tr class=\"memdesc:afebe181759fb81a2d916fd7deeb2da69\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Options for BaseFrameHandler module. <br /></td></tr>\n<tr class=\"separator:afebe181759fb81a2d916fd7deeb2da69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3134fcde8903009914568658d64d673d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3134fcde8903009914568658d64d673d\"></a>\nCameraBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td></tr>\n<tr class=\"memdesc:a3134fcde8903009914568658d64d673d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) <br /></td></tr>\n<tr class=\"separator:a3134fcde8903009914568658d64d673d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af508b33ff564584a69ba0a7b225705af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af508b33ff564584a69ba0a7b225705af\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td></tr>\n<tr class=\"memdesc:af508b33ff564584a69ba0a7b225705af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current frame-bundle that is being processed. <br /></td></tr>\n<tr class=\"separator:af508b33ff564584a69ba0a7b225705af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac142109c38dcf88d26dd5e022142d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeac142109c38dcf88d26dd5e022142d4\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td></tr>\n<tr class=\"memdesc:aeac142109c38dcf88d26dd5e022142d4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Last frame-bundle that was processed. Can be nullptr. <br /></td></tr>\n<tr class=\"separator:aeac142109c38dcf88d26dd5e022142d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f25d8ecadf657853997b46408ccde9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f25d8ecadf657853997b46408ccde9a\"></a>\nNewKeyFrameCriteria&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td></tr>\n<tr class=\"memdesc:a0f25d8ecadf657853997b46408ccde9a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Custom callback to check if new keyframe is required. <br /></td></tr>\n<tr class=\"separator:a0f25d8ecadf657853997b46408ccde9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7963fe5b1a195cb1fa89a494a1ac632\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7963fe5b1a195cb1fa89a494a1ac632\"></a>\nVector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td></tr>\n<tr class=\"memdesc:ac7963fe5b1a195cb1fa89a494a1ac632\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior computed from simple constant velocity assumption. <br /></td></tr>\n<tr class=\"separator:ac7963fe5b1a195cb1fa89a494a1ac632\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a735f6fdf6ea066ed4a23370da868474e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a735f6fdf6ea066ed4a23370da868474e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td></tr>\n<tr class=\"memdesc:a735f6fdf6ea066ed4a23370da868474e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial orientation. <br /></td></tr>\n<tr class=\"separator:a735f6fdf6ea066ed4a23370da868474e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a6fee293a59b3e14785deac23f9fdc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6fee293a59b3e14785deac23f9fdc9\"></a>\nSparseImgAlignBasePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparse_img_align_</b></td></tr>\n<tr class=\"separator:a0a6fee293a59b3e14785deac23f9fdc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48670a6ba2b2c7e823524254a4c6dfc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48670a6ba2b2c7e823524254a4c6dfc5\"></a>\nstd::vector&lt; ReprojectorPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reprojectors_</b></td></tr>\n<tr class=\"separator:a48670a6ba2b2c7e823524254a4c6dfc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d063cd667efcc3901aab0c6944372b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1d063cd667efcc3901aab0c6944372b\"></a>\nPoseOptimizerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pose_optimizer_</b></td></tr>\n<tr class=\"separator:ae1d063cd667efcc3901aab0c6944372b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87e8cef6075f4df76d5d5ec19677e5bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87e8cef6075f4df76d5d5ec19677e5bd\"></a>\nDepthFilterPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_filter_</b></td></tr>\n<tr class=\"separator:a87e8cef6075f4df76d5d5ec19677e5bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbe74c39ee4804826c223c564fe1aa8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bbe74c39ee4804826c223c564fe1aa8\"></a>\nInitializerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializer_</b></td></tr>\n<tr class=\"separator:a1bbe74c39ee4804826c223c564fe1aa8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa137938e09bef10b681a9d1b9ff7b497\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa137938e09bef10b681a9d1b9ff7b497\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a> (const Transformation &amp;T_f_w)</td></tr>\n<tr class=\"memdesc:aa137938e09bef10b681a9d1b9ff7b497\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default keyframe selection criterion. <br /></td></tr>\n<tr class=\"separator:aa137938e09bef10b681a9d1b9ff7b497\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Base class for various VO pipelines. Manages the map and the state machine. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a6e79bb5f9415bd4b464574c487f37850\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e79bb5f9415bd4b464574c487f37850\">&#9670;&nbsp;</a></span>setDetectorOccupiedCells()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FrameHandlerBase::setDetectorOccupiedCells </td>\n          <td>(</td>\n          <td class=\"paramtype\">const size_t&#160;</td>\n          <td class=\"paramname\"><em>reprojector_grid_idx</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const DetectorPtr &amp;&#160;</td>\n          <td class=\"paramname\"><em>feature_detector</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Set all cells in detector to occupied in which a point reprojected during the reprojection stage. </p>\n\n</div>\n</div>\n<a id=\"ac81827e117ff1e9aa1c88f9456aefc7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac81827e117ff1e9aa1c88f9456aefc7a\">&#9670;&nbsp;</a></span>start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FrameHandlerBase::start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Start processing. Call this function at the beginning or to restart once the stage is set to paused. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"frame__handler__base_8h_source.html\">frame_handler_base.h</a></li>\n<li>svo/src/frame_handler_base.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerBase__coll__graph.md5",
    "content": "082ee60ddee010693bc579acff0ba40c"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerBase__inherit__graph.md5",
    "content": "534334244c1652e01e4a5634023c251f"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerMono-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerMono Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addCallback</b>(const Callback &amp;callback) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">addImage</a>(const cv::Mat &amp;img, const uint64_t timestamp)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bundle_adjustment_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Callback</b> typedef (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cam</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_filter_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depth_max_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a>(const BaseOptions &amp;base_options, const ReprojectorOptions &amp;reprojector_options, const DepthFilterOptions &amp;depthfilter_options, const DetectorOptions &amp;detector_options, const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FrameHandlerBase</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">FrameHandlerMono</a>(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getBundleAdjuster</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getLastFrames</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a>(const bool use_velocity_in_frame)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_motion_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_rotation_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>haveLastFrame</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">lastFrame</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>lastFrameUnsafe</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linkBatchWorker</b>(BatchWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>linkRealtimeWorker</b>(RealtimeWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a>(const Transformation &amp;T_f_w)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>newFrame</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>NewKeyFrameCriteria</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimizePose</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizeStructure</b>(const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>overlap_kfs_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pose_optimizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">processFirstFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">processFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">processFrameBundle</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projectMapInFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_imu_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_imulast_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reloc_keyframe_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">relocalizeFrame</a>(const Transformation &amp;T_cur_ref, const FramePtr &amp;ref_keyframe)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reprojectors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">resetAll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a>(const AbstractBundleAdjustmentPtr &amp;ba)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a>(const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a>(const std::vector&lt; FramePtr &gt; &amp;first_frames)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a>(const Transformation &amp;T_world_cam, size_t cam_index=0)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a>(const Transformation &amp;T_world_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setInitialPose</b>(const FrameBundlePtr &amp;frame_bundle) const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setRotationIncrementPrior</b>(const Quaternion &amp;R_lastimu_newimu) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setRotationPrior</b>(const Quaternion &amp;R_imu_world) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a>(const size_t num_observations)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sparse_img_align_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sparseImageAlignment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>T_newimu_lastimu_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>triggerCallbacks</b>(CallbackArgs... args) const (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>upgradeSeedsToFeatures</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FrameHandlerBase</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrameHandlerMono</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerMono.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameHandlerMono Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"classsvo_1_1FrameHandlerMono-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerMono Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame__handler__mono_8h_source.html\">frame_handler_mono.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FrameHandlerMono:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerMono__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerMono_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FrameHandlerMono_inherit__map\" id=\"svo_1_1FrameHandlerMono_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"17,95,179,121\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"5,5,191,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FrameHandlerMono:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerMono__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerMono_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FrameHandlerMono_coll__map\" id=\"svo_1_1FrameHandlerMono_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"601,229,764,255\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"247,5,432,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; double \\&gt;\" alt=\"\" coords=\"255,71,423,98\"/>\n<area shape=\"rect\" id=\"node5\" href=\"structsvo_1_1BaseOptions.html\" title=\"Options for base frame handler module. Sets tracing and quality options. \" alt=\"\" coords=\"276,229,403,255\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; size_t \\&gt;\" alt=\"\" coords=\"257,279,422,306\"/>\n<area shape=\"rect\" id=\"node9\" href=\"classvk_1_1Timer.html\" title=\"vk::Timer\" alt=\"\" coords=\"301,381,378,407\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac47ff8655fde5a91f93204d3cb995e8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac47ff8655fde5a91f93204d3cb995e8c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">FrameHandlerMono</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depth_filter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;feature_detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cam)</td></tr>\n<tr class=\"memdesc:ac47ff8655fde5a91f93204d3cb995e8c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:ac47ff8655fde5a91f93204d3cb995e8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb219ee04d8fba92b118bcbfb0e4b076\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb219ee04d8fba92b118bcbfb0e4b076\"></a>\nCameraPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam</b> () const</td></tr>\n<tr class=\"separator:acb219ee04d8fba92b118bcbfb0e4b076\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr><td colspan=\"2\"><div class=\"groupHeader\">Main Interface</div></td></tr>\n<tr><td colspan=\"2\"><div class=\"groupText\"><p>These are the main functions that you will need to interface with the visual odometry pipeline. Other important functions like <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start()</a>, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\" title=\"Will reset the map as soon as the current frame is finished processing. \">reset()</a>, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\" title=\"Get the current stage of the algorithm. \">stage()</a> are provided in the <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \">FrameHandlerBase</a> class which maintains the state-machine. </p>\n</div></td></tr>\n<tr class=\"memitem:ae707ccc80baca6a95dd49f65d3f8ed4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">addImage</a> (const cv::Mat &amp;img, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:ae707ccc80baca6a95dd49f65d3f8ed4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53c2eed564df3f282356c668f3b60712\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">FramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">lastFrame</a> () const</td></tr>\n<tr class=\"separator:a53c2eed564df3f282356c668f3b60712\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4728af3f3b1da1725ee24b811619b2f4\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depthfilter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td></tr>\n<tr class=\"memdesc:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adff0a39829af586cef39747a691d8874\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameHandlerBase</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6949716b6ec6711c94cba6d2a26f3f50\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6411fbf14c5a05c29c2a46fd6fb98acd\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a> () const</td></tr>\n<tr class=\"memdesc:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Has the pipeline started? (set_start_ is set to false when started). <br /></td></tr>\n<tr class=\"separator:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8b06f38023a60b23f43e5f61f95ccc1\"></a>\nconst MapPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a> () const</td></tr>\n<tr class=\"memdesc:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current map. <br /></td></tr>\n<tr class=\"separator:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1787cc2c35cdcb8f8db501570acbf0e9\"></a>\nconst CameraBundle::Ptr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a> () const</td></tr>\n<tr class=\"memdesc:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera bundle. <br /></td></tr>\n<tr class=\"separator:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9db554efa667216557b45d7d86c40035\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a> () const</td></tr>\n<tr class=\"memdesc:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get tracking quality. <br /></td></tr>\n<tr class=\"separator:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accb137df18256727849eebc75a1652fc\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a> () const</td></tr>\n<tr class=\"memdesc:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the processing time of the previous iteration. <br /></td></tr>\n<tr class=\"separator:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ec9d5f1b3aacc63b84496c3a8eb4d10\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a> () const</td></tr>\n<tr class=\"memdesc:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the number of feature observations of the last frame. <br /></td></tr>\n<tr class=\"separator:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62aa9b869ad2e6175c21e07fe2a2d7ff\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a> (const AbstractBundleAdjustmentPtr &amp;ba)</td></tr>\n<tr class=\"memdesc:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Set Bundle-Adjuster handler. <br /></td></tr>\n<tr class=\"separator:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d2ab4b4e06419c63c756c38cbd107da\"></a>\nconst AbstractBundleAdjustmentPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBundleAdjuster</b> () const</td></tr>\n<tr class=\"separator:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a448477cd9e952bea40b0143f6a462d0c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a> (const Transformation &amp;T_world_imu)</td></tr>\n<tr class=\"memdesc:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the IMU pose. <br /></td></tr>\n<tr class=\"separator:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa37ae9b23a5942ea1ad870e54b9ec2b4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a> (const Transformation &amp;T_world_cam, size_t cam_index=0)</td></tr>\n<tr class=\"memdesc:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the camera pose. <br /></td></tr>\n<tr class=\"separator:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf76d39d06a9d9fbee8a20d64758afb2\"></a>\nstd::vector&lt; FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a> () const</td></tr>\n<tr class=\"memdesc:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the set of spatially closest keyframes of the last frame. <br /></td></tr>\n<tr class=\"separator:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3b8de712d4e57aa6d31ab6e895df54d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation parameters. <br /></td></tr>\n<tr class=\"separator:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a994c2419caeab4d78e51e111f4fb0c7d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a> (const std::vector&lt; FramePtr &gt; &amp;first_frames)</td></tr>\n<tr class=\"memdesc:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the first frame (used for synthetic datasets in benchmark node) <br /></td></tr>\n<tr class=\"separator:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a> ()</td></tr>\n<tr class=\"separator:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2ccfae9c7fddf9cf7d4caa2655754f9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Will reset the map as soon as the current frame is finished processing. <br /></td></tr>\n<tr class=\"separator:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a287e9cfb8f8534dd4c968e508d900890\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a> () const</td></tr>\n<tr class=\"memdesc:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af92e9be1b148232309a57caa133c7c8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4371ddb46f1a5d6f8341e2c32eda16f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94261b973c67e7c568b97dd289ec34e0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationPrior</b> (const Quaternion &amp;R_imu_world)</td></tr>\n<tr class=\"separator:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b29027679e7d4e569f6348713204451\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationIncrementPrior</b> (const Quaternion &amp;R_lastimu_newimu)</td></tr>\n<tr class=\"separator:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b241c203805da9c9f0f281a93176e76\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getLastFrames</b> () const</td></tr>\n<tr class=\"separator:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa137938e09bef10b681a9d1b9ff7b497\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a> (const Transformation &amp;T_f_w)</td></tr>\n<tr class=\"memdesc:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default keyframe selection criterion. <br /></td></tr>\n<tr class=\"separator:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d7eb9a994e85a15a19656527b69fc26\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCallback</b> (const Callback &amp;callback)</td></tr>\n<tr class=\"separator:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7143c4a5e7719c9b613e450052d9bd93\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkBatchWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18b9738f703e4cc7db342550e9109e43\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkRealtimeWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac1724a4dbf9de97d41747f258acfdad5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1724a4dbf9de97d41747f258acfdad5\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:ac1724a4dbf9de97d41747f258acfdad5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab7a1f9ab39715dea3f20c1e096380eb9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afebe181759fb81a2d916fd7deeb2da69\"></a>\n<a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td></tr>\n<tr class=\"memdesc:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Options for BaseFrameHandler module. <br /></td></tr>\n<tr class=\"separator:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3134fcde8903009914568658d64d673d\"></a>\nCameraBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td></tr>\n<tr class=\"memdesc:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) <br /></td></tr>\n<tr class=\"separator:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af508b33ff564584a69ba0a7b225705af\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td></tr>\n<tr class=\"memdesc:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current frame-bundle that is being processed. <br /></td></tr>\n<tr class=\"separator:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeac142109c38dcf88d26dd5e022142d4\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td></tr>\n<tr class=\"memdesc:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Last frame-bundle that was processed. Can be nullptr. <br /></td></tr>\n<tr class=\"separator:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f25d8ecadf657853997b46408ccde9a\"></a>\nNewKeyFrameCriteria&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td></tr>\n<tr class=\"memdesc:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Custom callback to check if new keyframe is required. <br /></td></tr>\n<tr class=\"separator:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7963fe5b1a195cb1fa89a494a1ac632\"></a>\nVector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td></tr>\n<tr class=\"memdesc:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior computed from simple constant velocity assumption. <br /></td></tr>\n<tr class=\"separator:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a735f6fdf6ea066ed4a23370da868474e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td></tr>\n<tr class=\"memdesc:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial orientation. <br /></td></tr>\n<tr class=\"separator:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6fee293a59b3e14785deac23f9fdc9\"></a>\nSparseImgAlignBasePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparse_img_align_</b></td></tr>\n<tr class=\"separator:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48670a6ba2b2c7e823524254a4c6dfc5\"></a>\nstd::vector&lt; ReprojectorPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reprojectors_</b></td></tr>\n<tr class=\"separator:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1d063cd667efcc3901aab0c6944372b\"></a>\nPoseOptimizerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pose_optimizer_</b></td></tr>\n<tr class=\"separator:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87e8cef6075f4df76d5d5ec19677e5bd\"></a>\nDepthFilterPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_filter_</b></td></tr>\n<tr class=\"separator:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bbe74c39ee4804826c223c564fe1aa8\"></a>\nInitializerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializer_</b></td></tr>\n<tr class=\"separator:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a1ba8676eeff7fc8233697c193e2b2176\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1ba8676eeff7fc8233697c193e2b2176\"></a>\nconst FramePtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>newFrame</b> () const</td></tr>\n<tr class=\"separator:a1ba8676eeff7fc8233697c193e2b2176\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60c427966d2f74e3191fcb49cbd25cc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60c427966d2f74e3191fcb49cbd25cc9\"></a>\nconst FramePtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>lastFrameUnsafe</b> () const</td></tr>\n<tr class=\"separator:a60c427966d2f74e3191fcb49cbd25cc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48876575f0a72404643fffa16a3256a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48876575f0a72404643fffa16a3256a3\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>haveLastFrame</b> () const</td></tr>\n<tr class=\"separator:a48876575f0a72404643fffa16a3256a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a033631a985d42758f8f1d077e89cc09e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a033631a985d42758f8f1d077e89cc09e\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">processFrameBundle</a> () override</td></tr>\n<tr class=\"memdesc:a033631a985d42758f8f1d077e89cc09e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pipeline implementation. Called by base class. <br /></td></tr>\n<tr class=\"separator:a033631a985d42758f8f1d077e89cc09e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3775f25208dac773c7250229e409dfc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3775f25208dac773c7250229e409dfc8\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">processFirstFrame</a> ()</td></tr>\n<tr class=\"memdesc:a3775f25208dac773c7250229e409dfc8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the first frame and sets it as a keyframe. <br /></td></tr>\n<tr class=\"separator:a3775f25208dac773c7250229e409dfc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab45bc735f725b613e649c4a6b92fd6a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab45bc735f725b613e649c4a6b92fd6a5\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">processFrame</a> ()</td></tr>\n<tr class=\"memdesc:ab45bc735f725b613e649c4a6b92fd6a5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes all frames after the first two keyframes. <br /></td></tr>\n<tr class=\"separator:ab45bc735f725b613e649c4a6b92fd6a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d5bb8229ff2c2e8321c312d2aff3777\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6d5bb8229ff2c2e8321c312d2aff3777\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">relocalizeFrame</a> (const Transformation &amp;T_cur_ref, const FramePtr &amp;ref_keyframe)</td></tr>\n<tr class=\"memdesc:a6d5bb8229ff2c2e8321c312d2aff3777\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Try relocalizing the frame at relative position to provided keyframe. <br /></td></tr>\n<tr class=\"separator:a6d5bb8229ff2c2e8321c312d2aff3777\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d6b1ea3db44087ff71a3f89d2dcaf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab5d6b1ea3db44087ff71a3f89d2dcaf9\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">resetAll</a> ()</td></tr>\n<tr class=\"memdesc:ab5d6b1ea3db44087ff71a3f89d2dcaf9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the frame handler. Implement in derived class. <br /></td></tr>\n<tr class=\"separator:ab5d6b1ea3db44087ff71a3f89d2dcaf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a265250534782f747c1771aee1e8ca968\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setInitialPose</b> (const FrameBundlePtr &amp;frame_bundle) const</td></tr>\n<tr class=\"separator:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adfd72d12740106888bcaf9ee998ec38b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparseImageAlignment</b> ()</td></tr>\n<tr class=\"separator:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7585a1c1e8129ef0b69579f839bb30\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projectMapInFrame</b> ()</td></tr>\n<tr class=\"separator:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaeb3d495413f017c5c25eb658417f450\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizePose</b> ()</td></tr>\n<tr class=\"separator:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a51e15cfff626cb547355fdac19671df2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizeStructure</b> (const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter)</td></tr>\n<tr class=\"separator:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fd6722e78bb21097e8a9316b6e37150\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>upgradeSeedsToFeatures</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9423e9934db9ef80de33fdbb3bb9bf10\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a> ()</td></tr>\n<tr class=\"memdesc:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the map and frame handler to start from scratch. <br /></td></tr>\n<tr class=\"separator:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa73abab637db87bf6bfc2d913941018c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a> (const size_t num_observations)</td></tr>\n<tr class=\"memdesc:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a> (const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td></tr>\n<tr class=\"separator:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0657a487fcb022f2b868089ee1ae6066\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a> (const bool use_velocity_in_frame)</td></tr>\n<tr class=\"memdesc:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get motion prior, between last and new frames expressed in IMU frame. <br /></td></tr>\n<tr class=\"separator:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade31cb99ea4151d64b6778ed432aeab5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triggerCallbacks</b> (CallbackArgs... args) const</td></tr>\n<tr class=\"separator:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d84d297f21c10d00823dd3d10d3db4\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d1365b44b80eb0bc68fd8d06d6f5c02\"></a>\ntypedef std::function&lt; bool(const Transformation &amp;pose)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NewKeyFrameCriteria</b></td></tr>\n<tr class=\"separator:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac22a9d69a8c197246a8f1eb0997a5bc4\"></a>\ntypedef std::function&lt; void(CallbackArgs...)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Callback</b></td></tr>\n<tr class=\"separator:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a892e230faa0a3073ed05b363968ebe98\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td></tr>\n<tr class=\"memdesc:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d5da447318a37a2569f360a799bc795\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td></tr>\n<tr class=\"memdesc:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag that the user can set. Will reset the system before the next iteration. <br /></td></tr>\n<tr class=\"separator:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8feb15626100f7ef0adccd1d412596ad\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td></tr>\n<tr class=\"memdesc:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag the user can set to start the system when the next image is received. <br /></td></tr>\n<tr class=\"separator:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f186966e5ef11f3c7b011dd147b3c91\"></a>\nMapPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td></tr>\n<tr class=\"memdesc:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> of keyframes created by the slam system. <br /></td></tr>\n<tr class=\"separator:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60b9699bf6c7dd0e13c48f54b859a3d0\"></a>\n<a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td></tr>\n<tr class=\"memdesc:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stopwatch to measure time to process frame. <br /></td></tr>\n<tr class=\"separator:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad4dfcc808f58f96c2ffbc6f25ebaa39e\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; double &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td></tr>\n<tr class=\"memdesc:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Total processing time of the last 10 frames, used to give some user feedback on the performance. <br /></td></tr>\n<tr class=\"separator:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39961b8ed6a52d37cd5e12e7a506dac1\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td></tr>\n<tr class=\"memdesc:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance. <br /></td></tr>\n<tr class=\"separator:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21c9f984ddd3b2096595ec07dd5df12e\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td></tr>\n<tr class=\"memdesc:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observations in the previous frame. <br /></td></tr>\n<tr class=\"separator:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a731f97f7daa1b810d4f0c39f45c4804e\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td></tr>\n<tr class=\"memdesc:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An estimate of the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af74f64e83ef1c88cbcedf5f6e91ab208\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of frames processed since started. <br /></td></tr>\n<tr class=\"separator:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc7b83a56b092b5b6e1a2b220ff8df20\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td></tr>\n<tr class=\"memdesc:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Median depth at last frame. <br /></td></tr>\n<tr class=\"separator:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae014ba4e454ff376cb5b0ba25173e4ab\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td></tr>\n<tr class=\"memdesc:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Min depth at last frame. <br /></td></tr>\n<tr class=\"separator:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff7da0935e28913bfdf8b9df4346833c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_max_</b></td></tr>\n<tr class=\"separator:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2340afc882c8ea3899d3be722a2a0e62\"></a>\nstd::vector&lt; std::vector&lt; FramePtr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>overlap_kfs_</b></td></tr>\n<tr class=\"separator:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a11ce532498e637214c61f902b57208ee\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_rotation_prior_</b> = false</td></tr>\n<tr class=\"separator:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79cd74b43b1e549efda17b8e71e3ca74\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imu_world_</b></td></tr>\n<tr class=\"separator:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20affdd1bc5605c40e62bb729b7f3e75\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imulast_world_</b></td></tr>\n<tr class=\"separator:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad85609e9e6b52957a8232f30bc3f6b7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_motion_prior_</b> = false</td></tr>\n<tr class=\"separator:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcac46110f12d4b05d289f2c542e08d8\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_newimu_lastimu_prior_</b></td></tr>\n<tr class=\"separator:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ce2e32ec17616111831895a89eee9bb\"></a>\nAbstractBundleAdjustmentPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_adjustment_</b></td></tr>\n<tr class=\"separator:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12c2a36c904b033cb3c533bcca8c3d13\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reloc_keyframe_</b></td></tr>\n<tr class=\"separator:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa0a849e73db01c049e253906bc0518f\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td></tr>\n<tr class=\"memdesc:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">With how many frames did we try to relocalize? <br /></td></tr>\n<tr class=\"separator:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Monocular Semi-Direct Visual Odometry Pipeline</p>\n<p>References: [1] Christian Forster, Matia Pizzoli, Davide Scaramuzza, \"SVO: Semi-Direct\nMonocular Visual Odometry for Micro Aerial Vehicles\", Proc. IEEE International Conference on Robotics and Automation, Honkong 2015.</p>\n<p>This is the main interface class of the VO. It derives from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \">FrameHandlerBase</a> which maintains the state machine (start, stop, reset). </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ae707ccc80baca6a95dd49f65d3f8ed4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae707ccc80baca6a95dd49f65d3f8ed4d\">&#9670;&nbsp;</a></span>addImage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FrameHandlerMono::addImage </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>img</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const uint64_t&#160;</td>\n          <td class=\"paramname\"><em>timestamp</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Provide an image to the odometry pipeline </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">img</td><td>A 8bit grayscale OpenCV image. </td></tr>\n    <tr><td class=\"paramname\">timestamp</td><td>Corresponding timestamp of the image. Is saved in the frame class. </td></tr>\n    <tr><td class=\"paramname\">R_origin_imu</td><td>If you use a IMU gyroscope and you integrate it outside of SVO, you can provide the orientation here. In order to be used, you have to set option-&gt;use_provided_attitude to true. If you set the priors in the options larger than one the gyroscope measurement is used as weighted prior in the optimizations. Note that you have to provide the orientation of the IMU frame and not the camera. The relative transformation between imu and camera is set inside cam_. Another way to provide an orientation estimate is to use set the imuHandler and to provide it with rotation rate measurements. </td></tr>\n    <tr><td class=\"paramname\">custom_id</td><td>If you would like to save an identifier key with the the frame you can provide it here. It is not used by SVO for anything but can be accessed with frame-&gt;customId(). </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"deprecated\"><dt><b><a class=\"el\" href=\"deprecated.html#_deprecated000001\">Deprecated:</a></b></dt><dd>. use addImageBundle(). </dd></dl>\n\n</div>\n</div>\n<a id=\"a53c2eed564df3f282356c668f3b60712\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53c2eed564df3f282356c668f3b60712\">&#9670;&nbsp;</a></span>lastFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">FramePtr svo::FrameHandlerMono::lastFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>After adding an image to SVO with <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">addImage()</a>, the image is saved in a <a class=\"el\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \">Frame</a> class, the frame is processed and it's pose computed. Most likely you want to know the pose of the cam. Therefore, use this function to access the pose of the last provided image (e.g., vo-&gt;<a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">lastFrame()</a>-&gt;T_world_cam()). </p><dl class=\"section return\"><dt>Returns</dt><dd>FramePtr !!!IMPORTANT!!! can be nullptr if something did not work well or if you call this function when pipeline is not running, i.e., vo-&gt;<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\" title=\"Get the current stage of the algorithm. \">stage()</a>==STAGE_PAUSED. </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"frame__handler__mono_8h_source.html\">frame_handler_mono.h</a></li>\n<li>svo/src/frame_handler_mono.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerMono__coll__graph.md5",
    "content": "324551e45767f2e33395919e6ab32173"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerMono__inherit__graph.md5",
    "content": "c03494bfeecf739798f8ea00cf17cf75"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerStereo-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerStereo Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addCallback</b>(const Callback &amp;callback) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">addImages</a>(const cv::Mat &amp;img_left, const cv::Mat &amp;img_right, const uint64_t timestamp)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bundle_adjustment_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Callback</b> typedef (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>depth_filter_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>depth_max_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a>(const BaseOptions &amp;base_options, const ReprojectorOptions &amp;reprojector_options, const DepthFilterOptions &amp;depthfilter_options, const DetectorOptions &amp;detector_options, const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FrameHandlerBase</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">FrameHandlerStereo</a>(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const StereoTriangulationOptions &amp;stereo_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;stereo_camera)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getBundleAdjuster</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getLastFrames</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a>(const bool use_velocity_in_frame)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_motion_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_rotation_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">lastFrames</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>linkBatchWorker</b>(BatchWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linkRealtimeWorker</b>(RealtimeWorker&lt; CallbackArgs... &gt; *worker) (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>makeKeyframe</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a>(const Transformation &amp;T_f_w)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NewKeyFrameCriteria</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FrameHandlerBase &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>optimizePose</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>optimizeStructure</b>(const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>overlap_kfs_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pose_optimizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">processFirstFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">processFrame</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">processFrameBundle</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>projectMapInFrame</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_imu_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_imulast_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reloc_keyframe_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reprojectors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">resetAll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a>(const AbstractBundleAdjustmentPtr &amp;ba)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a>(const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a>(const std::vector&lt; FramePtr &gt; &amp;first_frames)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a>(const Transformation &amp;T_world_cam, size_t cam_index=0)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a>(const Transformation &amp;T_world_imu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setInitialPose</b>(const FrameBundlePtr &amp;frame_bundle) const (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setRotationIncrementPrior</b>(const Quaternion &amp;R_lastimu_newimu) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setRotationPrior</b>(const Quaternion &amp;R_imu_world) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a>(const size_t num_observations)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sparse_img_align_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sparseImageAlignment</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stereo_triangulation_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_newimu_lastimu_prior_</b> (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>triggerCallbacks</b>(CallbackArgs... args) const (defined in <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>upgradeSeedsToFeatures</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FrameHandlerBase</b>() (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FrameHandlerStereo</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerStereo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FrameHandlerStereo Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"classsvo_1_1FrameHandlerStereo-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FrameHandlerStereo Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame__handler__stereo_8h_source.html\">frame_handler_stereo.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::FrameHandlerStereo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerStereo__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerStereo_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1FrameHandlerStereo_inherit__map\" id=\"svo_1_1FrameHandlerStereo_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"17,95,179,121\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"5,5,191,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FrameHandlerStereo:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1FrameHandlerStereo__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FrameHandlerStereo_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FrameHandlerStereo_coll__map\" id=\"svo_1_1FrameHandlerStereo_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"601,229,764,255\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"247,5,432,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; double \\&gt;\" alt=\"\" coords=\"255,71,423,98\"/>\n<area shape=\"rect\" id=\"node5\" href=\"structsvo_1_1BaseOptions.html\" title=\"Options for base frame handler module. Sets tracing and quality options. \" alt=\"\" coords=\"276,229,403,255\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; size_t \\&gt;\" alt=\"\" coords=\"257,279,422,306\"/>\n<area shape=\"rect\" id=\"node9\" href=\"classvk_1_1Timer.html\" title=\"vk::Timer\" alt=\"\" coords=\"301,381,378,407\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9982752128a302c3664596f8a8ead1c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9982752128a302c3664596f8a8ead1c2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">FrameHandlerStereo</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depth_filter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;feature_detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a> &amp;stereo_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;stereo_camera)</td></tr>\n<tr class=\"memdesc:a9982752128a302c3664596f8a8ead1c2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a9982752128a302c3664596f8a8ead1c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr><td colspan=\"2\"><div class=\"groupHeader\">Main Interface</div></td></tr>\n<tr><td colspan=\"2\"><div class=\"groupText\"><p>These are the main functions that you will need to interface with the visual odometry pipeline. Other important functions like <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start()</a>, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\" title=\"Will reset the map as soon as the current frame is finished processing. \">reset()</a>, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\" title=\"Get the current stage of the algorithm. \">stage()</a> are provided in the <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \">FrameHandlerBase</a> class which maintains the state-machine. </p>\n</div></td></tr>\n<tr class=\"memitem:af6a5255d43cf2a4387987fda8e2f3fcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">addImages</a> (const cv::Mat &amp;img_left, const cv::Mat &amp;img_right, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af6a5255d43cf2a4387987fda8e2f3fcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa07d49814862b7b874359e113849440a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const FrameBundlePtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">lastFrames</a> () const</td></tr>\n<tr class=\"separator:aa07d49814862b7b874359e113849440a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4728af3f3b1da1725ee24b811619b2f4\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">FrameHandlerBase</a> (const <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> &amp;base_options, const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;reprojector_options, const <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> &amp;depthfilter_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</td></tr>\n<tr class=\"memdesc:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a4728af3f3b1da1725ee24b811619b2f4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adff0a39829af586cef39747a691d8874\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameHandlerBase</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adff0a39829af586cef39747a691d8874 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6949716b6ec6711c94cba6d2a26f3f50\"></a>\n<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a6949716b6ec6711c94cba6d2a26f3f50 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6411fbf14c5a05c29c2a46fd6fb98acd\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a> () const</td></tr>\n<tr class=\"memdesc:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Has the pipeline started? (set_start_ is set to false when started). <br /></td></tr>\n<tr class=\"separator:a6411fbf14c5a05c29c2a46fd6fb98acd inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab8b06f38023a60b23f43e5f61f95ccc1\"></a>\nconst MapPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a> () const</td></tr>\n<tr class=\"memdesc:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current map. <br /></td></tr>\n<tr class=\"separator:ab8b06f38023a60b23f43e5f61f95ccc1 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1787cc2c35cdcb8f8db501570acbf0e9\"></a>\nconst CameraBundle::Ptr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a> () const</td></tr>\n<tr class=\"memdesc:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get camera bundle. <br /></td></tr>\n<tr class=\"separator:a1787cc2c35cdcb8f8db501570acbf0e9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9db554efa667216557b45d7d86c40035\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a> () const</td></tr>\n<tr class=\"memdesc:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get tracking quality. <br /></td></tr>\n<tr class=\"separator:a9db554efa667216557b45d7d86c40035 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"accb137df18256727849eebc75a1652fc\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a> () const</td></tr>\n<tr class=\"memdesc:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the processing time of the previous iteration. <br /></td></tr>\n<tr class=\"separator:accb137df18256727849eebc75a1652fc inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ec9d5f1b3aacc63b84496c3a8eb4d10\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a> () const</td></tr>\n<tr class=\"memdesc:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the number of feature observations of the last frame. <br /></td></tr>\n<tr class=\"separator:a0ec9d5f1b3aacc63b84496c3a8eb4d10 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62aa9b869ad2e6175c21e07fe2a2d7ff\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a> (const AbstractBundleAdjustmentPtr &amp;ba)</td></tr>\n<tr class=\"memdesc:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Set Bundle-Adjuster handler. <br /></td></tr>\n<tr class=\"separator:a62aa9b869ad2e6175c21e07fe2a2d7ff inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d2ab4b4e06419c63c756c38cbd107da\"></a>\nconst AbstractBundleAdjustmentPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBundleAdjuster</b> () const</td></tr>\n<tr class=\"separator:a9d2ab4b4e06419c63c756c38cbd107da inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a448477cd9e952bea40b0143f6a462d0c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a> (const Transformation &amp;T_world_imu)</td></tr>\n<tr class=\"memdesc:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the IMU pose. <br /></td></tr>\n<tr class=\"separator:a448477cd9e952bea40b0143f6a462d0c inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa37ae9b23a5942ea1ad870e54b9ec2b4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a> (const Transformation &amp;T_world_cam, size_t cam_index=0)</td></tr>\n<tr class=\"memdesc:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set pose of first frame by specifying the camera pose. <br /></td></tr>\n<tr class=\"separator:aa37ae9b23a5942ea1ad870e54b9ec2b4 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf76d39d06a9d9fbee8a20d64758afb2\"></a>\nstd::vector&lt; FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">closeKeyframes</a> () const</td></tr>\n<tr class=\"memdesc:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the set of spatially closest keyframes of the last frame. <br /></td></tr>\n<tr class=\"separator:abf76d39d06a9d9fbee8a20d64758afb2 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3b8de712d4e57aa6d31ab6e895df54d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation parameters. <br /></td></tr>\n<tr class=\"separator:ac3b8de712d4e57aa6d31ab6e895df54d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a994c2419caeab4d78e51e111f4fb0c7d\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">setFirstFrames</a> (const std::vector&lt; FramePtr &gt; &amp;first_frames)</td></tr>\n<tr class=\"memdesc:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the first frame (used for synthetic datasets in benchmark node) <br /></td></tr>\n<tr class=\"separator:a994c2419caeab4d78e51e111f4fb0c7d inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a> ()</td></tr>\n<tr class=\"separator:ac81827e117ff1e9aa1c88f9456aefc7a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2ccfae9c7fddf9cf7d4caa2655754f9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Will reset the map as soon as the current frame is finished processing. <br /></td></tr>\n<tr class=\"separator:ab2ccfae9c7fddf9cf7d4caa2655754f9 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a287e9cfb8f8534dd4c968e508d900890\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a> () const</td></tr>\n<tr class=\"memdesc:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a287e9cfb8f8534dd4c968e508d900890 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af92e9be1b148232309a57caa133c7c8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:af92e9be1b148232309a57caa133c7c8a inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4371ddb46f1a5d6f8341e2c32eda16f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;imgs, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af4371ddb46f1a5d6f8341e2c32eda16f inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94261b973c67e7c568b97dd289ec34e0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationPrior</b> (const Quaternion &amp;R_imu_world)</td></tr>\n<tr class=\"separator:a94261b973c67e7c568b97dd289ec34e0 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b29027679e7d4e569f6348713204451\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationIncrementPrior</b> (const Quaternion &amp;R_lastimu_newimu)</td></tr>\n<tr class=\"separator:a1b29027679e7d4e569f6348713204451 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b241c203805da9c9f0f281a93176e76\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getLastFrames</b> () const</td></tr>\n<tr class=\"separator:a5b241c203805da9c9f0f281a93176e76 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa137938e09bef10b681a9d1b9ff7b497\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">needNewKf</a> (const Transformation &amp;T_f_w)</td></tr>\n<tr class=\"memdesc:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default keyframe selection criterion. <br /></td></tr>\n<tr class=\"separator:aa137938e09bef10b681a9d1b9ff7b497 inherit pub_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d7eb9a994e85a15a19656527b69fc26\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCallback</b> (const Callback &amp;callback)</td></tr>\n<tr class=\"separator:a0d7eb9a994e85a15a19656527b69fc26 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7143c4a5e7719c9b613e450052d9bd93\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkBatchWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\">BatchWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a7143c4a5e7719c9b613e450052d9bd93 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18b9738f703e4cc7db342550e9109e43\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linkRealtimeWorker</b> (<a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>&lt; CallbackArgs... &gt; *worker)</td></tr>\n<tr class=\"separator:a18b9738f703e4cc7db342550e9109e43 inherit pub_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8a8eee4b13a1aa510c636c7aac78088e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a8eee4b13a1aa510c636c7aac78088e\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8a8eee4b13a1aa510c636c7aac78088e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr><td colspan=\"2\"><div class=\"groupHeader\">Debug Interface</div></td></tr>\n<tr><td colspan=\"2\"><div class=\"groupText\"><p>These parameters should be private but are currently not for easier debugging. It is unlikely that you need them. </p>\n</div></td></tr>\n<tr class=\"memitem:a4bc34a40ca1f166ff1f7e388dd9dc25a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4bc34a40ca1f166ff1f7e388dd9dc25a\"></a>\nStereoTriangulationPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereo_triangulation_</b></td></tr>\n<tr class=\"separator:a4bc34a40ca1f166ff1f7e388dd9dc25a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab7a1f9ab39715dea3f20c1e096380eb9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:ab7a1f9ab39715dea3f20c1e096380eb9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afebe181759fb81a2d916fd7deeb2da69\"></a>\n<a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a></td></tr>\n<tr class=\"memdesc:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Options for BaseFrameHandler module. <br /></td></tr>\n<tr class=\"separator:afebe181759fb81a2d916fd7deeb2da69 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3134fcde8903009914568658d64d673d\"></a>\nCameraBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a></td></tr>\n<tr class=\"memdesc:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) <br /></td></tr>\n<tr class=\"separator:a3134fcde8903009914568658d64d673d inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af508b33ff564584a69ba0a7b225705af\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a></td></tr>\n<tr class=\"memdesc:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current frame-bundle that is being processed. <br /></td></tr>\n<tr class=\"separator:af508b33ff564584a69ba0a7b225705af inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeac142109c38dcf88d26dd5e022142d4\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a></td></tr>\n<tr class=\"memdesc:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Last frame-bundle that was processed. Can be nullptr. <br /></td></tr>\n<tr class=\"separator:aeac142109c38dcf88d26dd5e022142d4 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f25d8ecadf657853997b46408ccde9a\"></a>\nNewKeyFrameCriteria&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a></td></tr>\n<tr class=\"memdesc:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Custom callback to check if new keyframe is required. <br /></td></tr>\n<tr class=\"separator:a0f25d8ecadf657853997b46408ccde9a inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7963fe5b1a195cb1fa89a494a1ac632\"></a>\nVector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a></td></tr>\n<tr class=\"memdesc:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior computed from simple constant velocity assumption. <br /></td></tr>\n<tr class=\"separator:ac7963fe5b1a195cb1fa89a494a1ac632 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a735f6fdf6ea066ed4a23370da868474e\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a></td></tr>\n<tr class=\"memdesc:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial orientation. <br /></td></tr>\n<tr class=\"separator:a735f6fdf6ea066ed4a23370da868474e inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6fee293a59b3e14785deac23f9fdc9\"></a>\nSparseImgAlignBasePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparse_img_align_</b></td></tr>\n<tr class=\"separator:a0a6fee293a59b3e14785deac23f9fdc9 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48670a6ba2b2c7e823524254a4c6dfc5\"></a>\nstd::vector&lt; ReprojectorPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reprojectors_</b></td></tr>\n<tr class=\"separator:a48670a6ba2b2c7e823524254a4c6dfc5 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1d063cd667efcc3901aab0c6944372b\"></a>\nPoseOptimizerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pose_optimizer_</b></td></tr>\n<tr class=\"separator:ae1d063cd667efcc3901aab0c6944372b inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87e8cef6075f4df76d5d5ec19677e5bd\"></a>\nDepthFilterPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_filter_</b></td></tr>\n<tr class=\"separator:a87e8cef6075f4df76d5d5ec19677e5bd inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1bbe74c39ee4804826c223c564fe1aa8\"></a>\nInitializerPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializer_</b></td></tr>\n<tr class=\"separator:a1bbe74c39ee4804826c223c564fe1aa8 inherit pub_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:afb6b1b1b021514e836b61b3a5acee2aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb6b1b1b021514e836b61b3a5acee2aa\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">processFrameBundle</a> () override</td></tr>\n<tr class=\"memdesc:afb6b1b1b021514e836b61b3a5acee2aa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pipeline implementation. Called by base class. <br /></td></tr>\n<tr class=\"separator:afb6b1b1b021514e836b61b3a5acee2aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eb79239f5925fcf055a70b716007273\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1eb79239f5925fcf055a70b716007273\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">processFirstFrame</a> ()</td></tr>\n<tr class=\"memdesc:a1eb79239f5925fcf055a70b716007273\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the first frame and sets it as a keyframe. <br /></td></tr>\n<tr class=\"separator:a1eb79239f5925fcf055a70b716007273\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa31785db89e72f9047dd28fb0f487ca1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa31785db89e72f9047dd28fb0f487ca1\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">processFrame</a> ()</td></tr>\n<tr class=\"memdesc:aa31785db89e72f9047dd28fb0f487ca1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes all frames after the first two keyframes. <br /></td></tr>\n<tr class=\"separator:aa31785db89e72f9047dd28fb0f487ca1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b430dc638bb27db7145cf91762af61e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b430dc638bb27db7145cf91762af61e\"></a>\nvirtual UpdateResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>makeKeyframe</b> ()</td></tr>\n<tr class=\"separator:a5b430dc638bb27db7145cf91762af61e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ac32a125cb393460ee12875fdb4bebe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ac32a125cb393460ee12875fdb4bebe\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">resetAll</a> ()</td></tr>\n<tr class=\"memdesc:a2ac32a125cb393460ee12875fdb4bebe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the frame handler. Implement in derived class. <br /></td></tr>\n<tr class=\"separator:a2ac32a125cb393460ee12875fdb4bebe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a265250534782f747c1771aee1e8ca968\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setInitialPose</b> (const FrameBundlePtr &amp;frame_bundle) const</td></tr>\n<tr class=\"separator:a265250534782f747c1771aee1e8ca968 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adfd72d12740106888bcaf9ee998ec38b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sparseImageAlignment</b> ()</td></tr>\n<tr class=\"separator:adfd72d12740106888bcaf9ee998ec38b inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7585a1c1e8129ef0b69579f839bb30\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projectMapInFrame</b> ()</td></tr>\n<tr class=\"separator:a3b7585a1c1e8129ef0b69579f839bb30 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaeb3d495413f017c5c25eb658417f450\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizePose</b> ()</td></tr>\n<tr class=\"separator:aaeb3d495413f017c5c25eb658417f450 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a51e15cfff626cb547355fdac19671df2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>optimizeStructure</b> (const FrameBundlePtr &amp;frames, int max_n_pts, int max_iter)</td></tr>\n<tr class=\"separator:a51e15cfff626cb547355fdac19671df2 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fd6722e78bb21097e8a9316b6e37150\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>upgradeSeedsToFeatures</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:a6fd6722e78bb21097e8a9316b6e37150 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9423e9934db9ef80de33fdbb3bb9bf10\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">resetCommon</a> ()</td></tr>\n<tr class=\"memdesc:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the map and frame handler to start from scratch. <br /></td></tr>\n<tr class=\"separator:a9423e9934db9ef80de33fdbb3bb9bf10 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa73abab637db87bf6bfc2d913941018c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">setTrackingQuality</a> (const size_t num_observations)</td></tr>\n<tr class=\"memdesc:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:aa73abab637db87bf6bfc2d913941018c inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">setDetectorOccupiedCells</a> (const size_t reprojector_grid_idx, const DetectorPtr &amp;feature_detector)</td></tr>\n<tr class=\"separator:a6e79bb5f9415bd4b464574c487f37850 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0657a487fcb022f2b868089ee1ae6066\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">getMotionPrior</a> (const bool use_velocity_in_frame)</td></tr>\n<tr class=\"memdesc:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get motion prior, between last and new frames expressed in IMU frame. <br /></td></tr>\n<tr class=\"separator:a0657a487fcb022f2b868089ee1ae6066 inherit pro_methods_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade31cb99ea4151d64b6778ed432aeab5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triggerCallbacks</b> (CallbackArgs... args) const</td></tr>\n<tr class=\"separator:ade31cb99ea4151d64b6778ed432aeab5 inherit pro_methods_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d84d297f21c10d00823dd3d10d3db4\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:a81d84d297f21c10d00823dd3d10d3db4 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d1365b44b80eb0bc68fd8d06d6f5c02\"></a>\ntypedef std::function&lt; bool(const Transformation &amp;pose)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NewKeyFrameCriteria</b></td></tr>\n<tr class=\"separator:a2d1365b44b80eb0bc68fd8d06d6f5c02 inherit pub_types_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classrpg__common_1_1CallbackHost\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classrpg__common_1_1CallbackHost')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td></tr>\n<tr class=\"memitem:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac22a9d69a8c197246a8f1eb0997a5bc4\"></a>\ntypedef std::function&lt; void(CallbackArgs...)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Callback</b></td></tr>\n<tr class=\"separator:ac22a9d69a8c197246a8f1eb0997a5bc4 inherit pub_types_classrpg__common_1_1CallbackHost\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classsvo_1_1FrameHandlerBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classsvo_1_1FrameHandlerBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></td></tr>\n<tr class=\"memitem:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a892e230faa0a3073ed05b363968ebe98\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a></td></tr>\n<tr class=\"memdesc:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current stage of the algorithm. <br /></td></tr>\n<tr class=\"separator:a892e230faa0a3073ed05b363968ebe98 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d5da447318a37a2569f360a799bc795\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a></td></tr>\n<tr class=\"memdesc:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag that the user can set. Will reset the system before the next iteration. <br /></td></tr>\n<tr class=\"separator:a4d5da447318a37a2569f360a799bc795 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8feb15626100f7ef0adccd1d412596ad\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a></td></tr>\n<tr class=\"memdesc:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag the user can set to start the system when the next image is received. <br /></td></tr>\n<tr class=\"separator:a8feb15626100f7ef0adccd1d412596ad inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f186966e5ef11f3c7b011dd147b3c91\"></a>\nMapPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a></td></tr>\n<tr class=\"memdesc:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> of keyframes created by the slam system. <br /></td></tr>\n<tr class=\"separator:a4f186966e5ef11f3c7b011dd147b3c91 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60b9699bf6c7dd0e13c48f54b859a3d0\"></a>\n<a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a></td></tr>\n<tr class=\"memdesc:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stopwatch to measure time to process frame. <br /></td></tr>\n<tr class=\"separator:a60b9699bf6c7dd0e13c48f54b859a3d0 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad4dfcc808f58f96c2ffbc6f25ebaa39e\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; double &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a></td></tr>\n<tr class=\"memdesc:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Total processing time of the last 10 frames, used to give some user feedback on the performance. <br /></td></tr>\n<tr class=\"separator:ad4dfcc808f58f96c2ffbc6f25ebaa39e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39961b8ed6a52d37cd5e12e7a506dac1\"></a>\n<a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a>&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a></td></tr>\n<tr class=\"memdesc:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance. <br /></td></tr>\n<tr class=\"separator:a39961b8ed6a52d37cd5e12e7a506dac1 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21c9f984ddd3b2096595ec07dd5df12e\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a></td></tr>\n<tr class=\"memdesc:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of observations in the previous frame. <br /></td></tr>\n<tr class=\"separator:a21c9f984ddd3b2096595ec07dd5df12e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a731f97f7daa1b810d4f0c39f45c4804e\"></a>\nTrackingQuality&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a></td></tr>\n<tr class=\"memdesc:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An estimate of the tracking quality based on the number of tracked features. <br /></td></tr>\n<tr class=\"separator:a731f97f7daa1b810d4f0c39f45c4804e inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af74f64e83ef1c88cbcedf5f6e91ab208\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">frame_counter_</a> = 0</td></tr>\n<tr class=\"memdesc:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of frames processed since started. <br /></td></tr>\n<tr class=\"separator:af74f64e83ef1c88cbcedf5f6e91ab208 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc7b83a56b092b5b6e1a2b220ff8df20\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a></td></tr>\n<tr class=\"memdesc:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Median depth at last frame. <br /></td></tr>\n<tr class=\"separator:abc7b83a56b092b5b6e1a2b220ff8df20 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae014ba4e454ff376cb5b0ba25173e4ab\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a></td></tr>\n<tr class=\"memdesc:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Min depth at last frame. <br /></td></tr>\n<tr class=\"separator:ae014ba4e454ff376cb5b0ba25173e4ab inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff7da0935e28913bfdf8b9df4346833c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>depth_max_</b></td></tr>\n<tr class=\"separator:aff7da0935e28913bfdf8b9df4346833c inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2340afc882c8ea3899d3be722a2a0e62\"></a>\nstd::vector&lt; std::vector&lt; FramePtr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>overlap_kfs_</b></td></tr>\n<tr class=\"separator:a2340afc882c8ea3899d3be722a2a0e62 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a11ce532498e637214c61f902b57208ee\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_rotation_prior_</b> = false</td></tr>\n<tr class=\"separator:a11ce532498e637214c61f902b57208ee inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79cd74b43b1e549efda17b8e71e3ca74\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imu_world_</b></td></tr>\n<tr class=\"separator:a79cd74b43b1e549efda17b8e71e3ca74 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20affdd1bc5605c40e62bb729b7f3e75\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_imulast_world_</b></td></tr>\n<tr class=\"separator:a20affdd1bc5605c40e62bb729b7f3e75 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad85609e9e6b52957a8232f30bc3f6b7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_motion_prior_</b> = false</td></tr>\n<tr class=\"separator:aad85609e9e6b52957a8232f30bc3f6b7 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcac46110f12d4b05d289f2c542e08d8\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_newimu_lastimu_prior_</b></td></tr>\n<tr class=\"separator:abcac46110f12d4b05d289f2c542e08d8 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ce2e32ec17616111831895a89eee9bb\"></a>\nAbstractBundleAdjustmentPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bundle_adjustment_</b></td></tr>\n<tr class=\"separator:a9ce2e32ec17616111831895a89eee9bb inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12c2a36c904b033cb3c533bcca8c3d13\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reloc_keyframe_</b></td></tr>\n<tr class=\"separator:a12c2a36c904b033cb3c533bcca8c3d13 inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa0a849e73db01c049e253906bc0518f\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a></td></tr>\n<tr class=\"memdesc:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">With how many frames did we try to relocalize? <br /></td></tr>\n<tr class=\"separator:aaa0a849e73db01c049e253906bc0518f inherit pro_attribs_classsvo_1_1FrameHandlerBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Monocular Semi-Direct Visual Odometry Pipeline</p>\n<p>References: [1] Christian Forster, Matia Pizzoli, Davide Scaramuzza, \"SVO: Semi-Direct\nMonocular Visual Odometry for Micro Aerial Vehicles\", Proc. IEEE International Conference on Robotics and Automation, Honkong 2015.</p>\n<p>This is the main interface class of the VO. It derives from <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \">FrameHandlerBase</a> which maintains the state machine (start, stop, reset). </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af6a5255d43cf2a4387987fda8e2f3fcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6a5255d43cf2a4387987fda8e2f3fcd\">&#9670;&nbsp;</a></span>addImages()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::FrameHandlerStereo::addImages </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>img_left</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>img_right</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const uint64_t&#160;</td>\n          <td class=\"paramname\"><em>timestamp</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Provide an image to the odometry pipeline </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">img</td><td>A 8bit grayscale OpenCV image. </td></tr>\n    <tr><td class=\"paramname\">timestamp</td><td>Corresponding timestamp of the image. Is saved in the frame class. </td></tr>\n    <tr><td class=\"paramname\">R_origin_imu</td><td>If you use a IMU gyroscope and you integrate it outside of SVO, you can provide the orientation here. In order to be used, you have to set option-&gt;use_provided_attitude to true. If you set the priors in the options larger than one the gyroscope measurement is used as weighted prior in the optimizations. Note that you have to provide the orientation of the IMU frame and not the camera. The relative transformation between imu and camera is set inside cam_. Another way to provide an orientation estimate is to use set the imuHandler and to provide it with rotation rate measurements. </td></tr>\n    <tr><td class=\"paramname\">custom_id</td><td>If you would like to save an identifier key with the the frame you can provide it here. It is not used by SVO for anything but can be accessed with frame-&gt;customId(). </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aa07d49814862b7b874359e113849440a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa07d49814862b7b874359e113849440a\">&#9670;&nbsp;</a></span>lastFrames()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const FrameBundlePtr&amp; svo::FrameHandlerStereo::lastFrames </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>After adding an image to SVO with addImage(), the image is saved in a <a class=\"el\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \">Frame</a> class, the frame is processed and it's pose computed. Most likely you want to know the pose of the cam. Therefore, use this function to access the pose of the last provided image (e.g., vo-&gt;lastFrame()-&gt;T_world_cam()). </p><dl class=\"section return\"><dt>Returns</dt><dd>FramePtr !!!IMPORTANT!!! can be nullptr if something did not work well or if you call this function when pipeline is not running, i.e., vo-&gt;<a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\" title=\"Get the current stage of the algorithm. \">stage()</a>==STAGE_PAUSED. </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"frame__handler__stereo_8h_source.html\">frame_handler_stereo.h</a></li>\n<li>svo/src/frame_handler_stereo.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerStereo__coll__graph.md5",
    "content": "a9d4864b1d05c5da1ea0ca5b6e1c7866"
  },
  {
    "path": "docs/classsvo_1_1FrameHandlerStereo__inherit__graph.md5",
    "content": "b9f4f115af5761cbe3b66a672876fa8d"
  },
  {
    "path": "docs/classsvo_1_1Frame__coll__graph.md5",
    "content": "d4eaae3329efe7ee3c5965180f1d3a0d"
  },
  {
    "path": "docs/classsvo_1_1Frame__inherit__graph.md5",
    "content": "94b9466e5cdf1f7874f414e0b6feb821"
  },
  {
    "path": "docs/classsvo_1_1GradientDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~GradientDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::GradientDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1GradientDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::GradientDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1GradientDetector_inherit__map\" id=\"svo_1_1GradientDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"5,5,156,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::GradientDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1GradientDetector_coll__map\" id=\"svo_1_1GradientDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aca85e9f1380478198696b321b5575720\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aca85e9f1380478198696b321b5575720\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:aca85e9f1380478198696b321b5575720\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Detect pixels that have a high gradient magnitude over multiple pyramid levels. These gradient pixels are good for camera tracking. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientDetectorGrid-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientDetectorGrid Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~GradientDetectorGrid</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientDetectorGrid.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::GradientDetectorGrid Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1GradientDetectorGrid-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientDetectorGrid Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::GradientDetectorGrid:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientDetectorGrid__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientDetectorGrid_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1GradientDetectorGrid_inherit__map\" id=\"svo_1_1GradientDetectorGrid_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"17,5,168,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::GradientDetectorGrid:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientDetectorGrid__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientDetectorGrid_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1GradientDetectorGrid_coll__map\" id=\"svo_1_1GradientDetectorGrid_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a61b7302781e1c9882f26b333a2531f99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a61b7302781e1c9882f26b333a2531f99\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:a61b7302781e1c9882f26b333a2531f99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Detect pixels that have a high gradient magnitude over multiple pyramid levels. These gradient pixels are good for camera tracking. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientDetectorGrid__coll__graph.md5",
    "content": "080bee43d7dc4c1edc33c2b57a7c0f2e"
  },
  {
    "path": "docs/classsvo_1_1GradientDetectorGrid__inherit__graph.md5",
    "content": "603e78526fe7ed019c229cc7d9499eab"
  },
  {
    "path": "docs/classsvo_1_1GradientDetector__coll__graph.md5",
    "content": "9f712d7f01fed9e019b96fc201c18048"
  },
  {
    "path": "docs/classsvo_1_1GradientDetector__inherit__graph.md5",
    "content": "d50bba806a43f93cb92d7da1e3a5c950"
  },
  {
    "path": "docs/classsvo_1_1GradientHuangMumfordDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientHuangMumfordDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~GradientHuangMumfordDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientHuangMumfordDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::GradientHuangMumfordDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1GradientHuangMumfordDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GradientHuangMumfordDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::GradientHuangMumfordDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientHuangMumfordDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientHuangMumfordDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1GradientHuangMumfordDetector_inherit__map\" id=\"svo_1_1GradientHuangMumfordDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"25,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::GradientHuangMumfordDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GradientHuangMumfordDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1GradientHuangMumfordDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1GradientHuangMumfordDetector_coll__map\" id=\"svo_1_1GradientHuangMumfordDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0a089ddd9a85d094b38faf3469efba6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a089ddd9a85d094b38faf3469efba6a\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:a0a089ddd9a85d094b38faf3469efba6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Detect pixels that have strong gradients according to the paper Huang, J. and Mumford, D. (1999). Statistics of natural images and models. (CVPR) </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GradientHuangMumfordDetector__coll__graph.md5",
    "content": "70afeb96185252a6f940645329ab8736"
  },
  {
    "path": "docs/classsvo_1_1GradientHuangMumfordDetector__inherit__graph.md5",
    "content": "e35f4976d57bb337ec42dc346fda4dce"
  },
  {
    "path": "docs/classsvo_1_1GraphManager-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GraphManager Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addBiasPriorFactor</b>(const NFramesId &amp;state_index, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyro_bias) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addCombinedImuFactor</b>(const NFramesId &amp;from_id, const NFramesId &amp;to_id, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyr_bias, const double to_timestamp_sec, const ImuMeasurements &amp;imu_measurements) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addLandmark</b>(svo::Point &amp;point) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addObservationToLandmark</b>(svo::Frame &amp;frame, const size_t keypoint_index) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addObservationToSmartLandmark</b>(svo::Frame &amp;frame, const size_t keypoint_index) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addPosePriorFactor</b>(const NFramesId &amp;state_index, const Transformation &amp;T_W_B) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addSmartLandmark</b>(svo::Point &amp;point) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addVelocityPriorFactor</b>(const NFramesId &amp;state_index, const Eigen::Vector3d &amp;W_v) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addZeroVelocityPriorFactor</b>(const NFramesId &amp;state_index) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>augmentStateWithPose</b>(const NFramesId &amp;state_index, const Transformation &amp;T_W_B) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>augmentStateWithVelocityAndBias</b>(const NFramesId &amp;state_index, const Eigen::Vector3d &amp;W_v, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyr_bias) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cam_calib_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CombinedPreintegratedMeasurementPtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getUpdatesCopy</b>(gtsam::NonlinearFactorGraph &amp;graph_updates, gtsam::Values &amp;value_updates, std::vector&lt; size_t &gt; &amp;delete_indices, std::vector&lt; int &gt; &amp;smart_factor_point_ids) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GraphManager</b>(const GraphManagerOptions &amp;options) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_bias_prior_noise_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>initialize</b>() (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializeImuNoiseModels</b>(const ImuCalibration &amp;imu_calib, const ImuInitialization &amp;imu_init) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>last_added_state_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">mut_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>new_factors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>new_smart_factors_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>new_values_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NFramesId</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PointIdSmartFactorMap</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pose_prior_covariance_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PreintegratedImuMeasurements</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>preintegration_params_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>px_noise_pyr_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>smart_factor_params_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>smart_factors_map_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>smart_noise_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>updateFactorSlots</b>(const gtsam::FastVector&lt; size_t &gt; &amp;new_slots, const std::vector&lt; int &gt; &amp;smart_factor_point_ids) (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>velocity_prior_noise_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>zero_velocity_prior_noise_</b> (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~GraphManager</b>() (defined in <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GraphManager.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::GraphManager Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1GraphManager-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GraphManager Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::GraphManager:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1GraphManager__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1GraphManager_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1GraphManager_coll__map\" id=\"svo_1_1GraphManager_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classgtsam_1_1FastMap.html\" title=\"gtsam::FastMap\\&lt; int,\\l std::pair\\&lt; boost::shared\\l_ptr\\&lt; SmartFactor \\&gt;, int \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,192,61\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1GraphManagerOptions.html\" title=\"svo::GraphManagerOptions\" alt=\"\" coords=\"8,85,189,112\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a95fdd2229ee3c9164ced296cbad23c7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95fdd2229ee3c9164ced296cbad23c7a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NFramesId</b> = int</td></tr>\n<tr class=\"separator:a95fdd2229ee3c9164ced296cbad23c7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1148af8024885668aff0022cc38aacc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1148af8024885668aff0022cc38aacc5\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a> &gt;</td></tr>\n<tr class=\"separator:a1148af8024885668aff0022cc38aacc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14bccfbcbdff8296b5abc6d6435d77ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14bccfbcbdff8296b5abc6d6435d77ff\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PreintegratedImuMeasurements</b> = gtsam::PreintegratedCombinedMeasurements</td></tr>\n<tr class=\"separator:a14bccfbcbdff8296b5abc6d6435d77ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a656002ba3aa17b8fcc8df9130d80a936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a656002ba3aa17b8fcc8df9130d80a936\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CombinedPreintegratedMeasurementPtr</b> = std::shared_ptr&lt; PreintegratedImuMeasurements &gt;</td></tr>\n<tr class=\"separator:a656002ba3aa17b8fcc8df9130d80a936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7995a368dd2414664636c8d013e6eaf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac7995a368dd2414664636c8d013e6eaf\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointIdSmartFactorMap</b> = std::unordered_map&lt; int, boost::shared_ptr&lt; <a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartFactor</a> &gt; &gt;</td></tr>\n<tr class=\"separator:ac7995a368dd2414664636c8d013e6eaf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a8861ee413e1ce3d1928713f90b96ab46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8861ee413e1ce3d1928713f90b96ab46\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GraphManager</b> (const <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a8861ee413e1ce3d1928713f90b96ab46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5d9ac75e9df0a5278dead2d3f598237\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac5d9ac75e9df0a5278dead2d3f598237\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initialize</b> ()</td></tr>\n<tr class=\"separator:ac5d9ac75e9df0a5278dead2d3f598237\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b21aca02498f816827c36f753432ca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b21aca02498f816827c36f753432ca6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializeImuNoiseModels</b> (const <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> &amp;imu_calib, const <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> &amp;imu_init)</td></tr>\n<tr class=\"separator:a2b21aca02498f816827c36f753432ca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0a261a320ab01e88c7f126b9e4a7974\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0a261a320ab01e88c7f126b9e4a7974\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:ad0a261a320ab01e88c7f126b9e4a7974\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cae2598a6a86f0eadc3e3ad348084e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cae2598a6a86f0eadc3e3ad348084e6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addLandmark</b> (<a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a> &amp;point)</td></tr>\n<tr class=\"separator:a6cae2598a6a86f0eadc3e3ad348084e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17c531ed4fd5d9dd7ef8c5e9f512dce6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a17c531ed4fd5d9dd7ef8c5e9f512dce6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addObservationToLandmark</b> (<a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a> &amp;frame, const size_t keypoint_index)</td></tr>\n<tr class=\"separator:a17c531ed4fd5d9dd7ef8c5e9f512dce6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a239b77719cc05db98fdffb1d489ba58e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a239b77719cc05db98fdffb1d489ba58e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addSmartLandmark</b> (<a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a> &amp;point)</td></tr>\n<tr class=\"separator:a239b77719cc05db98fdffb1d489ba58e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae52e3029fcb9af388fe107d3508bd6ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae52e3029fcb9af388fe107d3508bd6ff\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addObservationToSmartLandmark</b> (<a class=\"el\" href=\"classsvo_1_1Frame.html\">svo::Frame</a> &amp;frame, const size_t keypoint_index)</td></tr>\n<tr class=\"separator:ae52e3029fcb9af388fe107d3508bd6ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a649a5df8631b52a1f52f60f7c1faec65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a649a5df8631b52a1f52f60f7c1faec65\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addCombinedImuFactor</b> (const NFramesId &amp;from_id, const NFramesId &amp;to_id, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyr_bias, const double to_timestamp_sec, const ImuMeasurements &amp;imu_measurements)</td></tr>\n<tr class=\"separator:a649a5df8631b52a1f52f60f7c1faec65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8be28109e25b48a60003672629b1e876\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8be28109e25b48a60003672629b1e876\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addPosePriorFactor</b> (const NFramesId &amp;state_index, const Transformation &amp;T_W_B)</td></tr>\n<tr class=\"separator:a8be28109e25b48a60003672629b1e876\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad677771c3d08e9d0b4188c9f875886e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad677771c3d08e9d0b4188c9f875886e1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addBiasPriorFactor</b> (const NFramesId &amp;state_index, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyro_bias)</td></tr>\n<tr class=\"separator:ad677771c3d08e9d0b4188c9f875886e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6e8bf88e108f68da0125664bbaa6958\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af6e8bf88e108f68da0125664bbaa6958\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addVelocityPriorFactor</b> (const NFramesId &amp;state_index, const Eigen::Vector3d &amp;W_v)</td></tr>\n<tr class=\"separator:af6e8bf88e108f68da0125664bbaa6958\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42a98967715e5f36722083850c77b038\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a42a98967715e5f36722083850c77b038\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addZeroVelocityPriorFactor</b> (const NFramesId &amp;state_index)</td></tr>\n<tr class=\"separator:a42a98967715e5f36722083850c77b038\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7ada343de9241d0656ec0f9b318c248\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad7ada343de9241d0656ec0f9b318c248\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>augmentStateWithPose</b> (const NFramesId &amp;state_index, const Transformation &amp;T_W_B)</td></tr>\n<tr class=\"separator:ad7ada343de9241d0656ec0f9b318c248\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4145ad9b783f49ac61c9e82efda40c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4145ad9b783f49ac61c9e82efda40c1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>augmentStateWithVelocityAndBias</b> (const NFramesId &amp;state_index, const Eigen::Vector3d &amp;W_v, const Eigen::Vector3d &amp;acc_bias, const Eigen::Vector3d &amp;gyr_bias)</td></tr>\n<tr class=\"separator:af4145ad9b783f49ac61c9e82efda40c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d44a2dfc7db642fd1386f8ec4bb13c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d44a2dfc7db642fd1386f8ec4bb13c8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getUpdatesCopy</b> (gtsam::NonlinearFactorGraph &amp;graph_updates, gtsam::Values &amp;value_updates, std::vector&lt; size_t &gt; &amp;delete_indices, std::vector&lt; int &gt; &amp;smart_factor_point_ids)</td></tr>\n<tr class=\"separator:a9d44a2dfc7db642fd1386f8ec4bb13c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1be5c4193db471c93394975f096a311f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1be5c4193db471c93394975f096a311f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>updateFactorSlots</b> (const gtsam::FastVector&lt; size_t &gt; &amp;new_slots, const std::vector&lt; int &gt; &amp;smart_factor_point_ids)</td></tr>\n<tr class=\"separator:a1be5c4193db471c93394975f096a311f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae75d5acbd61bbf773cf871d09aba2861\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae75d5acbd61bbf773cf871d09aba2861\"></a>\n<a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:ae75d5acbd61bbf773cf871d09aba2861\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac607fb0ceabd28a99bd2844754819c6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac607fb0ceabd28a99bd2844754819c6f\"></a>\ngtsam::Cal3_S2::shared_ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_calib_</b></td></tr>\n<tr class=\"separator:ac607fb0ceabd28a99bd2844754819c6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9575e6d7fd1d7ad43dab64e624b04d95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9575e6d7fd1d7ad43dab64e624b04d95\"></a>\nboost::shared_ptr&lt; PreintegratedImuMeasurements::Params &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>preintegration_params_</b></td></tr>\n<tr class=\"separator:a9575e6d7fd1d7ad43dab64e624b04d95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8989617217d9b6c2c1ca2174b27e6a67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8989617217d9b6c2c1ca2174b27e6a67\"></a>\nstd::vector&lt; gtsam::SharedNoiseModel &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>px_noise_pyr_</b></td></tr>\n<tr class=\"separator:a8989617217d9b6c2c1ca2174b27e6a67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a371678bcfa823daeb620c0a77613a8c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a371678bcfa823daeb620c0a77613a8c1\"></a>\ngtsam::SharedNoiseModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>smart_noise_</b></td></tr>\n<tr class=\"separator:a371678bcfa823daeb620c0a77613a8c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3549a15f6a16b0502c0bba3c64a3fc66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3549a15f6a16b0502c0bba3c64a3fc66\"></a>\ngtsam::SharedNoiseModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_bias_prior_noise_</b></td></tr>\n<tr class=\"separator:a3549a15f6a16b0502c0bba3c64a3fc66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7930611416a879d18e501a85d8e04c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7930611416a879d18e501a85d8e04c1\"></a>\ngtsam::SharedNoiseModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>velocity_prior_noise_</b></td></tr>\n<tr class=\"separator:af7930611416a879d18e501a85d8e04c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad904546ffc0eff8eb89e3850fb4c9362\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad904546ffc0eff8eb89e3850fb4c9362\"></a>\ngtsam::SharedNoiseModel&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>zero_velocity_prior_noise_</b></td></tr>\n<tr class=\"separator:ad904546ffc0eff8eb89e3850fb4c9362\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac61af35f3f87debcfb816e527e86a65f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac61af35f3f87debcfb816e527e86a65f\"></a>\nEigen::Matrix&lt; double, 6, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pose_prior_covariance_</b></td></tr>\n<tr class=\"separator:ac61af35f3f87debcfb816e527e86a65f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a4c988813f39e00d618ef02ea0b4cf2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a4c988813f39e00d618ef02ea0b4cf2\"></a>\nstd::unique_ptr&lt; gtsam::SmartProjectionParams &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>smart_factor_params_</b></td></tr>\n<tr class=\"separator:a6a4c988813f39e00d618ef02ea0b4cf2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr><td colspan=\"2\"><div class=\"groupHeader\"></div></td></tr>\n<tr class=\"memitem:a5c8f65e0321daab9129367a1d39a1959\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">mut_</a></td></tr>\n<tr class=\"separator:a5c8f65e0321daab9129367a1d39a1959\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2ae631b67ba237ccc7af48a8e026d2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2ae631b67ba237ccc7af48a8e026d2c\"></a>\ngtsam::NonlinearFactorGraph&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>new_factors_</b></td></tr>\n<tr class=\"separator:af2ae631b67ba237ccc7af48a8e026d2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6456c52b36da10c89f6a9537508406a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6456c52b36da10c89f6a9537508406a1\"></a>\ngtsam::Values&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>new_values_</b></td></tr>\n<tr class=\"separator:a6456c52b36da10c89f6a9537508406a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8532762a585ade9acafd919852039405\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8532762a585ade9acafd919852039405\"></a>\nPointIdSmartFactorMap&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>new_smart_factors_</b></td></tr>\n<tr class=\"separator:a8532762a585ade9acafd919852039405\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c2a23fd5b59d586879d6c076a31d04d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c2a23fd5b59d586879d6c076a31d04d\"></a>\n<a class=\"el\" href=\"classgtsam_1_1FastMap.html\">SmartFactorMap</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>smart_factors_map_</b></td></tr>\n<tr class=\"separator:a3c2a23fd5b59d586879d6c076a31d04d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e11caeb5c9179952f2af3040abdf05a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e11caeb5c9179952f2af3040abdf05a\"></a>\nBundleId&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_added_state_index_</b> = -1</td></tr>\n<tr class=\"separator:a0e11caeb5c9179952f2af3040abdf05a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5c8f65e0321daab9129367a1d39a1959\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c8f65e0321daab9129367a1d39a1959\">&#9670;&nbsp;</a></span>mut_</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::mutex svo::GraphManager::mut_</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Updates to be considered for next optimization iteration. MUTEX PROTECTED </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"graph__manager_8h_source.html\">graph_manager.h</a></li>\n<li>svo_backend/src/graph_manager.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1GraphManager__coll__graph.md5",
    "content": "9ee6a0dda9bf4e5482534a09b045ae7f"
  },
  {
    "path": "docs/classsvo_1_1HomographyInit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::HomographyInit Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~HomographyInit</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1HomographyInit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::HomographyInit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1HomographyInit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::HomographyInit Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Tracks features using Lucas-Kanade tracker and then estimates a homography.  \n <a href=\"classsvo_1_1HomographyInit.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::HomographyInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1HomographyInit__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1HomographyInit_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1HomographyInit_inherit__map\" id=\"svo_1_1HomographyInit_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::HomographyInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1HomographyInit__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1HomographyInit_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1HomographyInit_coll__map\" id=\"svo_1_1HomographyInit_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a1df113ebfa949d3230cb095f4c53e6a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1df113ebfa949d3230cb095f4c53e6a7\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:a1df113ebfa949d3230cb095f4c53e6a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Tracks features using Lucas-Kanade tracker and then estimates a homography. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1HomographyInit__coll__graph.md5",
    "content": "29cfd7e567ee3123624db18003a89714"
  },
  {
    "path": "docs/classsvo_1_1HomographyInit__inherit__graph.md5",
    "content": "d993d4da05df43e70f8a031bbb982412"
  },
  {
    "path": "docs/classsvo_1_1ImuCalibration-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuCalibration Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">acc_bias_random_walk_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">acc_noise_density</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">delay_imu_cam</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">gravity_magnitude</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">gyro_bias_random_walk_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">gyro_noise_density</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">imu_integration_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">imu_rate</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ImuCalibration</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">max_imu_delta_t</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">omega_coriolis</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print</b>(const std::string &amp;s=&quot;IMU Calibration: &quot;) const (defined in <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">saturation_accel_max</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">saturation_omega_max</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ImuCalibration</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuCalibration.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ImuCalibration Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1ImuCalibration-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuCalibration Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Settings for the IMU statistics Check the following references for more information about the IMU parameters:  \n <a href=\"classsvo_1_1ImuCalibration.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"imu__calibration_8h_source.html\">imu_calibration.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::ImuCalibration:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ImuCalibration__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ImuCalibration_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a77afb185f49d6e2ace8970ddc08b21b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77afb185f49d6e2ace8970ddc08b21b7\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (const std::string &amp;s=&quot;IMU Calibration: &quot;) const</td></tr>\n<tr class=\"separator:a77afb185f49d6e2ace8970ddc08b21b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad8ab7c69b026134c7b2bf573f766c486\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8ab7c69b026134c7b2bf573f766c486\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:ad8ab7c69b026134c7b2bf573f766c486\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca9d15f26d109552dcefd13ac9121781\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aca9d15f26d109552dcefd13ac9121781\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">delay_imu_cam</a> = 0.0</td></tr>\n<tr class=\"memdesc:aca9d15f26d109552dcefd13ac9121781\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Camera-IMU delay: delay_imu_cam = cam_ts - cam_ts_delay. <br /></td></tr>\n<tr class=\"separator:aca9d15f26d109552dcefd13ac9121781\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65e8549d3d4fda4f6b1dc3ef76ac1566\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65e8549d3d4fda4f6b1dc3ef76ac1566\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">max_imu_delta_t</a> = 0.01</td></tr>\n<tr class=\"memdesc:a65e8549d3d4fda4f6b1dc3ef76ac1566\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Maximum delay camera-imu. <br /></td></tr>\n<tr class=\"separator:a65e8549d3d4fda4f6b1dc3ef76ac1566\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3fdc5a7c137367ba0d9f695b4a60498\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae3fdc5a7c137367ba0d9f695b4a60498\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">gyro_noise_density</a> = 0.00073088444</td></tr>\n<tr class=\"memdesc:ae3fdc5a7c137367ba0d9f695b4a60498\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gyro noise density (sigma). [rad/s*1/sqrt(Hz)]. <br /></td></tr>\n<tr class=\"separator:ae3fdc5a7c137367ba0d9f695b4a60498\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a979ab349721bf3ab17ba4f40089dea23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a979ab349721bf3ab17ba4f40089dea23\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">acc_noise_density</a> = 0.01883649</td></tr>\n<tr class=\"memdesc:a979ab349721bf3ab17ba4f40089dea23\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Accelerometer noise density (sigma). [m/s^2*1/sqrt(Hz)]. <br /></td></tr>\n<tr class=\"separator:a979ab349721bf3ab17ba4f40089dea23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58070c4f8e91bde3959f75fba3304030\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a58070c4f8e91bde3959f75fba3304030\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">imu_integration_sigma</a> = 0.0</td></tr>\n<tr class=\"memdesc:a58070c4f8e91bde3959f75fba3304030\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">IMU integration sigma (sigma). GTSAM preintegration option. <br /></td></tr>\n<tr class=\"separator:a58070c4f8e91bde3959f75fba3304030\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3d8188fa92dc9cf54846285b0983545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3d8188fa92dc9cf54846285b0983545\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">gyro_bias_random_walk_sigma</a> = 0.00038765</td></tr>\n<tr class=\"memdesc:aa3d8188fa92dc9cf54846285b0983545\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gyro bias random walk (sigma). [rad/s^2*1/sqrt(Hz)]. <br /></td></tr>\n<tr class=\"separator:aa3d8188fa92dc9cf54846285b0983545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add2bac8746391be19ba67d32c6e8e372\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"add2bac8746391be19ba67d32c6e8e372\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">acc_bias_random_walk_sigma</a> = 0.012589254</td></tr>\n<tr class=\"memdesc:add2bac8746391be19ba67d32c6e8e372\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Accelerometer bias random walk (sigma). [m/s^3*1/sqrt(Hz)]. <br /></td></tr>\n<tr class=\"separator:add2bac8746391be19ba67d32c6e8e372\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22131791196ceec4cae1cb378cff3875\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a22131791196ceec4cae1cb378cff3875\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">gravity_magnitude</a> = 9.81007</td></tr>\n<tr class=\"memdesc:a22131791196ceec4cae1cb378cff3875\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Norm of the Gravitational acceleration. [m/s^2]. <br /></td></tr>\n<tr class=\"separator:a22131791196ceec4cae1cb378cff3875\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3326a38e075ec0cc109df53310a6e9ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3326a38e075ec0cc109df53310a6e9ce\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">omega_coriolis</a> = Eigen::Vector3d::Zero()</td></tr>\n<tr class=\"memdesc:a3326a38e075ec0cc109df53310a6e9ce\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Coriolis acceleration (earth rotation rate). <br /></td></tr>\n<tr class=\"separator:a3326a38e075ec0cc109df53310a6e9ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d0696e3ee54f6c8be8f4cb742d9ca4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a32d0696e3ee54f6c8be8f4cb742d9ca4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">saturation_accel_max</a> = 150</td></tr>\n<tr class=\"memdesc:a32d0696e3ee54f6c8be8f4cb742d9ca4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Accelerometer saturation. [m/s^2]. <br /></td></tr>\n<tr class=\"separator:a32d0696e3ee54f6c8be8f4cb742d9ca4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d86f9ebf7a9eded44a226b9310297ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d86f9ebf7a9eded44a226b9310297ac\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">saturation_omega_max</a> = 7.8</td></tr>\n<tr class=\"memdesc:a1d86f9ebf7a9eded44a226b9310297ac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gyroscope saturation. [rad/s]. <br /></td></tr>\n<tr class=\"separator:a1d86f9ebf7a9eded44a226b9310297ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82463fc28a3811d6937dfda915ea5d07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82463fc28a3811d6937dfda915ea5d07\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">imu_rate</a> = 20</td></tr>\n<tr class=\"memdesc:a82463fc28a3811d6937dfda915ea5d07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Expected IMU Rate [1/s]. <br /></td></tr>\n<tr class=\"separator:a82463fc28a3811d6937dfda915ea5d07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Settings for the IMU statistics Check the following references for more information about the IMU parameters: </p>\n<ul>\n<li><a href=\"https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model-and-Intrinsics\">https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model-and-Intrinsics</a></li>\n<li><a href=\"http://www-users.cs.umn.edu/~trawny/Publications/Quaternions_3D.pdf\">http://www-users.cs.umn.edu/~trawny/Publications/Quaternions_3D.pdf</a> (Sec. 2.1) Default parameters are for ADIS16448 IMU. </li>\n</ul>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"imu__calibration_8h_source.html\">imu_calibration.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuCalibration__coll__graph.md5",
    "content": "4ca53f205f0192bf24905548ed10fc36"
  },
  {
    "path": "docs/classsvo_1_1ImuHandler-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuHandler Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">acc_bias_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addImuMeasurement</b>(const ImuMeasurement &amp;measurement) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>bias_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">mutable</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getAccelerometerBias</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngularVelocity</b>(double timestamp, Eigen::Vector3d &amp;omega) const (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getClosestMeasurement</b>(const double timestamp, ImuMeasurement &amp;measurement) const (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getGyroscopeBias</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a\">getInitialAttitude</a>(double timestamp, Quaternion &amp;R_imu_world) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9\">getMeasurements</a>(const double old_cam_timestamp, const double new_cam_timestamp, const bool delete_old_measurements, ImuMeasurements &amp;measurements)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getMeasurementsCopy</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02\">getRelativeRotationPrior</a>(const double old_cam_timestamp, const double new_cam_timestamp, bool delete_old_measurements, Quaternion &amp;R_oldimu_newimu)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_calib_</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imu_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ImuHandler</b>(const ImuCalibration &amp;imu_calib, const ImuInitialization &amp;imu_init) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>integrateGyroMeasurement</b>(const Eigen::Vector3d &amp;omega_measured, const Eigen::Matrix3d &amp;R_cam_imu, const double delta_t) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>loadCalibrationFromFile</b>(const std::string &amp;filename) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>loadImuMeasurementsFromCsvFile</b>(const std::string &amp;filename) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>loadImuMeasurementsFromFile</b>(const std::string &amp;filename) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>loadInitializationFromFile</b>(const std::string &amp;filename) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">measurements_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>measurements_mut_</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">mutable</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mutex_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">ofs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">omega_bias_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setAccelerometerBias</b>(const Eigen::Vector3d &amp;acc_bias) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setGyroscopeBias</b>(const Eigen::Vector3d &amp;omega_bias) (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ulock_t</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ImuHandler</b>() (defined in <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuHandler.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ImuHandler Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1ImuHandler-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuHandler Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::ImuHandler:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ImuHandler__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ImuHandler_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1ImuHandler_coll__map\" id=\"svo_1_1ImuHandler_coll__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1ImuCalibration.html\" title=\"Settings for the IMU statistics Check the following references for more information about the IMU par...\" alt=\"\" coords=\"107,125,242,152\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1ImuInitialization.html\" title=\"svo::ImuInitialization\" alt=\"\" coords=\"266,125,409,152\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a407ac3be73c7762692960b0bc1dab43e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a407ac3be73c7762692960b0bc1dab43e\"></a>\ntypedef std::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mutex_t</b></td></tr>\n<tr class=\"separator:a407ac3be73c7762692960b0bc1dab43e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6d5a533dc8d337ea5005f36e60d971b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae6d5a533dc8d337ea5005f36e60d971b\"></a>\ntypedef std::unique_lock&lt; mutex_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ulock_t</b></td></tr>\n<tr class=\"separator:ae6d5a533dc8d337ea5005f36e60d971b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af2bcd035050b79b60c7cb6da020d86ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2bcd035050b79b60c7cb6da020d86ca\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImuHandler</b> (const <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> &amp;imu_calib, const <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> &amp;imu_init)</td></tr>\n<tr class=\"separator:af2bcd035050b79b60c7cb6da020d86ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1204e085b6182adef32385211170c737\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1204e085b6182adef32385211170c737\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAccelerometerBias</b> () const</td></tr>\n<tr class=\"separator:a1204e085b6182adef32385211170c737\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24b1bca4d4910a98e98e24cd5aad3391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a24b1bca4d4910a98e98e24cd5aad3391\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getGyroscopeBias</b> () const</td></tr>\n<tr class=\"separator:a24b1bca4d4910a98e98e24cd5aad3391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1c8837af58e59dc64db23837a6c98e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1c8837af58e59dc64db23837a6c98e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAccelerometerBias</b> (const Eigen::Vector3d &amp;acc_bias)</td></tr>\n<tr class=\"separator:ac1c8837af58e59dc64db23837a6c98e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21d4a0b9c48fc9231daab0b18c56e9f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21d4a0b9c48fc9231daab0b18c56e9f2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setGyroscopeBias</b> (const Eigen::Vector3d &amp;omega_bias)</td></tr>\n<tr class=\"separator:a21d4a0b9c48fc9231daab0b18c56e9f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a134a44234f9da2216504002a91e7cfa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a134a44234f9da2216504002a91e7cfa2\"></a>\nImuMeasurements&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getMeasurementsCopy</b> () const</td></tr>\n<tr class=\"separator:a134a44234f9da2216504002a91e7cfa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a944048ff2febf5a715e8c2ac179c32e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9\">getMeasurements</a> (const double old_cam_timestamp, const double new_cam_timestamp, const bool delete_old_measurements, ImuMeasurements &amp;measurements)</td></tr>\n<tr class=\"separator:a944048ff2febf5a715e8c2ac179c32e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a759dc32cb7f50612f9909e9ba33a994c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a759dc32cb7f50612f9909e9ba33a994c\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getClosestMeasurement</b> (const double timestamp, <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> &amp;measurement) const</td></tr>\n<tr class=\"separator:a759dc32cb7f50612f9909e9ba33a994c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a329060dd1d7f47be02efc859649bae02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a329060dd1d7f47be02efc859649bae02\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02\">getRelativeRotationPrior</a> (const double old_cam_timestamp, const double new_cam_timestamp, bool delete_old_measurements, Quaternion &amp;R_oldimu_newimu)</td></tr>\n<tr class=\"memdesc:a329060dd1d7f47be02efc859649bae02\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gets relative transformation in IMU coordinate frame. <br /></td></tr>\n<tr class=\"separator:a329060dd1d7f47be02efc859649bae02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3588e4e43e0fea6a163826ebb2a63c9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3588e4e43e0fea6a163826ebb2a63c9b\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngularVelocity</b> (double timestamp, Eigen::Vector3d &amp;omega) const</td></tr>\n<tr class=\"separator:a3588e4e43e0fea6a163826ebb2a63c9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af43cc07c06659b667667a5981690c83a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a\">getInitialAttitude</a> (double timestamp, Quaternion &amp;R_imu_world) const</td></tr>\n<tr class=\"separator:af43cc07c06659b667667a5981690c83a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8956f069df1efbbb0cef7b4dae411ec0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8956f069df1efbbb0cef7b4dae411ec0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addImuMeasurement</b> (const <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> &amp;measurement)</td></tr>\n<tr class=\"separator:a8956f069df1efbbb0cef7b4dae411ec0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a6c00cb5d47874346eac56c7a8dd6f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6c00cb5d47874346eac56c7a8dd6f4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadImuMeasurementsFromFile</b> (const std::string &amp;filename)</td></tr>\n<tr class=\"separator:a0a6c00cb5d47874346eac56c7a8dd6f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae068dce5b8d7eee0c5d4f8e51a2c4da2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae068dce5b8d7eee0c5d4f8e51a2c4da2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadImuMeasurementsFromCsvFile</b> (const std::string &amp;filename)</td></tr>\n<tr class=\"separator:ae068dce5b8d7eee0c5d4f8e51a2c4da2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a650565676c2fea78f56244f13821b335\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a650565676c2fea78f56244f13821b335\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:a650565676c2fea78f56244f13821b335\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a15b01a512805f765ae771ef0394e696f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15b01a512805f765ae771ef0394e696f\"></a>\nstatic Eigen::Matrix3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>integrateGyroMeasurement</b> (const Eigen::Vector3d &amp;omega_measured, const Eigen::Matrix3d &amp;R_cam_imu, const double delta_t)</td></tr>\n<tr class=\"separator:a15b01a512805f765ae771ef0394e696f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3af5bb1d62a15d4ad728e5afac540c97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3af5bb1d62a15d4ad728e5afac540c97\"></a>\nstatic <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadCalibrationFromFile</b> (const std::string &amp;filename)</td></tr>\n<tr class=\"separator:a3af5bb1d62a15d4ad728e5afac540c97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeeb4c76cde31afa0f7bcd5a59a9af943\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeeb4c76cde31afa0f7bcd5a59a9af943\"></a>\nstatic <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>loadInitializationFromFile</b> (const std::string &amp;filename)</td></tr>\n<tr class=\"separator:aeeb4c76cde31afa0f7bcd5a59a9af943\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adfa7b2e908bca32200808e1ed058afed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adfa7b2e908bca32200808e1ed058afed\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:adfa7b2e908bca32200808e1ed058afed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb63be4ade85f98a7f26daf938e47708\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adb63be4ade85f98a7f26daf938e47708\"></a>\n<a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_calib_</b></td></tr>\n<tr class=\"separator:adb63be4ade85f98a7f26daf938e47708\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa437fa6e78b31bb22891d74bb4732282\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa437fa6e78b31bb22891d74bb4732282\"></a>\n<a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_init_</b></td></tr>\n<tr class=\"separator:aa437fa6e78b31bb22891d74bb4732282\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76e7695b19fbc7cf2166694cbe4f8895\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a76e7695b19fbc7cf2166694cbe4f8895\"></a>\nmutex_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>bias_mut_</b></td></tr>\n<tr class=\"separator:a76e7695b19fbc7cf2166694cbe4f8895\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22b7c9121510c07cfabd4bf564d6d1a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a22b7c9121510c07cfabd4bf564d6d1a2\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">acc_bias_</a></td></tr>\n<tr class=\"memdesc:a22b7c9121510c07cfabd4bf564d6d1a2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Accleration bias used during preintegration. <br /></td></tr>\n<tr class=\"separator:a22b7c9121510c07cfabd4bf564d6d1a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22cda8062d46a4a47161bf53ddf92851\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a22cda8062d46a4a47161bf53ddf92851\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">omega_bias_</a></td></tr>\n<tr class=\"memdesc:a22cda8062d46a4a47161bf53ddf92851\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Angular rate bias values used during preintegration. <br /></td></tr>\n<tr class=\"separator:a22cda8062d46a4a47161bf53ddf92851\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ae19349e23b8d841f9bfb0538b10a1117\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae19349e23b8d841f9bfb0538b10a1117\"></a>\nmutex_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurements_mut_</b></td></tr>\n<tr class=\"separator:ae19349e23b8d841f9bfb0538b10a1117\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b0c151b8efa51f23d533ca963179be7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4b0c151b8efa51f23d533ca963179be7\"></a>\nImuMeasurements&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">measurements_</a></td></tr>\n<tr class=\"memdesc:a4b0c151b8efa51f23d533ca963179be7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Newest measurement is at the front of the list. <br /></td></tr>\n<tr class=\"separator:a4b0c151b8efa51f23d533ca963179be7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f966922d90b43adec9421e28ecd23ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f966922d90b43adec9421e28ecd23ee\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">ofs_</a></td></tr>\n<tr class=\"memdesc:a0f966922d90b43adec9421e28ecd23ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">File stream for tracing the received measurments. <br /></td></tr>\n<tr class=\"separator:a0f966922d90b43adec9421e28ecd23ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af43cc07c06659b667667a5981690c83a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af43cc07c06659b667667a5981690c83a\">&#9670;&nbsp;</a></span>getInitialAttitude()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::ImuHandler::getInitialAttitude </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>timestamp</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Quaternion &amp;&#160;</td>\n          <td class=\"paramname\"><em>R_imu_world</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Assumes we are in hover condition and estimates the inital orientation by estimating the gravity direction. The yaw direction is not deterministic. </p>\n\n</div>\n</div>\n<a id=\"a944048ff2febf5a715e8c2ac179c32e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a944048ff2febf5a715e8c2ac179c32e9\">&#9670;&nbsp;</a></span>getMeasurements()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::ImuHandler::getMeasurements </td>\n          <td>(</td>\n          <td class=\"paramtype\">const double&#160;</td>\n          <td class=\"paramname\"><em>old_cam_timestamp</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const double&#160;</td>\n          <td class=\"paramname\"><em>new_cam_timestamp</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const bool&#160;</td>\n          <td class=\"paramname\"><em>delete_old_measurements</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">ImuMeasurements &amp;&#160;</td>\n          <td class=\"paramname\"><em>measurements</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Get IMU measurements in some time interval. Note that you have to provide the camera timestamps. Internally, given the calibration it corrects the timestamps for delays. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"imu__handler_8h_source.html\">imu_handler.h</a></li>\n<li>svo/src/imu_handler.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuHandler__coll__graph.md5",
    "content": "d6cb6cbee0d4220764b97ad8f7b8fdbf"
  },
  {
    "path": "docs/classsvo_1_1ImuInitialization-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuInitialization Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a\">acc_bias</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698\">acc_bias_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f\">omega_bias</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61\">omega_bias_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>print</b>(const std::string &amp;s=&quot;IMU Initialization: &quot;) const (defined in <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e\">velocity</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e\">velocity_sigma</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuInitialization.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ImuInitialization Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1ImuInitialization-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuInitialization Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::ImuInitialization:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ImuInitialization__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ImuInitialization_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa3ed1a5345070a15055ff1a0a0bad068\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3ed1a5345070a15055ff1a0a0bad068\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (const std::string &amp;s=&quot;IMU Initialization: &quot;) const</td></tr>\n<tr class=\"separator:aa3ed1a5345070a15055ff1a0a0bad068\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a23e696f56b27941e5109b0dbc8301aa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a23e696f56b27941e5109b0dbc8301aa9\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a23e696f56b27941e5109b0dbc8301aa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48631e0716dca6dc9f5aa7cc3718861e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48631e0716dca6dc9f5aa7cc3718861e\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e\">velocity</a> = Eigen::Vector3d::Zero()</td></tr>\n<tr class=\"memdesc:a48631e0716dca6dc9f5aa7cc3718861e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial velocity, in world frame! <br /></td></tr>\n<tr class=\"separator:a48631e0716dca6dc9f5aa7cc3718861e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7213362eac076f96b37125bdf56a467f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7213362eac076f96b37125bdf56a467f\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f\">omega_bias</a> = Eigen::Vector3d::Zero()</td></tr>\n<tr class=\"memdesc:a7213362eac076f96b37125bdf56a467f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial gyroscope bias. <br /></td></tr>\n<tr class=\"separator:a7213362eac076f96b37125bdf56a467f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99b90c57780695f4af1913da5ad69c9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a99b90c57780695f4af1913da5ad69c9a\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a\">acc_bias</a> = Eigen::Vector3d::Zero()</td></tr>\n<tr class=\"memdesc:a99b90c57780695f4af1913da5ad69c9a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial accelerometer bias. <br /></td></tr>\n<tr class=\"separator:a99b90c57780695f4af1913da5ad69c9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c6b127deadd3252b766f127716025e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2c6b127deadd3252b766f127716025e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e\">velocity_sigma</a> = 2.0</td></tr>\n<tr class=\"memdesc:ab2c6b127deadd3252b766f127716025e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial velocity uncertainty. <br /></td></tr>\n<tr class=\"separator:ab2c6b127deadd3252b766f127716025e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95e53a48e779e3bdb1c8242d3116ba61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95e53a48e779e3bdb1c8242d3116ba61\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61\">omega_bias_sigma</a> = 0.01</td></tr>\n<tr class=\"memdesc:a95e53a48e779e3bdb1c8242d3116ba61\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial gyroscope bias uncertainty. <br /></td></tr>\n<tr class=\"separator:a95e53a48e779e3bdb1c8242d3116ba61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f1c945afdd24248da77aa3dbea12698\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f1c945afdd24248da77aa3dbea12698\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698\">acc_bias_sigma</a> = 0.1</td></tr>\n<tr class=\"memdesc:a3f1c945afdd24248da77aa3dbea12698\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initial acceleromter bias uncertainty. <br /></td></tr>\n<tr class=\"separator:a3f1c945afdd24248da77aa3dbea12698\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"imu__calibration_8h_source.html\">imu_calibration.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ImuInitialization__coll__graph.md5",
    "content": "a579d83463745861be1ea67868784564"
  },
  {
    "path": "docs/classsvo_1_1Map-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Map Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">addKeyframe</a>(const FramePtr &amp;new_keyframe)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">addPointToTrash</a>(const PointPtr &amp;pt)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>checkDataConsistency</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">emptyPointsTrash</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">getClosestKeyframe</a>(const FramePtr &amp;frame) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">getClosestNKeyframesWithOberlap</a>(const FramePtr &amp;cur_frame, const size_t num_frames, std::vector&lt; FramePtr &gt; *visible_kfs) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">getFurthestKeyframe</a>(const Vector3d &amp;pos) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">getKeyframeById</a>(const int id) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">getLastKeyframe</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">getOverlapKeyframes</a>(const FramePtr &amp;frame, std::vector&lt; std::pair&lt; FramePtr, double &gt;&gt; *close_kfs) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">getSortedKeyframes</a>(std::vector&lt; FramePtr &gt; &amp;kfs_sorted) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Keyframes</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">keyframes_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>last_added_kf_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Map</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Map</b>(const Map &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const Map &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>points_to_delete_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>points_to_delete_mutex_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">removeKeyframe</a>(const int frame_id)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">safeDeletePoint</a>(const PointPtr &amp;pt)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">transform</a>(const Matrix3d &amp;R, const Vector3d &amp;t, const double &amp;s)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Map</b>() (defined in <a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Map.html\">svo::Map</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Map.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Map Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1Map-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Map Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> object which saves all keyframes which are in a map.  \n <a href=\"classsvo_1_1Map.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"map_8h_source.html\">map.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a292267f0f7134126f04b894746271cdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a292267f0f7134126f04b894746271cdc\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a292267f0f7134126f04b894746271cdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a295e625b4a6328d1d859b0ed0fd118f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a295e625b4a6328d1d859b0ed0fd118f4\"></a>\ntypedef std::unordered_map&lt; int, FramePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Keyframes</b></td></tr>\n<tr class=\"separator:a295e625b4a6328d1d859b0ed0fd118f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adab2e36a87a7eec9ab7f26fc5b143238\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adab2e36a87a7eec9ab7f26fc5b143238\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Map</b> (const <a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adab2e36a87a7eec9ab7f26fc5b143238\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af08afd5aa2dd715dae4b881786ce7aa6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af08afd5aa2dd715dae4b881786ce7aa6\"></a>\n<a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af08afd5aa2dd715dae4b881786ce7aa6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a317a8ef58d1abee86c0ab16040031f7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a317a8ef58d1abee86c0ab16040031f7c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">reset</a> ()</td></tr>\n<tr class=\"memdesc:a317a8ef58d1abee86c0ab16040031f7c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the map. Delete all keyframes and reset the frame and point counters. <br /></td></tr>\n<tr class=\"separator:a317a8ef58d1abee86c0ab16040031f7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa05cc168ddc26374fd75c22669f86da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afa05cc168ddc26374fd75c22669f86da\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">addKeyframe</a> (const FramePtr &amp;new_keyframe)</td></tr>\n<tr class=\"memdesc:afa05cc168ddc26374fd75c22669f86da\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add a new keyframe to the map. <br /></td></tr>\n<tr class=\"separator:afa05cc168ddc26374fd75c22669f86da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67fc8f788c6a3a71741c1979696fd00d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a67fc8f788c6a3a71741c1979696fd00d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">removeKeyframe</a> (const int frame_id)</td></tr>\n<tr class=\"memdesc:a67fc8f788c6a3a71741c1979696fd00d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Moves the frame to the trash queue which is cleaned now and then. <br /></td></tr>\n<tr class=\"separator:a67fc8f788c6a3a71741c1979696fd00d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2291de9801d0930cf7e64b0d7ec402c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2291de9801d0930cf7e64b0d7ec402c6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">safeDeletePoint</a> (const PointPtr &amp;pt)</td></tr>\n<tr class=\"memdesc:a2291de9801d0930cf7e64b0d7ec402c6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Safely remove a point from a map. <br /></td></tr>\n<tr class=\"separator:a2291de9801d0930cf7e64b0d7ec402c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a156a563e934fcbe060bfe0969e746f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a156a563e934fcbe060bfe0969e746f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">addPointToTrash</a> (const PointPtr &amp;pt)</td></tr>\n<tr class=\"memdesc:a3a156a563e934fcbe060bfe0969e746f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Moves the point to the trash bin, cleared after all reprojectors have done their job. <br /></td></tr>\n<tr class=\"separator:a3a156a563e934fcbe060bfe0969e746f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf44aec26900f8c80f09f8f76ff0dd2e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaf44aec26900f8c80f09f8f76ff0dd2e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">emptyPointsTrash</a> ()</td></tr>\n<tr class=\"memdesc:aaf44aec26900f8c80f09f8f76ff0dd2e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Effectively delete points in the trash bin. <br /></td></tr>\n<tr class=\"separator:aaf44aec26900f8c80f09f8f76ff0dd2e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a75275a92ad6a388da03ecb61c5849bcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75275a92ad6a388da03ecb61c5849bcb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">getOverlapKeyframes</a> (const FramePtr &amp;frame, std::vector&lt; std::pair&lt; FramePtr, double &gt;&gt; *close_kfs) const</td></tr>\n<tr class=\"memdesc:a75275a92ad6a388da03ecb61c5849bcb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Given a frame, return all keyframes which have an overlapping field of view. <br /></td></tr>\n<tr class=\"separator:a75275a92ad6a388da03ecb61c5849bcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f34b39bb21c144937b49280c4a2758c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f34b39bb21c144937b49280c4a2758c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">getClosestNKeyframesWithOberlap</a> (const FramePtr &amp;cur_frame, const size_t num_frames, std::vector&lt; FramePtr &gt; *visible_kfs) const</td></tr>\n<tr class=\"memdesc:a3f34b39bb21c144937b49280c4a2758c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Given a frame, return N closest keyframes with overlapping FoV. <br /></td></tr>\n<tr class=\"separator:a3f34b39bb21c144937b49280c4a2758c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00df59e6b064b8703898e5a3350712ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a00df59e6b064b8703898e5a3350712ec\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">getClosestKeyframe</a> (const FramePtr &amp;frame) const</td></tr>\n<tr class=\"memdesc:a00df59e6b064b8703898e5a3350712ec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return the keyframe which is spatially closest and has overlapping field of view. <br /></td></tr>\n<tr class=\"separator:a00df59e6b064b8703898e5a3350712ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20818729516f78d838a34673449bc479\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20818729516f78d838a34673449bc479\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">getFurthestKeyframe</a> (const Vector3d &amp;pos) const</td></tr>\n<tr class=\"memdesc:a20818729516f78d838a34673449bc479\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return the keyframe which is furthest apart from pos. <br /></td></tr>\n<tr class=\"separator:a20818729516f78d838a34673449bc479\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42fe05af7113a072570e16add76c13e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a42fe05af7113a072570e16add76c13e2\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">getKeyframeById</a> (const int id) const</td></tr>\n<tr class=\"memdesc:a42fe05af7113a072570e16add76c13e2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Keyframe by Frame-Id. Used for relocalizer. <br /></td></tr>\n<tr class=\"separator:a42fe05af7113a072570e16add76c13e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08bfdb2c4b6b9f06315e3526f05d3d0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">getSortedKeyframes</a> (std::vector&lt; FramePtr &gt; &amp;kfs_sorted) const</td></tr>\n<tr class=\"separator:a08bfdb2c4b6b9f06315e3526f05d3d0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a977dcc0712a023af82e8c8eaa1d76bf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a977dcc0712a023af82e8c8eaa1d76bf4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">transform</a> (const Matrix3d &amp;R, const Vector3d &amp;t, const double &amp;s)</td></tr>\n<tr class=\"memdesc:a977dcc0712a023af82e8c8eaa1d76bf4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Transform the whole map with rotation R, translation t and scale s. <br /></td></tr>\n<tr class=\"separator:a977dcc0712a023af82e8c8eaa1d76bf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6148e24f0d2979dec7f1bf664ac7469\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac6148e24f0d2979dec7f1bf664ac7469\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">size</a> () const</td></tr>\n<tr class=\"memdesc:ac6148e24f0d2979dec7f1bf664ac7469\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return the number of keyframes in the map. <br /></td></tr>\n<tr class=\"separator:ac6148e24f0d2979dec7f1bf664ac7469\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb67a122bb46f1b183c6251df895fea2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb67a122bb46f1b183c6251df895fea2\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">getLastKeyframe</a> ()</td></tr>\n<tr class=\"memdesc:afb67a122bb46f1b183c6251df895fea2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the last added keyframe (or a nullptr if none has been added) <br /></td></tr>\n<tr class=\"separator:afb67a122bb46f1b183c6251df895fea2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1db68f55ee2430d5b210bfacd9ffdc8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1db68f55ee2430d5b210bfacd9ffdc8e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>checkDataConsistency</b> () const</td></tr>\n<tr class=\"separator:a1db68f55ee2430d5b210bfacd9ffdc8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a16dd148e1e959c12cc3353006530ed6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a16dd148e1e959c12cc3353006530ed6e\"></a>\nKeyframes&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">keyframes_</a></td></tr>\n<tr class=\"memdesc:a16dd148e1e959c12cc3353006530ed6e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">List of keyframes in the map. <br /></td></tr>\n<tr class=\"separator:a16dd148e1e959c12cc3353006530ed6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac61669b5535e42a98cf5cc24b8854e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aac61669b5535e42a98cf5cc24b8854e3\"></a>\nstd::vector&lt; PointPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>points_to_delete_</b></td></tr>\n<tr class=\"separator:aac61669b5535e42a98cf5cc24b8854e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa405e66fbd9cec8dbfe57450975b61ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa405e66fbd9cec8dbfe57450975b61ea\"></a>\nstd::mutex&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>points_to_delete_mutex_</b></td></tr>\n<tr class=\"separator:aa405e66fbd9cec8dbfe57450975b61ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a965c7b6afc6d62a415c69e82e5d47b96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a965c7b6afc6d62a415c69e82e5d47b96\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_added_kf_id_</b></td></tr>\n<tr class=\"separator:a965c7b6afc6d62a415c69e82e5d47b96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> object which saves all keyframes which are in a map. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a08bfdb2c4b6b9f06315e3526f05d3d0c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08bfdb2c4b6b9f06315e3526f05d3d0c\">&#9670;&nbsp;</a></span>getSortedKeyframes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::Map::getSortedKeyframes </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; FramePtr &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>kfs_sorted</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>We use a hashtable to store the keyframes. This function provides a sorted list of keyframes. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"map_8h_source.html\">map.h</a></li>\n<li>svo/src/map.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Matcher-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Matcher Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__attribute__</b>((aligned(16))) (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>__attribute__</b>((aligned(16))) (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">A_cur_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">epi_image_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">epi_length_pyramid_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>f_cur_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e\">findEpipolarMatchDirect</a>(const Frame &amp;ref_frame, const Frame &amp;cur_frame, const FeatureWrapper &amp;ref_ftr, const double d_estimate_inv, const double d_min_inv, const double d_max_inv, double &amp;depth)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>findEpipolarMatchDirect</b>(const Frame &amp;ref_frame, const Frame &amp;cur_frame, const Transformation &amp;T_cur_ref, const FeatureWrapper &amp;ref_ftr, const double d_estimate_inv, const double d_min_inv, const double d_max_inv, double &amp;depth) (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55\">findLocalMatch</a>(const Frame &amp;frame, const Eigen::Ref&lt; GradientVector &gt; &amp;direction, const int patch_level, Keypoint &amp;px_cur)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd\">findMatchDirect</a>(const Frame &amp;ref_frame, const Frame &amp;cur_frame, const FeatureWrapper &amp;ref_ftr, const FloatType &amp;ref_depth, Keypoint &amp;px_cur)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getResultString</b>(const Matcher::MatchResult &amp;result) (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">h_inv_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e\">isPatchWithinImage</a>(const Frame &amp;frame, const Eigen::Vector2i &amp;pxi, const int patch_level)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kHalfPatchSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPatchSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Matcher</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MatchResult</b> enum name (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PatchScore</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>px_cur_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reject_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5\">scanEpipolarLine</a>(const Frame &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const PatchScore &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b\">scanEpipolarUnitPlane</a>(const Frame &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const PatchScore &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0\">scanEpipolarUnitSphere</a>(const Frame &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const PatchScore &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>search_level_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424\">updateZMSSD</a>(const Frame &amp;frame, const Eigen::Vector2i &amp;pxi, const int patch_level, const PatchScore &amp;patch_score, int *zmssd_best)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Matcher</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Matcher.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Matcher Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classsvo_1_1Matcher-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Matcher Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Patch-matcher for reprojection-matching and epipolar search in triangulation.  \n <a href=\"classsvo_1_1Matcher.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"matcher_8h_source.html\">matcher.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Matcher:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Matcher__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Matcher_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1Matcher_coll__map\" id=\"svo_1_1Matcher_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1Matcher_1_1Options.html\" title=\"svo::Matcher::Options\" alt=\"\" coords=\"5,95,156,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">Options</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aa463dd65fa9e154ec3bee420c0a97b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa463dd65fa9e154ec3bee420c0a97b22\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MatchResult</b> { <br />\n&#160;&#160;<b>kSuccess</b>, \n<b>kFailScore</b>, \n<b>kFailTriangulation</b>, \n<b>kFailVisibility</b>, \n<br />\n&#160;&#160;<b>kFailWarp</b>, \n<b>kFailAlignment</b>, \n<b>kFailRange</b>, \n<b>kFailAngle</b>, \n<br />\n&#160;&#160;<b>kFailCloseView</b>, \n<b>kFailLock</b>\n<br />\n }</td></tr>\n<tr class=\"separator:aa463dd65fa9e154ec3bee420c0a97b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87b3d3fc0c8435b1b9ec1c2f704bea0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87b3d3fc0c8435b1b9ec1c2f704bea0a\"></a>\ntypedef <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD</a>&lt; kHalfPatchSize &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PatchScore</b></td></tr>\n<tr class=\"separator:a87b3d3fc0c8435b1b9ec1c2f704bea0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e399d7b4bfd3f772f70c68b626b514a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8e399d7b4bfd3f772f70c68b626b514a\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8e399d7b4bfd3f772f70c68b626b514a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a147c624ffdda0a50315cce645184f2c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a147c624ffdda0a50315cce645184f2c6\"></a>\nuint8_t patch_ [kPatchSize *kPatchSize]&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__attribute__</b> ((aligned(16)))</td></tr>\n<tr class=\"separator:a147c624ffdda0a50315cce645184f2c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e9519851ba5ec2058995e19d5c4e4d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8e9519851ba5ec2058995e19d5c4e4d1\"></a>\nuint8_t patch_with_border_ [(kPatchSize+2) *(kPatchSize+2)]&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__attribute__</b> ((aligned(16)))</td></tr>\n<tr class=\"separator:a8e9519851ba5ec2058995e19d5c4e4d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7a3fcee314003b6ed3764ad35b429bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">MatchResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd\">findMatchDirect</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;ref_frame, const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;cur_frame, const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;ref_ftr, const FloatType &amp;ref_depth, Keypoint &amp;px_cur)</td></tr>\n<tr class=\"separator:aa7a3fcee314003b6ed3764ad35b429bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44b92902bcd691dacd044c1e3a3ddd8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a44b92902bcd691dacd044c1e3a3ddd8e\"></a>\nMatchResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e\">findEpipolarMatchDirect</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;ref_frame, const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;cur_frame, const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;ref_ftr, const double d_estimate_inv, const double d_min_inv, const double d_max_inv, double &amp;depth)</td></tr>\n<tr class=\"memdesc:a44b92902bcd691dacd044c1e3a3ddd8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Find a match by searching along the epipolar line without using any features. <br /></td></tr>\n<tr class=\"separator:a44b92902bcd691dacd044c1e3a3ddd8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8fbf1585ab956882c7f067dd063a0ad2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8fbf1585ab956882c7f067dd063a0ad2\"></a>\nMatchResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>findEpipolarMatchDirect</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;ref_frame, const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;cur_frame, const Transformation &amp;T_cur_ref, const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;ref_ftr, const double d_estimate_inv, const double d_min_inv, const double d_max_inv, double &amp;depth)</td></tr>\n<tr class=\"separator:a8fbf1585ab956882c7f067dd063a0ad2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae648d7e7811ee7e43841a0dde70d7ad5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5\">scanEpipolarLine</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td></tr>\n<tr class=\"separator:ae648d7e7811ee7e43841a0dde70d7ad5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a6b84685402bacd78c2d0101ccf453f99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b84685402bacd78c2d0101ccf453f99\"></a>\nstatic std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getResultString</b> (const Matcher::MatchResult &amp;result)</td></tr>\n<tr class=\"separator:a6b84685402bacd78c2d0101ccf453f99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a35f5144cf82ab4409a048aaf315802e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a35f5144cf82ab4409a048aaf315802e1\"></a>\nstruct <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a35f5144cf82ab4409a048aaf315802e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a516300236f619e5bb5692877d326ce9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a516300236f619e5bb5692877d326ce9b\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">A_cur_ref_</a></td></tr>\n<tr class=\"memdesc:a516300236f619e5bb5692877d326ce9b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">affine warp matrix <br /></td></tr>\n<tr class=\"separator:a516300236f619e5bb5692877d326ce9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03bce17dc9e2f21c4cab3ca16a785184\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a03bce17dc9e2f21c4cab3ca16a785184\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">epi_image_</a></td></tr>\n<tr class=\"memdesc:a03bce17dc9e2f21c4cab3ca16a785184\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">vector from epipolar start to end on the image plane <br /></td></tr>\n<tr class=\"separator:a03bce17dc9e2f21c4cab3ca16a785184\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a7f14a10723967506db9c4216885f2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a7f14a10723967506db9c4216885f2c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">epi_length_pyramid_</a></td></tr>\n<tr class=\"memdesc:a9a7f14a10723967506db9c4216885f2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">length of epipolar line segment in pixels on pyrimid level (only used for epipolar search) <br /></td></tr>\n<tr class=\"separator:a9a7f14a10723967506db9c4216885f2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae09df94962be792484c79ec44f76a5c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae09df94962be792484c79ec44f76a5c3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">h_inv_</a></td></tr>\n<tr class=\"memdesc:ae09df94962be792484c79ec44f76a5c3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">hessian of 1d image alignment along epipolar line <br /></td></tr>\n<tr class=\"separator:ae09df94962be792484c79ec44f76a5c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0105e4370d460cd2062cb663fa657b6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0105e4370d460cd2062cb663fa657b6b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>search_level_</b></td></tr>\n<tr class=\"separator:a0105e4370d460cd2062cb663fa657b6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4263cfae15bbc2bf241e206563db60ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4263cfae15bbc2bf241e206563db60ea\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reject_</b></td></tr>\n<tr class=\"separator:a4263cfae15bbc2bf241e206563db60ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a834f390bb2cda38faac3cd613506d213\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a834f390bb2cda38faac3cd613506d213\"></a>\nKeypoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>px_cur_</b></td></tr>\n<tr class=\"separator:a834f390bb2cda38faac3cd613506d213\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a729efc1b1ed7c5595e25157ce9742cc4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a729efc1b1ed7c5595e25157ce9742cc4\"></a>\nBearingVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>f_cur_</b></td></tr>\n<tr class=\"separator:a729efc1b1ed7c5595e25157ce9742cc4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a0516864fa7defb0b561e47204aa672ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0516864fa7defb0b561e47204aa672ac\"></a>\nstatic EIGEN_MAKE_ALIGNED_OPERATOR_NEW const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kHalfPatchSize</b> = 4</td></tr>\n<tr class=\"separator:a0516864fa7defb0b561e47204aa672ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2797181a974a44cd178afb9a58ef7778\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2797181a974a44cd178afb9a58ef7778\"></a>\nstatic const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kPatchSize</b> = 8</td></tr>\n<tr class=\"separator:a2797181a974a44cd178afb9a58ef7778\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a3076c56a5213482eead54258e1801e55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3076c56a5213482eead54258e1801e55\"></a>\nMatchResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55\">findLocalMatch</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Ref&lt; GradientVector &gt; &amp;direction, const int patch_level, Keypoint &amp;px_cur)</td></tr>\n<tr class=\"memdesc:a3076c56a5213482eead54258e1801e55\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">local optimization for patch_ and patch_with_border_ in <em>frame</em> around <em>px_cur</em>(image) <br /></td></tr>\n<tr class=\"separator:a3076c56a5213482eead54258e1801e55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64098668259a468ec8c8cfa5dc40f424\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64098668259a468ec8c8cfa5dc40f424\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424\">updateZMSSD</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Vector2i &amp;pxi, const int patch_level, const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;patch_score, int *zmssd_best)</td></tr>\n<tr class=\"memdesc:a64098668259a468ec8c8cfa5dc40f424\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">update best zmssd, if a better one is find, return true <br /></td></tr>\n<tr class=\"separator:a64098668259a468ec8c8cfa5dc40f424\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91e0091043b2a4b31bb7cb6d88bb2c6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a91e0091043b2a4b31bb7cb6d88bb2c6e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e\">isPatchWithinImage</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Vector2i &amp;pxi, const int patch_level)</td></tr>\n<tr class=\"memdesc:a91e0091043b2a4b31bb7cb6d88bb2c6e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">check is patch is fully within image <br /></td></tr>\n<tr class=\"separator:a91e0091043b2a4b31bb7cb6d88bb2c6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af254d2322bae47f0bd6434b92453a22b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b\">scanEpipolarUnitPlane</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td></tr>\n<tr class=\"separator:af254d2322bae47f0bd6434b92453a22b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a4407ba73d6bc35ae8f1d86e624a2e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0\">scanEpipolarUnitSphere</a> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, const Eigen::Vector3d &amp;A, const Eigen::Vector3d &amp;B, const Eigen::Vector3d &amp;C, const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;patch_score, const int patch_level, Keypoint *image_best, int *zmssd_best)</td></tr>\n<tr class=\"separator:a0a4407ba73d6bc35ae8f1d86e624a2e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Patch-matcher for reprojection-matching and epipolar search in triangulation. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa7a3fcee314003b6ed3764ad35b429bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa7a3fcee314003b6ed3764ad35b429bd\">&#9670;&nbsp;</a></span>findMatchDirect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">Matcher::MatchResult svo::Matcher::findMatchDirect </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>ref_frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>cur_frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>ref_ftr</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const FloatType &amp;&#160;</td>\n          <td class=\"paramname\"><em>ref_depth</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Keypoint &amp;&#160;</td>\n          <td class=\"paramname\"><em>px_cur</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Find a match by directly applying subpix refinement. IMPORTANT! This function assumes that px_cur is already set to an estimate that is within ~2-3 pixel of the final result! </p>\n\n</div>\n</div>\n<a id=\"ae648d7e7811ee7e43841a0dde70d7ad5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae648d7e7811ee7e43841a0dde70d7ad5\">&#9670;&nbsp;</a></span>scanEpipolarLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::Matcher::scanEpipolarLine </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>A</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>B</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>C</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>patch_score</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const int&#160;</td>\n          <td class=\"paramname\"><em>patch_level</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Keypoint *&#160;</td>\n          <td class=\"paramname\"><em>image_best</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int *&#160;</td>\n          <td class=\"paramname\"><em>zmssd_best</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>search epipolar line between A~C~B for the best match with respect to patch score the search is done on patch_level, returns image coordinates and best ZMSSD </p>\n\n</div>\n</div>\n<a id=\"af254d2322bae47f0bd6434b92453a22b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af254d2322bae47f0bd6434b92453a22b\">&#9670;&nbsp;</a></span>scanEpipolarUnitPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::Matcher::scanEpipolarUnitPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>A</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>B</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>C</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>patch_score</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const int&#160;</td>\n          <td class=\"paramname\"><em>patch_level</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Keypoint *&#160;</td>\n          <td class=\"paramname\"><em>image_best</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int *&#160;</td>\n          <td class=\"paramname\"><em>zmssd_best</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>search along the epipolar line on image plane we sample on the UNIT PLANE and check corresponding patches on the image plane </p>\n\n</div>\n</div>\n<a id=\"a0a4407ba73d6bc35ae8f1d86e624a2e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a4407ba73d6bc35ae8f1d86e624a2e0\">&#9670;&nbsp;</a></span>scanEpipolarUnitSphere()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::Matcher::scanEpipolarUnitSphere </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>A</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>B</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const Eigen::Vector3d &amp;&#160;</td>\n          <td class=\"paramname\"><em>C</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>patch_score</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const int&#160;</td>\n          <td class=\"paramname\"><em>patch_level</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Keypoint *&#160;</td>\n          <td class=\"paramname\"><em>image_best</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int *&#160;</td>\n          <td class=\"paramname\"><em>zmssd_best</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>search along the epipolar line on image plane we sample on the UNIT SPHERE and check corresponding patches on the image plane </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"matcher_8h_source.html\">matcher.h</a></li>\n<li>svo_direct/src/matcher.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Matcher__coll__graph.md5",
    "content": "5eb3e16f6292166ddb831391dd22f092"
  },
  {
    "path": "docs/classsvo_1_1OccupandyGrid2D-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OccupandyGrid2D Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cell_size</b> (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>empty</b>() (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>fillWithKeypoints</b>(const Keypoints &amp;keypoints) (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getCellIndex</b>(const Eigen::MatrixBase&lt; Derived &gt; &amp;px) (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getCellIndex</b>(int x, int y, int scale=1) const (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Grid</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isOccupied</b>(const size_t cell_index) (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>n_cols</b> (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>n_rows</b> (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>occupancy_</b> (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>OccupandyGrid2D</b>(int cell_size, int n_cols, int n_rows) (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setOccupied</b>(const size_t cell_index) (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>size</b>() (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~OccupandyGrid2D</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1OccupandyGrid2D.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::OccupandyGrid2D Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1OccupandyGrid2D-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OccupandyGrid2D Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"occupancy__grid__2d_8h_source.html\">occupancy_grid_2d.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ac076d80c28483955ee8ae5943fd71849\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac076d80c28483955ee8ae5943fd71849\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Grid</b> = std::vector&lt; bool &gt;</td></tr>\n<tr class=\"separator:ac076d80c28483955ee8ae5943fd71849\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa4242c626a05c86d155285b23aacc005\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa4242c626a05c86d155285b23aacc005\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>OccupandyGrid2D</b> (int cell_size, int n_cols, int n_rows)</td></tr>\n<tr class=\"separator:aa4242c626a05c86d155285b23aacc005\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae72137a19071f774c2d827f842497acf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae72137a19071f774c2d827f842497acf\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:ae72137a19071f774c2d827f842497acf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68176f6978851d51a7a8386dc0c06a44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a68176f6978851d51a7a8386dc0c06a44\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>size</b> ()</td></tr>\n<tr class=\"separator:a68176f6978851d51a7a8386dc0c06a44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dfc5171c3c2176ea54433561ca47745\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dfc5171c3c2176ea54433561ca47745\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>empty</b> ()</td></tr>\n<tr class=\"separator:a7dfc5171c3c2176ea54433561ca47745\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad22768a1adf65ae4df915e7741f3faad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad22768a1adf65ae4df915e7741f3faad\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isOccupied</b> (const size_t cell_index)</td></tr>\n<tr class=\"separator:ad22768a1adf65ae4df915e7741f3faad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b2921f345b067a29ae2cba89cffd0f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b2921f345b067a29ae2cba89cffd0f5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setOccupied</b> (const size_t cell_index)</td></tr>\n<tr class=\"separator:a2b2921f345b067a29ae2cba89cffd0f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d40332686e1e1fca9daa44ba87ebe22\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a9d40332686e1e1fca9daa44ba87ebe22\"></a>\ntemplate&lt;typename Derived &gt; </td></tr>\n<tr class=\"memitem:a9d40332686e1e1fca9daa44ba87ebe22\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>getCellIndex</b> (const Eigen::MatrixBase&lt; Derived &gt; &amp;px)</td></tr>\n<tr class=\"separator:a9d40332686e1e1fca9daa44ba87ebe22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05d580ed8ea919162f8309154377b60b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a05d580ed8ea919162f8309154377b60b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getCellIndex</b> (int x, int y, int scale=1) const</td></tr>\n<tr class=\"separator:a05d580ed8ea919162f8309154377b60b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a457927f066c495bf31377d8cad3cdd72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a457927f066c495bf31377d8cad3cdd72\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fillWithKeypoints</b> (const Keypoints &amp;keypoints)</td></tr>\n<tr class=\"separator:a457927f066c495bf31377d8cad3cdd72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a14808d5ca1bfb7c5d9af870a8a938620\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14808d5ca1bfb7c5d9af870a8a938620\"></a>\nconst int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cell_size</b></td></tr>\n<tr class=\"separator:a14808d5ca1bfb7c5d9af870a8a938620\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9195c0bf181367a252dfd227f0a0dbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af9195c0bf181367a252dfd227f0a0dbe\"></a>\nconst int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_cols</b></td></tr>\n<tr class=\"separator:af9195c0bf181367a252dfd227f0a0dbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cfda633e2bab08eeb985c6ae9d6ce05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5cfda633e2bab08eeb985c6ae9d6ce05\"></a>\nconst int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_rows</b></td></tr>\n<tr class=\"separator:a5cfda633e2bab08eeb985c6ae9d6ce05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a4d14ff3cd9ff3291ce22abd970ed06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2a4d14ff3cd9ff3291ce22abd970ed06\"></a>\nGrid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>occupancy_</b></td></tr>\n<tr class=\"separator:a2a4d14ff3cd9ff3291ce22abd970ed06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>We divide the image into a grid of cells and try to find maximally one feature per cell. This is to ensure good distribution of features in the image. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"occupancy__grid__2d_8h_source.html\">occupancy_grid_2d.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1OneShotInit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OneShotInit Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~OneShotInit</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1OneShotInit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::OneShotInit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1OneShotInit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OneShotInit Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::OneShotInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1OneShotInit__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1OneShotInit_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1OneShotInit_inherit__map\" id=\"svo_1_1OneShotInit_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::OneShotInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1OneShotInit__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1OneShotInit_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1OneShotInit_coll__map\" id=\"svo_1_1OneShotInit_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a03995bcdfab0f5ef21e328b9367b7c65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a03995bcdfab0f5ef21e328b9367b7c65\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:a03995bcdfab0f5ef21e328b9367b7c65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Assumes horizontal ground and given depth. Initializes all features in the plane. Used for autonomous take-off. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1OneShotInit__coll__graph.md5",
    "content": "cb37705613c9ca2d868bd2f965b133dd"
  },
  {
    "path": "docs/classsvo_1_1OneShotInit__inherit__graph.md5",
    "content": "dc51ef716cc45b77621bac646bd886ff"
  },
  {
    "path": "docs/classsvo_1_1PatchNormal-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PatchNormal Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">depth_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>display_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>evaluateError</b>(const State &amp;params, HessianMatrix *H, GradientVector *g) (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_cur_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">frame_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ftr_ref_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_ref_patch_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>img_residuals_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>jacobian_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>normal_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_area_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_halfsize_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PatchNormal</b>(const SolverOptions &amp;solver_options) (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>precomputeJacobian</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>run</b>(std::shared_ptr&lt; Feature &gt; ftr_ref, double depth, const FramePtr &amp;frame_cur, Eigen::Vector3d &amp;normal_ref, Eigen::Matrix2d &amp;information) (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>T_c_r_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>update</b>(const State &amp;param_old, const UpdateVector &amp;dx, State &amp;param_new) (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;::update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>update_x_vec_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update_y_vec_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~PatchNormal</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PatchNormal.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::PatchNormal Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classsvo_1_1PatchNormal-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PatchNormal Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"patch__normal_8h_source.html\">patch_normal.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::PatchNormal:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1PatchNormal__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1PatchNormal_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1PatchNormal_inherit__map\" id=\"svo_1_1PatchNormal_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 2, Eigen::Vector2d,\\l PatchNormal \\&gt;\" alt=\"\" coords=\"5,5,196,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::PatchNormal:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1PatchNormal__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1PatchNormal_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1PatchNormal_coll__map\" id=\"svo_1_1PatchNormal_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 2, Eigen::Vector2d,\\l PatchNormal \\&gt;\" alt=\"\" coords=\"507,100,697,156\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ad9b83c5febeffc5993dd7f2e912dd230\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9b83c5febeffc5993dd7f2e912dd230\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b> = <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td></tr>\n<tr class=\"separator:ad9b83c5febeffc5993dd7f2e912dd230\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7a67c688b8f5f7b896241e1d0d36b09e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7a67c688b8f5f7b896241e1d0d36b09e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PatchNormal</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> &amp;solver_options)</td></tr>\n<tr class=\"separator:a7a67c688b8f5f7b896241e1d0d36b09e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07220e6eb06c448809daec889c143cb6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a07220e6eb06c448809daec889c143cb6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> (std::shared_ptr&lt; Feature &gt; ftr_ref, double depth, const FramePtr &amp;frame_cur, Eigen::Vector3d &amp;normal_ref, Eigen::Matrix2d &amp;information)</td></tr>\n<tr class=\"separator:a07220e6eb06c448809daec889c143cb6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa870de2023469c50b0c8afa9717f0f9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa870de2023469c50b0c8afa9717f0f9d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>precomputeJacobian</b> ()</td></tr>\n<tr class=\"separator:aa870de2023469c50b0c8afa9717f0f9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e42514e65560616acc4e042df8c13b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e42514e65560616acc4e042df8c13b9\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>evaluateError</b> (const State &amp;params, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a9e42514e65560616acc4e042df8c13b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7168f2d9135ae2b967ae0bbf56d88e9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7168f2d9135ae2b967ae0bbf56d88e9f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const State &amp;param_old, const UpdateVector &amp;dx, State &amp;param_new)</td></tr>\n<tr class=\"separator:a7168f2d9135ae2b967ae0bbf56d88e9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a127699bc852c5dc69c24515d42483461\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a127699bc852c5dc69c24515d42483461\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:a127699bc852c5dc69c24515d42483461\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90da3fed93c9bf411b5458b8ae031ee2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a90da3fed93c9bf411b5458b8ae031ee2\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a90da3fed93c9bf411b5458b8ae031ee2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87c186244104ba52e0e2b830b427cff4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87c186244104ba52e0e2b830b427cff4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a87c186244104ba52e0e2b830b427cff4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a31163ea12451ba2d49484b414bcc9061\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31163ea12451ba2d49484b414bcc9061\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:a31163ea12451ba2d49484b414bcc9061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adf3e7937075a1d06f7101f0cc9d9d613\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf3e7937075a1d06f7101f0cc9d9d613\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>display_</b></td></tr>\n<tr class=\"separator:adf3e7937075a1d06f7101f0cc9d9d613\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41594f1d0cc7e7d26d56752ac37238c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a41594f1d0cc7e7d26d56752ac37238c1\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_residuals_</b></td></tr>\n<tr class=\"separator:a41594f1d0cc7e7d26d56752ac37238c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e464870c5b172cd409b92bd36a04bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77e464870c5b172cd409b92bd36a04bb\"></a>\nFeaturePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ftr_ref_</b></td></tr>\n<tr class=\"separator:a77e464870c5b172cd409b92bd36a04bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f8819885e232809ce767f3f526498b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f8819885e232809ce767f3f526498b2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">depth_</a></td></tr>\n<tr class=\"memdesc:a3f8819885e232809ce767f3f526498b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">depth of the point in the reference frame <br /></td></tr>\n<tr class=\"separator:a3f8819885e232809ce767f3f526498b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e0d5857d012898d6cb810c97b3a9935\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e0d5857d012898d6cb810c97b3a9935\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">frame_ref_</a></td></tr>\n<tr class=\"memdesc:a3e0d5857d012898d6cb810c97b3a9935\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frame <br /></td></tr>\n<tr class=\"separator:a3e0d5857d012898d6cb810c97b3a9935\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48f03ead1784ab3d2c845b5ebc937616\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48f03ead1784ab3d2c845b5ebc937616\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_cur_</b></td></tr>\n<tr class=\"separator:a48f03ead1784ab3d2c845b5ebc937616\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357f2fe8187600660b7895d7463979ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a357f2fe8187600660b7895d7463979ea\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>T_c_r_</b></td></tr>\n<tr class=\"separator:a357f2fe8187600660b7895d7463979ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57b288d640d7b3ea4a9c23eea0a7be9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a57b288d640d7b3ea4a9c23eea0a7be9b\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>normal_</b></td></tr>\n<tr class=\"separator:a57b288d640d7b3ea4a9c23eea0a7be9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63d33bc99c4ecb376275cccebbe68f02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63d33bc99c4ecb376275cccebbe68f02\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update_x_vec_</b></td></tr>\n<tr class=\"separator:a63d33bc99c4ecb376275cccebbe68f02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb4d2aeb1f963be1af69027c7d2e4011\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb4d2aeb1f963be1af69027c7d2e4011\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update_y_vec_</b></td></tr>\n<tr class=\"separator:acb4d2aeb1f963be1af69027c7d2e4011\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b70df7560b2b96635545e922cd4bcff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b70df7560b2b96635545e922cd4bcff\"></a>\nEigen::Matrix&lt; double, 2, patch_area_ &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jacobian_cache_</b></td></tr>\n<tr class=\"separator:a5b70df7560b2b96635545e922cd4bcff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af75f0d0ca2daf5b395a4effc61722742\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af75f0d0ca2daf5b395a4effc61722742\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_ref_patch_cache_</b></td></tr>\n<tr class=\"separator:af75f0d0ca2daf5b395a4effc61722742\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a12fbd19244e2d161e1ee4de966700598\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12fbd19244e2d161e1ee4de966700598\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_halfsize_</b> = 20</td></tr>\n<tr class=\"separator:a12fbd19244e2d161e1ee4de966700598\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22bab1dda6462faf37e2f31b7a3a7f4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a22bab1dda6462faf37e2f31b7a3a7f4f\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_</b> = 2*patch_halfsize_</td></tr>\n<tr class=\"separator:a22bab1dda6462faf37e2f31b7a3a7f4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4394c1be5138910f6028312e387544ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4394c1be5138910f6028312e387544ef\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_area_</b> = patch_size_*patch_size_</td></tr>\n<tr class=\"separator:a4394c1be5138910f6028312e387544ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nPatchNormal &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Estimate the patch normal from multiple observations of the corresponding 3D point. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"patch__normal_8h_source.html\">patch_normal.h</a></li>\n<li>svo/src/patch_normal.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PatchNormal__coll__graph.md5",
    "content": "6c2d5e8a218a1632a060f3d5e7eeeb3c"
  },
  {
    "path": "docs/classsvo_1_1PatchNormal__inherit__graph.md5",
    "content": "e54232943a04945433f3c788c6f43906"
  },
  {
    "path": "docs/classsvo_1_1Point-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Point Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f\">addObservation</a>(const FramePtr &amp;frame, const size_t feature_index)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38\">getCloseViewObs</a>(const Eigen::Vector3d &amp;pos, FramePtr &amp;ref_frame, size_t &amp;ref_feature_index) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7\">getSeedFrame</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6\">getTriangulationParallax</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">id</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b\">in_ba_graph_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4\">initNormal</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">jacobian_xyz2f</a>(const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;point_jac)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">jacobian_xyz2uv</a>(const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, svo::Matrix23d &amp;point_jac)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>KeypointIdentifierList</b> (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad\">last_ba_update_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">last_projected_kf_id_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a\">last_published_ts_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc\">last_structure_optim_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6\">n_failed_reproj_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e\">n_succeeded_reproj_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">normal_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">normal_information_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0\">normal_set_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">nRefs</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">obs_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator=</b>(const Point &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7\">optimize</a>(const size_t n_iter, bool using_bearing_vector=false)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7\">Point</a>(const Eigen::Vector3d &amp;pos)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#ae904bb2f9bf357e859aa1ccf0c5de1cd\">Point</a>(const int id, const Eigen::Vector3d &amp;pos)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Point</b>(const Point &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PointType</b> enum name (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">pos_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc\">print</a>(const std::string &amp;s=&quot;Point:&quot;) const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c\">removeObservation</a>(int frame_id)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc\">triangulateLinear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">type</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a\">type_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>TYPE_CORNER</b> enum value (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>TYPE_CORNER_SEED</b> enum value (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>TYPE_EDGELET</b> enum value (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>TYPE_EDGELET_SEED</b> enum value (defined in <a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd\">updateHessianGradientUnitPlane</a>(const Eigen::Ref&lt; BearingVector &gt; &amp;f, const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;A, Eigen::Vector3d &amp;b, double &amp;new_chi2)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e\">updateHessianGradientUnitSphere</a>(const Eigen::Ref&lt; BearingVector &gt; &amp;f, const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;A, Eigen::Vector3d &amp;b, double &amp;new_chi2)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97\">~Point</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Point.html\">svo::Point</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Point.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Point Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1Point-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Point Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>A 3D point on the surface of the scene.  \n <a href=\"classsvo_1_1Point.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"point_8h_source.html\">point.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Point:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Point__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Point_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a965ba3de05ff34114bd6e9b97827196c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a965ba3de05ff34114bd6e9b97827196c\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointType</b> { <b>TYPE_EDGELET_SEED</b>, \n<b>TYPE_CORNER_SEED</b>, \n<b>TYPE_EDGELET</b>, \n<b>TYPE_CORNER</b>\n }</td></tr>\n<tr class=\"separator:a965ba3de05ff34114bd6e9b97827196c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9d77ac148602a11e6d15070e3ca9bba7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d77ac148602a11e6d15070e3ca9bba7\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7\">Point</a> (const Eigen::Vector3d &amp;<a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a>)</td></tr>\n<tr class=\"memdesc:a9d77ac148602a11e6d15070e3ca9bba7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a9d77ac148602a11e6d15070e3ca9bba7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae904bb2f9bf357e859aa1ccf0c5de1cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae904bb2f9bf357e859aa1ccf0c5de1cd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#ae904bb2f9bf357e859aa1ccf0c5de1cd\">Point</a> (const int <a class=\"el\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">id</a>, const Eigen::Vector3d &amp;<a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a>)</td></tr>\n<tr class=\"memdesc:ae904bb2f9bf357e859aa1ccf0c5de1cd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor with id: Only for testing! <br /></td></tr>\n<tr class=\"separator:ae904bb2f9bf357e859aa1ccf0c5de1cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ad56f3912adfdca172593afbddb0e97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3ad56f3912adfdca172593afbddb0e97\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97\">~Point</a> ()</td></tr>\n<tr class=\"memdesc:a3ad56f3912adfdca172593afbddb0e97\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor. <br /></td></tr>\n<tr class=\"separator:a3ad56f3912adfdca172593afbddb0e97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa72c284abf5e9cfc817a4d58b58727a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa72c284abf5e9cfc817a4d58b58727a2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Point</b> (const <a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a> &amp;)=delete</td></tr>\n<tr class=\"separator:aa72c284abf5e9cfc817a4d58b58727a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afedcd3186d75b17b9a79b3b3f601d0ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afedcd3186d75b17b9a79b3b3f601d0ac\"></a>\n<a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a> &amp;)=delete</td></tr>\n<tr class=\"separator:afedcd3186d75b17b9a79b3b3f601d0ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7599da2dda2ac7886cbb9cdc2fbfbd3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7599da2dda2ac7886cbb9cdc2fbfbd3f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f\">addObservation</a> (const FramePtr &amp;frame, const size_t feature_index)</td></tr>\n<tr class=\"memdesc:a7599da2dda2ac7886cbb9cdc2fbfbd3f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add a reference to a frame. <br /></td></tr>\n<tr class=\"separator:a7599da2dda2ac7886cbb9cdc2fbfbd3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c9abf43e1ed81c931a6d811cc000a6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c9abf43e1ed81c931a6d811cc000a6c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c\">removeObservation</a> (int frame_id)</td></tr>\n<tr class=\"memdesc:a7c9abf43e1ed81c931a6d811cc000a6c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Remove observation via frame-ID. <br /></td></tr>\n<tr class=\"separator:a7c9abf43e1ed81c931a6d811cc000a6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abefcb0aae2a7ff8da053cbfdb4c051d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abefcb0aae2a7ff8da053cbfdb4c051d4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4\">initNormal</a> ()</td></tr>\n<tr class=\"memdesc:abefcb0aae2a7ff8da053cbfdb4c051d4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initialize point normal. The inital estimate will point towards the frame. <br /></td></tr>\n<tr class=\"separator:abefcb0aae2a7ff8da053cbfdb4c051d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a274e5d81d7b27c75fc9d2c4d6663ad38\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a274e5d81d7b27c75fc9d2c4d6663ad38\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38\">getCloseViewObs</a> (const Eigen::Vector3d &amp;<a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a>, FramePtr &amp;ref_frame, size_t &amp;ref_feature_index) const</td></tr>\n<tr class=\"memdesc:a274e5d81d7b27c75fc9d2c4d6663ad38\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get <a class=\"el\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \">Frame</a> with similar viewpoint. <br /></td></tr>\n<tr class=\"separator:a274e5d81d7b27c75fc9d2c4d6663ad38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9eb8d202f27d54e5792ec0dcc2457e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9eb8d202f27d54e5792ec0dcc2457e6\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6\">getTriangulationParallax</a> () const</td></tr>\n<tr class=\"memdesc:ad9eb8d202f27d54e5792ec0dcc2457e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get parallax angle of triangulation. Useful to check if point is constrained. <br /></td></tr>\n<tr class=\"separator:ad9eb8d202f27d54e5792ec0dcc2457e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a434bb8bb372fe7e3418dabe4935ff8b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a434bb8bb372fe7e3418dabe4935ff8b7\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7\">getSeedFrame</a> () const</td></tr>\n<tr class=\"memdesc:a434bb8bb372fe7e3418dabe4935ff8b7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get frame with seed of this point. <br /></td></tr>\n<tr class=\"separator:a434bb8bb372fe7e3418dabe4935ff8b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1239a736f175ba2f461ed26f661dfcbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1239a736f175ba2f461ed26f661dfcbf\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">nRefs</a> () const</td></tr>\n<tr class=\"memdesc:a1239a736f175ba2f461ed26f661dfcbf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get number of observations. <br /></td></tr>\n<tr class=\"separator:a1239a736f175ba2f461ed26f661dfcbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d98614a51faaca6da0cf68fb13278dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d98614a51faaca6da0cf68fb13278dc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc\">triangulateLinear</a> ()</td></tr>\n<tr class=\"memdesc:a2d98614a51faaca6da0cf68fb13278dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retriangulate the point from its observations. <br /></td></tr>\n<tr class=\"separator:a2d98614a51faaca6da0cf68fb13278dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f7440330a9c45744b95b85d0a2e52cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f7440330a9c45744b95b85d0a2e52cd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd\">updateHessianGradientUnitPlane</a> (const Eigen::Ref&lt; BearingVector &gt; &amp;f, const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;A, Eigen::Vector3d &amp;b, double &amp;new_chi2)</td></tr>\n<tr class=\"memdesc:a2f7440330a9c45744b95b85d0a2e52cd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">update Hessian and Gradient of point based on one observation, using unit plane. <br /></td></tr>\n<tr class=\"separator:a2f7440330a9c45744b95b85d0a2e52cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08ffcd5b5b7f32e2d29e138568a2329e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a08ffcd5b5b7f32e2d29e138568a2329e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e\">updateHessianGradientUnitSphere</a> (const Eigen::Ref&lt; BearingVector &gt; &amp;f, const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;A, Eigen::Vector3d &amp;b, double &amp;new_chi2)</td></tr>\n<tr class=\"memdesc:a08ffcd5b5b7f32e2d29e138568a2329e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">update Hessian and Gradient of point based on one observation, using unit sphere. <br /></td></tr>\n<tr class=\"separator:a08ffcd5b5b7f32e2d29e138568a2329e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2814f4ff5cfcb9d28bfe492a53d06d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2814f4ff5cfcb9d28bfe492a53d06d7\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7\">optimize</a> (const size_t n_iter, bool using_bearing_vector=false)</td></tr>\n<tr class=\"memdesc:af2814f4ff5cfcb9d28bfe492a53d06d7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Optimize point position through minimizing the reprojection error. <br /></td></tr>\n<tr class=\"separator:af2814f4ff5cfcb9d28bfe492a53d06d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2d358457c3d247884c3f54612c488cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2d358457c3d247884c3f54612c488cc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc\">print</a> (const std::string &amp;s=&quot;Point:&quot;) const</td></tr>\n<tr class=\"memdesc:ae2d358457c3d247884c3f54612c488cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print infos about the point. <br /></td></tr>\n<tr class=\"separator:ae2d358457c3d247884c3f54612c488cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff310168138bfa71fa520726378179f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff310168138bfa71fa520726378179f6\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">id</a> () const</td></tr>\n<tr class=\"memdesc:aff310168138bfa71fa520726378179f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return unique point identifier. <br /></td></tr>\n<tr class=\"separator:aff310168138bfa71fa520726378179f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a6552266bfced00a450c7f4dbc0be25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a6552266bfced00a450c7f4dbc0be25\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a> () const</td></tr>\n<tr class=\"memdesc:a9a6552266bfced00a450c7f4dbc0be25\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D position of point in world frame. <br /></td></tr>\n<tr class=\"separator:a9a6552266bfced00a450c7f4dbc0be25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3a64907785b9e2feb5e838ea5741f5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad3a64907785b9e2feb5e838ea5741f5c\"></a>\nconst PointType &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">type</a> () const</td></tr>\n<tr class=\"memdesc:ad3a64907785b9e2feb5e838ea5741f5c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return type of point. <br /></td></tr>\n<tr class=\"separator:ad3a64907785b9e2feb5e838ea5741f5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a110e395d01722c71aefd894a4ae1d684\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a110e395d01722c71aefd894a4ae1d684\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">jacobian_xyz2uv</a> (const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, svo::Matrix23d &amp;point_jac)</td></tr>\n<tr class=\"memdesc:a110e395d01722c71aefd894a4ae1d684\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of point projection on unit plane (focal length = 1) in frame (f). <br /></td></tr>\n<tr class=\"separator:a110e395d01722c71aefd894a4ae1d684\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14bf6a380b2da4ff24446503dc724b00\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14bf6a380b2da4ff24446503dc724b00\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">jacobian_xyz2f</a> (const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;point_jac)</td></tr>\n<tr class=\"memdesc:a14bf6a380b2da4ff24446503dc724b00\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of point to unit bearing vector. <br /></td></tr>\n<tr class=\"separator:a14bf6a380b2da4ff24446503dc724b00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0a9dde4b92609d30bce879948feafafc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a9dde4b92609d30bce879948feafafc\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::vector&lt; <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>KeypointIdentifierList</b></td></tr>\n<tr class=\"separator:a0a9dde4b92609d30bce879948feafafc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dc25c9a96296984265b1a3a510b8f19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4dc25c9a96296984265b1a3a510b8f19\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">id_</a></td></tr>\n<tr class=\"memdesc:a4dc25c9a96296984265b1a3a510b8f19\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unique ID of the point. <br /></td></tr>\n<tr class=\"separator:a4dc25c9a96296984265b1a3a510b8f19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2ddc680bb87e76fc38db6839f9178b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2ddc680bb87e76fc38db6839f9178b5\"></a>\nPosition&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">pos_</a></td></tr>\n<tr class=\"memdesc:ac2ddc680bb87e76fc38db6839f9178b5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3d pos of the point in the world coordinate frame. <br /></td></tr>\n<tr class=\"separator:ac2ddc680bb87e76fc38db6839f9178b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a468fc89330be6299070f853eecf78cac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a468fc89330be6299070f853eecf78cac\"></a>\nKeypointIdentifierList&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">obs_</a></td></tr>\n<tr class=\"memdesc:a468fc89330be6299070f853eecf78cac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">References to keyframes which observe the point. <br /></td></tr>\n<tr class=\"separator:a468fc89330be6299070f853eecf78cac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed0f446f516bf46e5e17e6ebbec1ab06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed0f446f516bf46e5e17e6ebbec1ab06\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">normal_</a></td></tr>\n<tr class=\"memdesc:aed0f446f516bf46e5e17e6ebbec1ab06\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Surface normal at point. <br /></td></tr>\n<tr class=\"separator:aed0f446f516bf46e5e17e6ebbec1ab06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafc301b3b365b5de22a372eac0cfafd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aafc301b3b365b5de22a372eac0cfafd6\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">normal_information_</a></td></tr>\n<tr class=\"memdesc:aafc301b3b365b5de22a372eac0cfafd6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inverse covariance matrix of normal estimation. <br /></td></tr>\n<tr class=\"separator:aafc301b3b365b5de22a372eac0cfafd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9366dd131e9ec57c744b7f3497451af0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9366dd131e9ec57c744b7f3497451af0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0\">normal_set_</a> = false</td></tr>\n<tr class=\"memdesc:a9366dd131e9ec57c744b7f3497451af0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag whether the surface normal was estimated or not. <br /></td></tr>\n<tr class=\"separator:a9366dd131e9ec57c744b7f3497451af0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a548c8b0f71b6fa3fdbd7a57eec4a2d3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a548c8b0f71b6fa3fdbd7a57eec4a2d3a\"></a>\nuint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a\">last_published_ts_</a> = 0</td></tr>\n<tr class=\"memdesc:a548c8b0f71b6fa3fdbd7a57eec4a2d3a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of last publishing. <br /></td></tr>\n<tr class=\"separator:a548c8b0f71b6fa3fdbd7a57eec4a2d3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32033b60c3cbfa947f315d12ccc8f850\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a32033b60c3cbfa947f315d12ccc8f850\"></a>\nstd::array&lt; int, 8 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">last_projected_kf_id_</a></td></tr>\n<tr class=\"memdesc:a32033b60c3cbfa947f315d12ccc8f850\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flag for the reprojection: don't reproject a pt twice in the same camera. <br /></td></tr>\n<tr class=\"separator:a32033b60c3cbfa947f315d12ccc8f850\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af55a54c3d8d4f47c38b7c58ac8a99e0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af55a54c3d8d4f47c38b7c58ac8a99e0a\"></a>\nPointType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a\">type_</a> = TYPE_CORNER</td></tr>\n<tr class=\"memdesc:af55a54c3d8d4f47c38b7c58ac8a99e0a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Quality of the point. <br /></td></tr>\n<tr class=\"separator:af55a54c3d8d4f47c38b7c58ac8a99e0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22f74f4850050eb4c38f8f3b80c17d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22f74f4850050eb4c38f8f3b80c17d6\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6\">n_failed_reproj_</a> = 0</td></tr>\n<tr class=\"memdesc:aa22f74f4850050eb4c38f8f3b80c17d6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of failed reprojections. Used to assess the quality of the point. <br /></td></tr>\n<tr class=\"separator:aa22f74f4850050eb4c38f8f3b80c17d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ba6315556c70718cf89f6d78553277e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ba6315556c70718cf89f6d78553277e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e\">n_succeeded_reproj_</a> = 0</td></tr>\n<tr class=\"memdesc:a0ba6315556c70718cf89f6d78553277e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of succeeded reprojections. Used to assess the quality of the point. <br /></td></tr>\n<tr class=\"separator:a0ba6315556c70718cf89f6d78553277e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4968925f54f239e75f31ed3818814ccc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4968925f54f239e75f31ed3818814ccc\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc\">last_structure_optim_</a> = 0</td></tr>\n<tr class=\"memdesc:a4968925f54f239e75f31ed3818814ccc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of last point optimization. <br /></td></tr>\n<tr class=\"separator:a4968925f54f239e75f31ed3818814ccc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76c4634d066e5e67d9f3d7b7d411394b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a76c4634d066e5e67d9f3d7b7d411394b\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b\">in_ba_graph_</a> = false</td></tr>\n<tr class=\"memdesc:a76c4634d066e5e67d9f3d7b7d411394b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Was this point already added to the iSAM bundle adjustment graph? <br /></td></tr>\n<tr class=\"separator:a76c4634d066e5e67d9f3d7b7d411394b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe3d75611fb51efc6798492fb46b5ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9fe3d75611fb51efc6798492fb46b5ad\"></a>\nint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad\">last_ba_update_</a> = -1</td></tr>\n<tr class=\"memdesc:a9fe3d75611fb51efc6798492fb46b5ad\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Timestamp of last estimate in bundle adjustment. <br /></td></tr>\n<tr class=\"separator:a9fe3d75611fb51efc6798492fb46b5ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>A 3D point on the surface of the scene. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"point_8h_source.html\">point.h</a></li>\n<li>svo_common/src/point.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PointIdProvider-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PointIdProvider Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getNewPointId</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>last_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PointIdProvider</b>()=delete (defined in <a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PointIdProvider.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::PointIdProvider Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pri-static-attribs\">Static Private Attributes</a> &#124;\n<a href=\"classsvo_1_1PointIdProvider-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PointIdProvider Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Thread-safe point-ID provider.  \n <a href=\"classsvo_1_1PointIdProvider.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"point_8h_source.html\">point.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a0a170359e6a5cd2c3308ad500c8da709\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a170359e6a5cd2c3308ad500c8da709\"></a>\nstatic int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getNewPointId</b> ()</td></tr>\n<tr class=\"separator:a0a170359e6a5cd2c3308ad500c8da709\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-static-attribs\"></a>\nStatic Private Attributes</h2></td></tr>\n<tr class=\"memitem:a6792d387a4343bb37184cee3611546f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6792d387a4343bb37184cee3611546f8\"></a>\nstatic std::atomic&lt; int &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_id_</b> { 0 }</td></tr>\n<tr class=\"separator:a6792d387a4343bb37184cee3611546f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Thread-safe point-ID provider. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"point_8h_source.html\">point.h</a></li>\n<li>svo_common/src/point.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Point__coll__graph.md5",
    "content": "4c4de4a04acbe1d7a1b53bdf234ed4e7"
  },
  {
    "path": "docs/classsvo_1_1PoseOptimizer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PoseOptimizer Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>err_type_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ErrorType</b> enum name (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>evaluateError</b>(const Transformation &amp;T_imu_world, HessianMatrix *H, GradientVector *g) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>evaluateErrorImpl</b>(const Transformation &amp;T_imu_world, HessianMatrix *H, GradientVector *g, std::vector&lt; float &gt; *unwhitened_errors) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>focal_length_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>initTracing</b>(const std::string &amp;trace_dir) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>iterCount</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Matrix16d</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Matrix26d</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Matrix36d</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Matrix6d</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>measurement_sigma_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">ofs_reproj_errors_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PoseOptimizer</b>(SolverOptions solver_options) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>removeOutliers</b>(const double reproj_err_threshold, Frame *frame, std::vector&lt; double &gt; *reproj_errors, size_t *n_deleted_edges, size_t *n_deleted_corners) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>robust_weight_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>RobustWeightFunction</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">run</a>(const FrameBundle::Ptr &amp;frame, double reproj_thresh)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>scale_estimator_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ScaleEstimator</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setErrorType</b>(ErrorType type) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setRotationPrior</b>(const Quaternion &amp;R_frame_world, double lambda) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stats_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update</b>(const State &amp;T_frameold_from_world, const UpdateVector &amp;dx, State &amp;T_framenew_from_world) (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;::update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Vector6d</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~PoseOptimizer</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PoseOptimizer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::PoseOptimizer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1PoseOptimizer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PoseOptimizer Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::PoseOptimizer:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1PoseOptimizer__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1PoseOptimizer_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1PoseOptimizer_inherit__map\" id=\"svo_1_1PoseOptimizer_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 6, Transformation,\\l PoseOptimizer \\&gt;\" alt=\"\" coords=\"5,5,196,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::PoseOptimizer:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1PoseOptimizer__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1PoseOptimizer_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1PoseOptimizer_coll__map\" id=\"svo_1_1PoseOptimizer_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 6, Transformation,\\l PoseOptimizer \\&gt;\" alt=\"\" coords=\"519,129,709,185\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\" title=\"vk::solver::MADScaleEstimator\" alt=\"\" coords=\"511,232,717,259\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"179,255,355,281\"/>\n<area shape=\"rect\" id=\"node9\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\" title=\"svo::PoseOptimizer\\l::Statistics\" alt=\"\" coords=\"545,283,683,325\"/>\n<area shape=\"rect\" id=\"node10\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\" title=\"vk::solver::TukeyWeightFunction\" alt=\"\" coords=\"507,349,721,376\"/>\n<area shape=\"rect\" id=\"node11\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"178,349,357,376\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">Statistics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a29a59c0db6329c498602b91ab6478d67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a29a59c0db6329c498602b91ab6478d67\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ErrorType</b> { <b>kUnitPlane</b>, \n<b>kBearingVectorDiff</b>, \n<b>kImagePlane</b>\n }</td></tr>\n<tr class=\"separator:a29a59c0db6329c498602b91ab6478d67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7f0b29aa301b9a7eae6b034ec4dc85c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae7f0b29aa301b9a7eae6b034ec4dc85c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ScaleEstimator</b> = <a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a></td></tr>\n<tr class=\"separator:ae7f0b29aa301b9a7eae6b034ec4dc85c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0339d8d2fd13575624509d3ed1134524\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0339d8d2fd13575624509d3ed1134524\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RobustWeightFunction</b> = <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></td></tr>\n<tr class=\"separator:a0339d8d2fd13575624509d3ed1134524\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3be660b12861a906b782688f4d004a52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3be660b12861a906b782688f4d004a52\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b> = <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td></tr>\n<tr class=\"separator:a3be660b12861a906b782688f4d004a52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8efdb87214c77280d261c039dfa08667\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8efdb87214c77280d261c039dfa08667\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8efdb87214c77280d261c039dfa08667\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25250df9fb35cd89efb7f4f6b5e1c4d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a25250df9fb35cd89efb7f4f6b5e1c4d0\"></a>\ntypedef Matrix&lt; double, 6, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix6d</b></td></tr>\n<tr class=\"separator:a25250df9fb35cd89efb7f4f6b5e1c4d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a621f6488e07370924e6f5f44f10eb2ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a621f6488e07370924e6f5f44f10eb2ec\"></a>\ntypedef Matrix&lt; double, 2, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix26d</b></td></tr>\n<tr class=\"separator:a621f6488e07370924e6f5f44f10eb2ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a201d35129f7471d33fbbca5f4c83ad64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a201d35129f7471d33fbbca5f4c83ad64\"></a>\ntypedef Matrix&lt; double, 3, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix36d</b></td></tr>\n<tr class=\"separator:a201d35129f7471d33fbbca5f4c83ad64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d14dfcc749b7900b764ea6d598f4cc4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3d14dfcc749b7900b764ea6d598f4cc4\"></a>\ntypedef Matrix&lt; double, 1, 6 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix16d</b></td></tr>\n<tr class=\"separator:a3d14dfcc749b7900b764ea6d598f4cc4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12cd80169cccd835273e91375de98e70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12cd80169cccd835273e91375de98e70\"></a>\ntypedef Matrix&lt; double, 6, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector6d</b></td></tr>\n<tr class=\"separator:a12cd80169cccd835273e91375de98e70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a854ba53d5b2459fea4d231e736d86652\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a854ba53d5b2459fea4d231e736d86652\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PoseOptimizer</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> solver_options)</td></tr>\n<tr class=\"separator:a854ba53d5b2459fea4d231e736d86652\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27fd54b32c2e2793caf4f4ea09032071\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">run</a> (const FrameBundle::Ptr &amp;frame, double reproj_thresh)</td></tr>\n<tr class=\"separator:a27fd54b32c2e2793caf4f4ea09032071\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3541c1f3dffe2e5ff7d308ec8be153c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3541c1f3dffe2e5ff7d308ec8be153c9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setRotationPrior</b> (const Quaternion &amp;R_frame_world, double lambda)</td></tr>\n<tr class=\"separator:a3541c1f3dffe2e5ff7d308ec8be153c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0fd82714b70a894089dd28b50b23e35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0fd82714b70a894089dd28b50b23e35\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>iterCount</b> () const</td></tr>\n<tr class=\"separator:ad0fd82714b70a894089dd28b50b23e35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a146da195c58ff86377e4a5feb77a4afb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a146da195c58ff86377e4a5feb77a4afb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setErrorType</b> (ErrorType type)</td></tr>\n<tr class=\"separator:a146da195c58ff86377e4a5feb77a4afb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9642f6c572eaa00f41e6c1dc6e7db83a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9642f6c572eaa00f41e6c1dc6e7db83a\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initTracing</b> (const std::string &amp;trace_dir)</td></tr>\n<tr class=\"separator:a9642f6c572eaa00f41e6c1dc6e7db83a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f61ef86bc4592ae3ac454e338e88ae4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f61ef86bc4592ae3ac454e338e88ae4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>evaluateError</b> (const Transformation &amp;T_imu_world, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a7f61ef86bc4592ae3ac454e338e88ae4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b9214def98fe51b4a142f4e18e0a65b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b9214def98fe51b4a142f4e18e0a65b\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>evaluateErrorImpl</b> (const Transformation &amp;T_imu_world, HessianMatrix *H, GradientVector *g, std::vector&lt; float &gt; *unwhitened_errors)</td></tr>\n<tr class=\"separator:a3b9214def98fe51b4a142f4e18e0a65b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ca41fc0fc61e9d38a9773966e9e9954\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1ca41fc0fc61e9d38a9773966e9e9954\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>removeOutliers</b> (const double reproj_err_threshold, <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> *frame, std::vector&lt; double &gt; *reproj_errors, size_t *n_deleted_edges, size_t *n_deleted_corners)</td></tr>\n<tr class=\"separator:a1ca41fc0fc61e9d38a9773966e9e9954\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cf1acf9b13b2bd40f1c26e4791151d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7cf1acf9b13b2bd40f1c26e4791151d8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const State &amp;T_frameold_from_world, const UpdateVector &amp;dx, State &amp;T_framenew_from_world)</td></tr>\n<tr class=\"separator:a7cf1acf9b13b2bd40f1c26e4791151d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af498e52096500387411fb18dff11ea97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af498e52096500387411fb18dff11ea97\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:af498e52096500387411fb18dff11ea97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ab9d84d3fac51e0b2b9ec9acd11f243fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9d84d3fac51e0b2b9ec9acd11f243fd\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:ab9d84d3fac51e0b2b9ec9acd11f243fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2e0bb174aa8e814c91b6594420b25e51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e0bb174aa8e814c91b6594420b25e51\"></a>\nstruct <a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stats_</b></td></tr>\n<tr class=\"separator:a2e0bb174aa8e814c91b6594420b25e51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2307c949cb3434638b883979c17ca00a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2307c949cb3434638b883979c17ca00a\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_bundle_</b></td></tr>\n<tr class=\"separator:a2307c949cb3434638b883979c17ca00a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2d5a90c1f1c9d0bd6bcb457f6f919c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2d5a90c1f1c9d0bd6bcb457f6f919c2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_</b></td></tr>\n<tr class=\"separator:ac2d5a90c1f1c9d0bd6bcb457f6f919c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6697e18426cd795b25879a3657766d50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6697e18426cd795b25879a3657766d50\"></a>\n<a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">ScaleEstimator</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>scale_estimator_</b></td></tr>\n<tr class=\"separator:a6697e18426cd795b25879a3657766d50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ff3f031a0cf2caaadb1c91cbb48737a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ff3f031a0cf2caaadb1c91cbb48737a\"></a>\n<a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">RobustWeightFunction</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>robust_weight_</b></td></tr>\n<tr class=\"separator:a9ff3f031a0cf2caaadb1c91cbb48737a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0871f73e9531093cee40a01167f41dae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0871f73e9531093cee40a01167f41dae\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurement_sigma_</b> = 1.0</td></tr>\n<tr class=\"separator:a0871f73e9531093cee40a01167f41dae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6dba37afb74cc75799d66d4c2dd62b4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6dba37afb74cc75799d66d4c2dd62b4f\"></a>\nErrorType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>err_type_</b> = ErrorType::kUnitPlane</td></tr>\n<tr class=\"separator:a6dba37afb74cc75799d66d4c2dd62b4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acdfc7f065b568f91ed5b340d9b818e68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdfc7f065b568f91ed5b340d9b818e68\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>focal_length_</b> = 1.0</td></tr>\n<tr class=\"separator:acdfc7f065b568f91ed5b340d9b818e68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7865b7b2d413fc1ef51f5a517eba4a8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7865b7b2d413fc1ef51f5a517eba4a8b\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">ofs_reproj_errors_</a></td></tr>\n<tr class=\"memdesc:a7865b7b2d413fc1ef51f5a517eba4a8b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">focal length TODO: should be different for every camera <br /></td></tr>\n<tr class=\"separator:a7865b7b2d413fc1ef51f5a517eba4a8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Transformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nPoseOptimizer &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a27fd54b32c2e2793caf4f4ea09032071\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27fd54b32c2e2793caf4f4ea09032071\">&#9670;&nbsp;</a></span>run()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::PoseOptimizer::run </td>\n          <td>(</td>\n          <td class=\"paramtype\">const FrameBundle::Ptr &amp;&#160;</td>\n          <td class=\"paramname\"><em>frame</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>reproj_thresh</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Optimize frame pose (frame-&gt;T_f_w_) by minimizing the reprojection error w.r.t. to its features. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"pose__optimizer_8h_source.html\">pose_optimizer.h</a></li>\n<li>svo/src/pose_optimizer.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PoseOptimizer__coll__graph.md5",
    "content": "0daf6d1fb81caa95baa85f9d83993c18"
  },
  {
    "path": "docs/classsvo_1_1PoseOptimizer__inherit__graph.md5",
    "content": "13cf844fe2fd341952da0851a2f5e9d7"
  },
  {
    "path": "docs/classsvo_1_1PreintegratedImuMeasurement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PreintegratedImuMeasurement Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>acc_bias_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">addMeasurement</a>(const ImuMeasurement &amp;m)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">addMeasurements</a>(const ImuMeasurements &amp;ms)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>delta_R_ij_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>delta_t_ij_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>delta_v_ij_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>dt_sum_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>last_imu_measurement</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>last_imu_measurement_set_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>omega_bias_</b> (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PreintegratedImuMeasurement</b>(const Eigen::Vector3d &amp;omega_bias, const Eigen::Vector3d &amp;acc_bias) (defined in <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PreintegratedImuMeasurement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::PreintegratedImuMeasurement Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1PreintegratedImuMeasurement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PreintegratedImuMeasurement Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::PreintegratedImuMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1PreintegratedImuMeasurement__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1PreintegratedImuMeasurement_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1PreintegratedImuMeasurement_coll__map\" id=\"svo_1_1PreintegratedImuMeasurement_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1ImuMeasurement.html\" title=\"svo::ImuMeasurement\" alt=\"\" coords=\"159,118,311,145\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af79c8915f8ec6b99b43a6a7d8bdbd321\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af79c8915f8ec6b99b43a6a7d8bdbd321\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PreintegratedImuMeasurement</b> (const Eigen::Vector3d &amp;omega_bias, const Eigen::Vector3d &amp;acc_bias)</td></tr>\n<tr class=\"separator:af79c8915f8ec6b99b43a6a7d8bdbd321\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94fea1da507cb1e73bc1d05ba167738e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94fea1da507cb1e73bc1d05ba167738e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">addMeasurement</a> (const <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> &amp;m)</td></tr>\n<tr class=\"memdesc:a94fea1da507cb1e73bc1d05ba167738e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add single measurements to be integrated. <br /></td></tr>\n<tr class=\"separator:a94fea1da507cb1e73bc1d05ba167738e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57f1edd90eb61a5d849c50eedb3ce753\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a57f1edd90eb61a5d849c50eedb3ce753\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">addMeasurements</a> (const ImuMeasurements &amp;ms)</td></tr>\n<tr class=\"memdesc:a57f1edd90eb61a5d849c50eedb3ce753\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add many measurements to be integrated. <br /></td></tr>\n<tr class=\"separator:a57f1edd90eb61a5d849c50eedb3ce753\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a1649577296bf767bdac6b37221b3ca8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1649577296bf767bdac6b37221b3ca8b\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>omega_bias_</b></td></tr>\n<tr class=\"separator:a1649577296bf767bdac6b37221b3ca8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cf4f8e089fb6c12fe74b19c22404051\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7cf4f8e089fb6c12fe74b19c22404051\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>acc_bias_</b></td></tr>\n<tr class=\"separator:a7cf4f8e089fb6c12fe74b19c22404051\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8faa1e5679269c489bc4eb65da430fb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8faa1e5679269c489bc4eb65da430fb3\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>delta_t_ij_</b></td></tr>\n<tr class=\"separator:a8faa1e5679269c489bc4eb65da430fb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adaf9576851e473a807374b31ad6d7a8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adaf9576851e473a807374b31ad6d7a8f\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>delta_v_ij_</b></td></tr>\n<tr class=\"separator:adaf9576851e473a807374b31ad6d7a8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab78bba7c1ae8f6ae3be399cf3a9b9c4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab78bba7c1ae8f6ae3be399cf3a9b9c4e\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>delta_R_ij_</b></td></tr>\n<tr class=\"separator:ab78bba7c1ae8f6ae3be399cf3a9b9c4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8cbe1768bbd634cb9c34e97fd1198d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8cbe1768bbd634cb9c34e97fd1198d8\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>dt_sum_</b></td></tr>\n<tr class=\"separator:ad8cbe1768bbd634cb9c34e97fd1198d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:af09be74130e70cab1756e24aa6735b15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af09be74130e70cab1756e24aa6735b15\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_imu_measurement_set_</b></td></tr>\n<tr class=\"separator:af09be74130e70cab1756e24aa6735b15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a038c5bf8cda562427fc67c1fe84d8e60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a038c5bf8cda562427fc67c1fe84d8e60\"></a>\n<a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>last_imu_measurement</b></td></tr>\n<tr class=\"separator:a038c5bf8cda562427fc67c1fe84d8e60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"imu__handler_8h_source.html\">imu_handler.h</a></li>\n<li>svo/src/imu_handler.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1PreintegratedImuMeasurement__coll__graph.md5",
    "content": "4468920729b1686e548bfff81e10d47a"
  },
  {
    "path": "docs/classsvo_1_1Reprojector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>camera_index_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Candidates</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>candidates_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66\">reprojectFrames</a>(const FramePtr &amp;frame, const std::vector&lt; FramePtr &gt; &amp;close_kfs, std::vector&lt; PointPtr &gt; &amp;trash_points)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Reprojector</b>(const ReprojectorOptions &amp;options, size_t camera_index) (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>stats_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Reprojector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Reprojector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Reprojector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1Reprojector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Reprojector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Reprojector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Reprojector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1Reprojector_coll__map\" id=\"svo_1_1Reprojector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\" title=\"svo::Reprojector::Statistics\" alt=\"\" coords=\"121,139,302,165\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structsvo_1_1ReprojectorOptions.html\" title=\"svo::ReprojectorOptions\" alt=\"\" coords=\"326,139,489,165\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Statistics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a6d303d6488a6b0121340b0a7f83465cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6d303d6488a6b0121340b0a7f83465cd\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Candidates</b> = std::vector&lt; <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a> &gt;</td></tr>\n<tr class=\"separator:a6d303d6488a6b0121340b0a7f83465cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:acd2dc330daae848008ba36077bb5f65d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acd2dc330daae848008ba36077bb5f65d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Reprojector</b> (const <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> &amp;options, size_t camera_index)</td></tr>\n<tr class=\"separator:acd2dc330daae848008ba36077bb5f65d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6b022df5f1d9318e28e43ce19160c66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa6b022df5f1d9318e28e43ce19160c66\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66\">reprojectFrames</a> (const FramePtr &amp;frame, const std::vector&lt; FramePtr &gt; &amp;close_kfs, std::vector&lt; PointPtr &gt; &amp;trash_points)</td></tr>\n<tr class=\"memdesc:aa6b022df5f1d9318e28e43ce19160c66\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Project points seed in close_kfs into frame. <br /></td></tr>\n<tr class=\"separator:aa6b022df5f1d9318e28e43ce19160c66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a54c268bfa8a3c93d314d3a25d187bd2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54c268bfa8a3c93d314d3a25d187bd2b\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a54c268bfa8a3c93d314d3a25d187bd2b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a963d85c2f6bb365d5a839aff30ecc4dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a963d85c2f6bb365d5a839aff30ecc4dc\"></a>\n<a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a963d85c2f6bb365d5a839aff30ecc4dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a568980f99b5f23422955ec16e54403c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a568980f99b5f23422955ec16e54403c9\"></a>\nstruct <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stats_</b></td></tr>\n<tr class=\"separator:a568980f99b5f23422955ec16e54403c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8612d748ed08a9740283080b1facb7a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8612d748ed08a9740283080b1facb7a8\"></a>\nstd::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a8612d748ed08a9740283080b1facb7a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ec85c1968d1168709577653534eb2b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3ec85c1968d1168709577653534eb2b8\"></a>\nCandidates&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>candidates_</b></td></tr>\n<tr class=\"separator:a3ec85c1968d1168709577653534eb2b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35af72d56bea92382b7b9b1249ced687\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a35af72d56bea92382b7b9b1249ced687\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_index_</b></td></tr>\n<tr class=\"separator:a35af72d56bea92382b7b9b1249ced687\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Project points from the map into the image and find the corresponding feature (corner). We don't search a match for every point but only for one point per cell. Thereby, we achieve a homogeneously distributed set of matched features and at the same time we can save processing time by not projecting all points. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a></li>\n<li>svo/src/reprojector.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Reprojector__coll__graph.md5",
    "content": "6f965c4e8eddb5944efebea8e7f9c1b9"
  },
  {
    "path": "docs/classsvo_1_1SobelDetector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SobelDetector Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AbstractDetector</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detect</b>(const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override (defined in <a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>detect</b>(const FramePtr &amp;frame) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>grid_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const AbstractDetector &amp;)=delete (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>resetGrid</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~SobelDetector</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SobelDetector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SobelDetector Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1SobelDetector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SobelDetector Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::SobelDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SobelDetector__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SobelDetector_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1SobelDetector_inherit__map\" id=\"svo_1_1SobelDetector_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"5,5,156,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::SobelDetector:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SobelDetector__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1SobelDetector_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1SobelDetector_coll__map\" id=\"svo_1_1SobelDetector_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"91,184,242,211\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,95,152,121\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"177,95,335,121\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae379650ad315274dc7b20bf91134295c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae379650ad315274dc7b20bf91134295c\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</td></tr>\n<tr class=\"separator:ae379650ad315274dc7b20bf91134295c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3386ff1b9ad698da5674b7bf91ad7bbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a> (const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;options, const CameraPtr &amp;cam)</td></tr>\n<tr class=\"memdesc:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a3386ff1b9ad698da5674b7bf91ad7bbd inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64abe74269efc7ba9e848fc634f46225\"></a>\nvirtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a> ()=default</td></tr>\n<tr class=\"memdesc:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default destructor. <br /></td></tr>\n<tr class=\"separator:a64abe74269efc7ba9e848fc634f46225 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2c7ad486f2dda82f42ac36d0b1acd99\"></a>\n<a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:af2c7ad486f2dda82f42ac36d0b1acd99 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adf566b7ce47717eb1fd6adab64001f4b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetector</b> (const <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &amp;)=delete</td></tr>\n<tr class=\"separator:adf566b7ce47717eb1fd6adab64001f4b inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa43b692c0080f71a85ed00d9d9d77fc1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detect</b> (const FramePtr &amp;frame)</td></tr>\n<tr class=\"separator:aa43b692c0080f71a85ed00d9d9d77fc1 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ed9edf257eca2a3915cf3753ea0a881\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>resetGrid</b> ()</td></tr>\n<tr class=\"separator:a9ed9edf257eca2a3915cf3753ea0a881 inherit pub_methods_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa794c91351834dab6d4046ffb82f8edf\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:aa794c91351834dab6d4046ffb82f8edf inherit pub_types_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractDetector\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractDetector')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></td></tr>\n<tr class=\"memitem:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75a81063ed9aa3e1c5d3fc75b4390794\"></a>\n<a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a75a81063ed9aa3e1c5d3fc75b4390794 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01d1e2bc3890ccc966a5fec831885da4\"></a>\n<a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>grid_</b></td></tr>\n<tr class=\"separator:a01d1e2bc3890ccc966a5fec831885da4 inherit pub_attribs_classsvo_1_1AbstractDetector\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection_8h_source.html\">feature_detection.h</a></li>\n<li>svo_direct/src/feature_detection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SobelDetector__coll__graph.md5",
    "content": "b8ae10ad1f988135f12e4169aae64462"
  },
  {
    "path": "docs/classsvo_1_1SobelDetector__inherit__graph.md5",
    "content": "9eebcc76018a5c45d42dce6a79117749"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlign-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlign Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>alpha_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>applyPrior</b>(const SparseImgAlignState &amp;current_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>beta_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>border_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">evaluateError</a>(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">svo::SparseImgAlignBase::evaluateError</a>(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>fts_vec_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>jacobian_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">jacobian_proj_cache_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kHessianTriagN</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kJacobianSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_area_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_size_with_border_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_alpha_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_beta_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_rot_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_trans_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ref_patch_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>residual_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>run</b>(const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a>(double alpha_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a>(double beta_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a>(int num)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setPatchSize</b>(size_t patch_size) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">setPatchSizeSideEffects</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setWeightedPrior</b>(const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SparseImgAlign</b>(SolverOptions optimization_options, SparseImgAlignOptions options) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SparseImgAlignBase</b>(SolverOptions optimization_options, SparseImgAlignOptions options) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update</b>(const SparseImgAlignState &amp;old_model, const UpdateVector &amp;dx, SparseImgAlignState &amp;new_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>update</b>(const SparseImgAlignState &amp;old_model, const UpdateVector &amp;dx, SparseImgAlignState &amp;new_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>uv_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visibility_mask_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight_function_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>weight_scale_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">xyz_ref_cache_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlign.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SparseImgAlign Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1SparseImgAlign-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlign Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Optimize the pose of the frame by minimizing the photometric error of feature patches.  \n <a href=\"classsvo_1_1SparseImgAlign.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"sparse__img__align_8h_source.html\">sparse_img_align.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::SparseImgAlign:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlign__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlign_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1SparseImgAlign_inherit__map\" id=\"svo_1_1SparseImgAlign_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SparseImgAlignBase.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"25,109,199,136\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"5,5,219,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::SparseImgAlign:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlign__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlign_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1SparseImgAlign_coll__map\" id=\"svo_1_1SparseImgAlign_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SparseImgAlignBase.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"821,192,995,219\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"507,129,720,185\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n<area shape=\"rect\" id=\"node8\" href=\"structsvo_1_1SparseImgAlignState.html\" title=\"State to be estimated. \" alt=\"\" coords=\"180,255,355,281\"/>\n<area shape=\"rect\" id=\"node9\" href=\"structsvo_1_1SparseImgAlignOptions.html\" title=\"Sparse Image Alignment Options. \" alt=\"\" coords=\"519,209,707,236\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aec7af127b853b08c9636297ee1cbc523\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aec7af127b853b08c9636297ee1cbc523\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlign</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options)</td></tr>\n<tr class=\"separator:aec7af127b853b08c9636297ee1cbc523\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a082c892a9383b6f771ffcbe87bc048ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">setPatchSizeSideEffects</a> ()</td></tr>\n<tr class=\"separator:a082c892a9383b6f771ffcbe87bc048ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3970fab0474f532d2bb8e33e5fe5666d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3970fab0474f532d2bb8e33e5fe5666d\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> (const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames)</td></tr>\n<tr class=\"separator:a3970fab0474f532d2bb8e33e5fe5666d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a2d94926d421bf224e8e3c535d5214bcc inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d94926d421bf224e8e3c535d5214bcc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignBase</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options)</td></tr>\n<tr class=\"separator:a2d94926d421bf224e8e3c535d5214bcc inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac99b568f8257028f10a9c4b5360967ac inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac99b568f8257028f10a9c4b5360967ac\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setWeightedPrior</b> (const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta)</td></tr>\n<tr class=\"separator:ac99b568f8257028f10a9c4b5360967ac inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"af714e9f8d09a6d582903463b1052242c\"></a>\ntemplate&lt;class derived &gt; </td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>setPatchSize</b> (size_t patch_size)</td></tr>\n<tr class=\"separator:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5714f0be918499ce3c4506fac5093cb9 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a> (int num)</td></tr>\n<tr class=\"separator:a5714f0be918499ce3c4506fac5093cb9 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10fba90982b01781c771d190ab6c9cf8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a> (double alpha_init)</td></tr>\n<tr class=\"memdesc:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation multiplicative parameter. <br /></td></tr>\n<tr class=\"separator:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f4c32db9799835eb96edd923eb91afe\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a> (double beta_init)</td></tr>\n<tr class=\"memdesc:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation additive parameter. <br /></td></tr>\n<tr class=\"separator:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a969ecfed6d72c366e715abb84303b267\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation. <br /></td></tr>\n<tr class=\"separator:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94b3c43120316c4a9a363a74d889f6ef\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">evaluateError</a> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state, HessianMatrix *H, GradientVector *g)=0</td></tr>\n<tr class=\"memdesc:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp the (cur)rent image such that it aligns with the (ref)erence image. <br /></td></tr>\n<tr class=\"separator:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbbb721409609ac3b186c37ceae940fd inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adbbb721409609ac3b186c37ceae940fd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;old_model, const UpdateVector &amp;dx, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;new_model)</td></tr>\n<tr class=\"separator:adbbb721409609ac3b186c37ceae940fd inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b3fcafa47674e33729c5084c0cddc06 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b3fcafa47674e33729c5084c0cddc06\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;current_model)</td></tr>\n<tr class=\"separator:a6b3fcafa47674e33729c5084c0cddc06 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af29ac6b86e9e1995cd1fb69cd5f47e7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af29ac6b86e9e1995cd1fb69cd5f47e7b\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:af29ac6b86e9e1995cd1fb69cd5f47e7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a8efb75b6b1a01712eab1b35dfa737b3a inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8efb75b6b1a01712eab1b35dfa737b3a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8efb75b6b1a01712eab1b35dfa737b3a inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bc1e5452c08987e375123c3f70ef509 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8bc1e5452c08987e375123c3f70ef509\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_</b></td></tr>\n<tr class=\"separator:a8bc1e5452c08987e375123c3f70ef509 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba2bd5db5c5a998e8cfe1e7c1cfd94ca inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba2bd5db5c5a998e8cfe1e7c1cfd94ca\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>border_size_</b></td></tr>\n<tr class=\"separator:aba2bd5db5c5a998e8cfe1e7c1cfd94ca inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46c042975c5ab36f975ac2dfe85ac759 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46c042975c5ab36f975ac2dfe85ac759\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_with_border_</b></td></tr>\n<tr class=\"separator:a46c042975c5ab36f975ac2dfe85ac759 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a7a67cd8c2e4a59fae1e1f842802151 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a7a67cd8c2e4a59fae1e1f842802151\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_area_</b></td></tr>\n<tr class=\"separator:a0a7a67cd8c2e4a59fae1e1f842802151 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef SparseImgAlignState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:af3bb4b8fdf4fc4f64047e29c2030888d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3bb4b8fdf4fc4f64047e29c2030888d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">evaluateError</a> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"memdesc:af3bb4b8fdf4fc4f64047e29c2030888d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp the (cur)rent image such that it aligns with the (ref)erence image. <br /></td></tr>\n<tr class=\"separator:af3bb4b8fdf4fc4f64047e29c2030888d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74f350abd8ee07e6e3f78c4edff8369d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a74f350abd8ee07e6e3f78c4edff8369d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;old_model, const UpdateVector &amp;dx, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;new_model)</td></tr>\n<tr class=\"separator:a74f350abd8ee07e6e3f78c4edff8369d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae475cce152f23f4050cd7f525f895795\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae475cce152f23f4050cd7f525f895795\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;current_model)</td></tr>\n<tr class=\"separator:ae475cce152f23f4050cd7f525f895795\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa94b7ed39b7c6560c5fe9c00cc92f48e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa94b7ed39b7c6560c5fe9c00cc92f48e\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:aa94b7ed39b7c6560c5fe9c00cc92f48e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nSparseImgAlignBase &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a674c36f761eeb5bbe91303dfaaebe4bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a674c36f761eeb5bbe91303dfaaebe4bc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_cache_</b> = false</td></tr>\n<tr class=\"separator:a674c36f761eeb5bbe91303dfaaebe4bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca615a4d07d6dbe8925013dad89ce68c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aca615a4d07d6dbe8925013dad89ce68c\"></a>\nstd::vector&lt; std::vector&lt; size_t &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fts_vec_</b></td></tr>\n<tr class=\"separator:aca615a4d07d6dbe8925013dad89ce68c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0cc0ac5b54f8ce9934255010f032a033\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0cc0ac5b54f8ce9934255010f032a033\"></a>\nUvCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uv_cache_</b></td></tr>\n<tr class=\"separator:a0cc0ac5b54f8ce9934255010f032a033\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade9b9eb3d67c8e8ef7aea115c0d13c6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade9b9eb3d67c8e8ef7aea115c0d13c6f\"></a>\nXyzRefCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">xyz_ref_cache_</a></td></tr>\n<tr class=\"memdesc:ade9b9eb3d67c8e8ef7aea115c0d13c6f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">contains 3d feature location in IMU frame (size 3 x #Patches) <br /></td></tr>\n<tr class=\"separator:ade9b9eb3d67c8e8ef7aea115c0d13c6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d37c813de81016eaeaf11bb96be2a09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d37c813de81016eaeaf11bb96be2a09\"></a>\nJacobianProjCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">jacobian_proj_cache_</a></td></tr>\n<tr class=\"memdesc:a8d37c813de81016eaeaf11bb96be2a09\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">containts 2x6 Jacobians (d proj(X))/(d xi) (size 2 x 6 x #Patches) <br /></td></tr>\n<tr class=\"separator:a8d37c813de81016eaeaf11bb96be2a09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62a30160efae2b0aa93ec08cea3984e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62a30160efae2b0aa93ec08cea3984e6\"></a>\nJacobianCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jacobian_cache_</b></td></tr>\n<tr class=\"separator:a62a30160efae2b0aa93ec08cea3984e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7925c6e55afa36ce8295b960659ac54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7925c6e55afa36ce8295b960659ac54\"></a>\nResidualCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>residual_cache_</b></td></tr>\n<tr class=\"separator:af7925c6e55afa36ce8295b960659ac54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95544c10dbab5589c6d8cef478e0baeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95544c10dbab5589c6d8cef478e0baeb\"></a>\nVisibilityMask&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visibility_mask_</b></td></tr>\n<tr class=\"separator:a95544c10dbab5589c6d8cef478e0baeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b3045c1e6485613d5d0aab5b6f19442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5b3045c1e6485613d5d0aab5b6f19442\"></a>\nRefPatchCache&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ref_patch_cache_</b></td></tr>\n<tr class=\"separator:a5b3045c1e6485613d5d0aab5b6f19442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:aa5e388ec993b3730fc2ce78a9a53b37b inherit pub_types_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa5e388ec993b3730fc2ce78a9a53b37b\"></a>\ntypedef <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b></td></tr>\n<tr class=\"separator:aa5e388ec993b3730fc2ce78a9a53b37b inherit pub_types_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a2d970f586348b65a3969000349fd04eb inherit pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d970f586348b65a3969000349fd04eb\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:a2d970f586348b65a3969000349fd04eb inherit pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a860e21ad9b8d513e71fea093ec166935 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a860e21ad9b8d513e71fea093ec166935\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kJacobianSize</b> = 8</td></tr>\n<tr class=\"separator:a860e21ad9b8d513e71fea093ec166935 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfdf6d2a1518cc664cadf99b428bb7b4 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acfdf6d2a1518cc664cadf99b428bb7b4\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kHessianTriagN</b> = 36</td></tr>\n<tr class=\"separator:acfdf6d2a1518cc664cadf99b428bb7b4 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a10ec80fd2989fbdfdc423965880999dc inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10ec80fd2989fbdfdc423965880999dc\"></a>\n<a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a10ec80fd2989fbdfdc423965880999dc inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3709befd619eded103d3f2f890735a8\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td></tr>\n<tr class=\"memdesc:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frame, has depth for gradient pixels. <br /></td></tr>\n<tr class=\"separator:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a063cf65662c5ccd0704ff76e71dd2c27\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td></tr>\n<tr class=\"memdesc:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">only the image is known! <br /></td></tr>\n<tr class=\"separator:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f3482ed793303a2dbdb03504c84bdf5\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td></tr>\n<tr class=\"memdesc:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pose of reference frame's IMU in world coordinates. <br /></td></tr>\n<tr class=\"separator:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab76abe2df1f3158db10036766b3a0e3b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td></tr>\n<tr class=\"memdesc:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">current pyramid level on which the optimization runs. <br /></td></tr>\n<tr class=\"separator:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93bb8bea82016e49242f4bc481a50e3e inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93bb8bea82016e49242f4bc481a50e3e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_rot_</b></td></tr>\n<tr class=\"separator:a93bb8bea82016e49242f4bc481a50e3e inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53564c06f84a3de49e990b5afb3295bf inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a53564c06f84a3de49e990b5afb3295bf\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_trans_</b></td></tr>\n<tr class=\"separator:a53564c06f84a3de49e990b5afb3295bf inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88b46e6059a54d8ff3e1316cdbe2d7f3 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88b46e6059a54d8ff3e1316cdbe2d7f3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_alpha_</b></td></tr>\n<tr class=\"separator:a88b46e6059a54d8ff3e1316cdbe2d7f3 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2876dba734206359a3c38c6f528a426 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2876dba734206359a3c38c6f528a426\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_beta_</b></td></tr>\n<tr class=\"separator:af2876dba734206359a3c38c6f528a426 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a52b5536d15bb5f7e71b166c235ecb660\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a> = -1</td></tr>\n<tr class=\"memdesc:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of features used for alignment (if -1, all are used) <br /></td></tr>\n<tr class=\"separator:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa68edbea9f6d1bc0e1f46790e6f65dca inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa68edbea9f6d1bc0e1f46790e6f65dca\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>alpha_init_</b> = 0.0</td></tr>\n<tr class=\"separator:aa68edbea9f6d1bc0e1f46790e6f65dca inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade11ace74f886e261e5713fbb5ddbd2a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade11ace74f886e261e5713fbb5ddbd2a\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>beta_init_</b> = 0.0</td></tr>\n<tr class=\"separator:ade11ace74f886e261e5713fbb5ddbd2a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d93f9939fcd71e8172d24c0bb8dee3a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d93f9939fcd71e8172d24c0bb8dee3a\"></a>\nvk::solver::WeightFunctionPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_function_</b></td></tr>\n<tr class=\"separator:a8d93f9939fcd71e8172d24c0bb8dee3a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19fa3163a7c8c9f0df12a331ebe37409 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a19fa3163a7c8c9f0df12a331ebe37409\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_scale_</b></td></tr>\n<tr class=\"separator:a19fa3163a7c8c9f0df12a331ebe37409 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Optimize the pose of the frame by minimizing the photometric error of feature patches. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a082c892a9383b6f771ffcbe87bc048ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a082c892a9383b6f771ffcbe87bc048ab\">&#9670;&nbsp;</a></span>setPatchSizeSideEffects()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::SparseImgAlign::setPatchSizeSideEffects </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>The derived class has to specify the necessary modifications (e.g. memory allocation) in case the patchsize is changed. </p>\n\n<p>Implements <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">svo::SparseImgAlignBase</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align_8h_source.html\">sparse_img_align.h</a></li>\n<li>svo_img_align/src/sparse_img_align.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>alpha_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>applyPrior</b>(const SparseImgAlignState &amp;current_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>beta_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>border_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">evaluateError</a>(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kHessianTriagN</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kJacobianSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_area_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_size_with_border_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_alpha_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_beta_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_rot_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_trans_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>run</b>(const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames)=0 (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a>(double alpha_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a>(double beta_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a>(int num)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setPatchSize</b>(size_t patch_size) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">setPatchSizeSideEffects</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setWeightedPrior</b>(const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SparseImgAlignBase</b>(SolverOptions optimization_options, SparseImgAlignOptions options) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update</b>(const SparseImgAlignState &amp;old_model, const UpdateVector &amp;dx, SparseImgAlignState &amp;new_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>weight_function_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight_scale_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SparseImgAlignBase Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classsvo_1_1SparseImgAlignBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignBase Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Optimize the pose of the frame by minimizing the photometric error of feature patches.  \n <a href=\"classsvo_1_1SparseImgAlignBase.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::SparseImgAlignBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlignBase__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlignBase_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1SparseImgAlignBase_inherit__map\" id=\"svo_1_1SparseImgAlignBase_inherit__map\">\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1SparseImgAlign.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"5,184,148,211\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1SparseImgAlignGpu.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"172,184,339,211\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"59,5,273,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::SparseImgAlignBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlignBase__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlignBase_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1SparseImgAlignBase_coll__map\" id=\"svo_1_1SparseImgAlignBase_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"507,129,720,185\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n<area shape=\"rect\" id=\"node7\" href=\"structsvo_1_1SparseImgAlignState.html\" title=\"State to be estimated. \" alt=\"\" coords=\"180,255,355,281\"/>\n<area shape=\"rect\" id=\"node8\" href=\"structsvo_1_1SparseImgAlignOptions.html\" title=\"Sparse Image Alignment Options. \" alt=\"\" coords=\"519,209,707,236\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aa5e388ec993b3730fc2ce78a9a53b37b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa5e388ec993b3730fc2ce78a9a53b37b\"></a>\ntypedef <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b></td></tr>\n<tr class=\"separator:aa5e388ec993b3730fc2ce78a9a53b37b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2d94926d421bf224e8e3c535d5214bcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d94926d421bf224e8e3c535d5214bcc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignBase</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options)</td></tr>\n<tr class=\"separator:a2d94926d421bf224e8e3c535d5214bcc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78c7f2d58b4fdcb19dc5a90712411e14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a78c7f2d58b4fdcb19dc5a90712411e14\"></a>\nvirtual size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> (const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames)=0</td></tr>\n<tr class=\"separator:a78c7f2d58b4fdcb19dc5a90712411e14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac99b568f8257028f10a9c4b5360967ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac99b568f8257028f10a9c4b5360967ac\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setWeightedPrior</b> (const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta)</td></tr>\n<tr class=\"separator:ac99b568f8257028f10a9c4b5360967ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"af714e9f8d09a6d582903463b1052242c\"></a>\ntemplate&lt;class derived &gt; </td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>setPatchSize</b> (size_t patch_size)</td></tr>\n<tr class=\"separator:af714e9f8d09a6d582903463b1052242c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b1b9ae0323d5a8c0d2848135195067d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">setPatchSizeSideEffects</a> ()=0</td></tr>\n<tr class=\"separator:a0b1b9ae0323d5a8c0d2848135195067d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5714f0be918499ce3c4506fac5093cb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a> (int num)</td></tr>\n<tr class=\"separator:a5714f0be918499ce3c4506fac5093cb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10fba90982b01781c771d190ab6c9cf8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10fba90982b01781c771d190ab6c9cf8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a> (double alpha_init)</td></tr>\n<tr class=\"memdesc:a10fba90982b01781c771d190ab6c9cf8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation multiplicative parameter. <br /></td></tr>\n<tr class=\"separator:a10fba90982b01781c771d190ab6c9cf8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f4c32db9799835eb96edd923eb91afe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f4c32db9799835eb96edd923eb91afe\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a> (double beta_init)</td></tr>\n<tr class=\"memdesc:a9f4c32db9799835eb96edd923eb91afe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation additive parameter. <br /></td></tr>\n<tr class=\"separator:a9f4c32db9799835eb96edd923eb91afe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a969ecfed6d72c366e715abb84303b267\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a969ecfed6d72c366e715abb84303b267\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:a969ecfed6d72c366e715abb84303b267\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation. <br /></td></tr>\n<tr class=\"separator:a969ecfed6d72c366e715abb84303b267\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94b3c43120316c4a9a363a74d889f6ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94b3c43120316c4a9a363a74d889f6ef\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">evaluateError</a> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state, HessianMatrix *H, GradientVector *g)=0</td></tr>\n<tr class=\"memdesc:a94b3c43120316c4a9a363a74d889f6ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp the (cur)rent image such that it aligns with the (ref)erence image. <br /></td></tr>\n<tr class=\"separator:a94b3c43120316c4a9a363a74d889f6ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbbb721409609ac3b186c37ceae940fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adbbb721409609ac3b186c37ceae940fd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;old_model, const UpdateVector &amp;dx, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;new_model)</td></tr>\n<tr class=\"separator:adbbb721409609ac3b186c37ceae940fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b3fcafa47674e33729c5084c0cddc06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b3fcafa47674e33729c5084c0cddc06\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;current_model)</td></tr>\n<tr class=\"separator:a6b3fcafa47674e33729c5084c0cddc06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ca2c25563a70509ffc8a4d19505a509\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6ca2c25563a70509ffc8a4d19505a509\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a6ca2c25563a70509ffc8a4d19505a509\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a2d970f586348b65a3969000349fd04eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d970f586348b65a3969000349fd04eb\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:a2d970f586348b65a3969000349fd04eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8efb75b6b1a01712eab1b35dfa737b3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8efb75b6b1a01712eab1b35dfa737b3a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8efb75b6b1a01712eab1b35dfa737b3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bc1e5452c08987e375123c3f70ef509\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8bc1e5452c08987e375123c3f70ef509\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_</b></td></tr>\n<tr class=\"separator:a8bc1e5452c08987e375123c3f70ef509\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba2bd5db5c5a998e8cfe1e7c1cfd94ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba2bd5db5c5a998e8cfe1e7c1cfd94ca\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>border_size_</b></td></tr>\n<tr class=\"separator:aba2bd5db5c5a998e8cfe1e7c1cfd94ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46c042975c5ab36f975ac2dfe85ac759\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46c042975c5ab36f975ac2dfe85ac759\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_with_border_</b></td></tr>\n<tr class=\"separator:a46c042975c5ab36f975ac2dfe85ac759\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a7a67cd8c2e4a59fae1e1f842802151\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a7a67cd8c2e4a59fae1e1f842802151\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_area_</b></td></tr>\n<tr class=\"separator:a0a7a67cd8c2e4a59fae1e1f842802151\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef SparseImgAlignState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a860e21ad9b8d513e71fea093ec166935\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a860e21ad9b8d513e71fea093ec166935\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kJacobianSize</b> = 8</td></tr>\n<tr class=\"separator:a860e21ad9b8d513e71fea093ec166935\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfdf6d2a1518cc664cadf99b428bb7b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acfdf6d2a1518cc664cadf99b428bb7b4\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kHessianTriagN</b> = 36</td></tr>\n<tr class=\"separator:acfdf6d2a1518cc664cadf99b428bb7b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a10ec80fd2989fbdfdc423965880999dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10ec80fd2989fbdfdc423965880999dc\"></a>\n<a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a10ec80fd2989fbdfdc423965880999dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3709befd619eded103d3f2f890735a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3709befd619eded103d3f2f890735a8\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td></tr>\n<tr class=\"memdesc:af3709befd619eded103d3f2f890735a8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frame, has depth for gradient pixels. <br /></td></tr>\n<tr class=\"separator:af3709befd619eded103d3f2f890735a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a063cf65662c5ccd0704ff76e71dd2c27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a063cf65662c5ccd0704ff76e71dd2c27\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td></tr>\n<tr class=\"memdesc:a063cf65662c5ccd0704ff76e71dd2c27\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">only the image is known! <br /></td></tr>\n<tr class=\"separator:a063cf65662c5ccd0704ff76e71dd2c27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f3482ed793303a2dbdb03504c84bdf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f3482ed793303a2dbdb03504c84bdf5\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td></tr>\n<tr class=\"memdesc:a5f3482ed793303a2dbdb03504c84bdf5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pose of reference frame's IMU in world coordinates. <br /></td></tr>\n<tr class=\"separator:a5f3482ed793303a2dbdb03504c84bdf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab76abe2df1f3158db10036766b3a0e3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab76abe2df1f3158db10036766b3a0e3b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td></tr>\n<tr class=\"memdesc:ab76abe2df1f3158db10036766b3a0e3b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">current pyramid level on which the optimization runs. <br /></td></tr>\n<tr class=\"separator:ab76abe2df1f3158db10036766b3a0e3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93bb8bea82016e49242f4bc481a50e3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93bb8bea82016e49242f4bc481a50e3e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_rot_</b></td></tr>\n<tr class=\"separator:a93bb8bea82016e49242f4bc481a50e3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53564c06f84a3de49e990b5afb3295bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a53564c06f84a3de49e990b5afb3295bf\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_trans_</b></td></tr>\n<tr class=\"separator:a53564c06f84a3de49e990b5afb3295bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88b46e6059a54d8ff3e1316cdbe2d7f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88b46e6059a54d8ff3e1316cdbe2d7f3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_alpha_</b></td></tr>\n<tr class=\"separator:a88b46e6059a54d8ff3e1316cdbe2d7f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2876dba734206359a3c38c6f528a426\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2876dba734206359a3c38c6f528a426\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_beta_</b></td></tr>\n<tr class=\"separator:af2876dba734206359a3c38c6f528a426\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52b5536d15bb5f7e71b166c235ecb660\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a52b5536d15bb5f7e71b166c235ecb660\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a> = -1</td></tr>\n<tr class=\"memdesc:a52b5536d15bb5f7e71b166c235ecb660\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of features used for alignment (if -1, all are used) <br /></td></tr>\n<tr class=\"separator:a52b5536d15bb5f7e71b166c235ecb660\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa68edbea9f6d1bc0e1f46790e6f65dca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa68edbea9f6d1bc0e1f46790e6f65dca\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>alpha_init_</b> = 0.0</td></tr>\n<tr class=\"separator:aa68edbea9f6d1bc0e1f46790e6f65dca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade11ace74f886e261e5713fbb5ddbd2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade11ace74f886e261e5713fbb5ddbd2a\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>beta_init_</b> = 0.0</td></tr>\n<tr class=\"separator:ade11ace74f886e261e5713fbb5ddbd2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d93f9939fcd71e8172d24c0bb8dee3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d93f9939fcd71e8172d24c0bb8dee3a\"></a>\nvk::solver::WeightFunctionPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_function_</b></td></tr>\n<tr class=\"separator:a8d93f9939fcd71e8172d24c0bb8dee3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19fa3163a7c8c9f0df12a331ebe37409\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a19fa3163a7c8c9f0df12a331ebe37409\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_scale_</b></td></tr>\n<tr class=\"separator:a19fa3163a7c8c9f0df12a331ebe37409\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nSparseImgAlignBase &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Optimize the pose of the frame by minimizing the photometric error of feature patches. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5714f0be918499ce3c4506fac5093cb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5714f0be918499ce3c4506fac5093cb9\">&#9670;&nbsp;</a></span>setMaxNumFeaturesToAlign()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::SparseImgAlignBase::setMaxNumFeaturesToAlign </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>num</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Set number of features used for the alignment. If a number is &lt;= 0 all features are used Specifying a number gives you the control about the performance of the alignment. Having an alignment running over 600 or 100 features doesn't make that much a difference </p>\n\n</div>\n</div>\n<a id=\"a0b1b9ae0323d5a8c0d2848135195067d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b1b9ae0323d5a8c0d2848135195067d\">&#9670;&nbsp;</a></span>setPatchSizeSideEffects()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void svo::SparseImgAlignBase::setPatchSizeSideEffects </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>The derived class has to specify the necessary modifications (e.g. memory allocation) in case the patchsize is changed. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">svo::SparseImgAlignGpu</a>, and <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">svo::SparseImgAlign</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a></li>\n<li>svo_img_align/src/sparse_img_align_base.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignBase__coll__graph.md5",
    "content": "d70325a9781b5aedcded10165e8d52eb"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignBase__inherit__graph.md5",
    "content": "8d4a1e7431617843b5bf10fc045e8b27"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignGpu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignGpu Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>alpha_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>applyPrior</b>(const SparseImgAlignState &amp;current_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>beta_init_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>border_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cu_camera_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cu_cur_imgs_pyramid_copy_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cu_ref_imgs_pyramid_copy_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cu_T_cam_imu_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cu_T_cur_ref_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cu_T_imu_cam_bundle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6\">evaluateError</a>(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">svo::SparseImgAlignBase::evaluateError</a>(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)=0</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDefaultSolverOptions</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">getMedianDisparity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>gpu_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>gpu_props_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>have_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>host_cache_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kHessianTriagN</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kJacobianSize</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>median_disparity_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>num_blocks_reduce_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>num_threads_reduce_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_area_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_size_with_border_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_alpha_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_beta_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>prior_lambda_rot_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_lambda_trans_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b\">run</a>(const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a>(double alpha_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a>(double beta_init)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a>(const bool do_compensation)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a>(int num)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setPatchSize</b>(size_t patch_size) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">setPatchSizeSideEffects</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setWeightedPrior</b>(const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SolverOptions</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SparseImgAlignBase</b>(SolverOptions optimization_options, SparseImgAlignOptions options) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SparseImgAlignGpu</b>(SolverOptions optimization_options, SparseImgAlignOptions options) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>update</b>(const SparseImgAlignState &amp;old_model, const UpdateVector &amp;dx, SparseImgAlignState &amp;new_model) (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;::update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>weight_function_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight_scale_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignGpu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SparseImgAlignGpu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1SparseImgAlignGpu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignGpu Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Optimize the pose of the frame by minimizing the photometric error of feature patches.  \n <a href=\"classsvo_1_1SparseImgAlignGpu.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"sparse__img__align__gpu_8h_source.html\">sparse_img_align_gpu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::SparseImgAlignGpu:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlignGpu__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlignGpu_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1SparseImgAlignGpu_inherit__map\" id=\"svo_1_1SparseImgAlignGpu_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SparseImgAlignBase.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"25,109,199,136\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"5,5,219,61\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::SparseImgAlignGpu:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SparseImgAlignGpu__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1SparseImgAlignGpu_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1SparseImgAlignGpu_coll__map\" id=\"svo_1_1SparseImgAlignGpu_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SparseImgAlignBase.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"951,75,1124,101\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"611,143,824,199\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"209,125,400,166\"/>\n<area shape=\"rect\" id=\"node10\" href=\"structsvo_1_1HostCacheHandler.html\" title=\"svo::HostCacheHandler\" alt=\"\" coords=\"424,5,587,32\"/>\n<area shape=\"rect\" id=\"node8\" href=\"structsvo_1_1SparseImgAlignState.html\" title=\"State to be estimated. \" alt=\"\" coords=\"217,191,392,217\"/>\n<area shape=\"rect\" id=\"node9\" href=\"structsvo_1_1SparseImgAlignOptions.html\" title=\"Sparse Image Alignment Options. \" alt=\"\" coords=\"623,75,811,101\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0a6300ef111b3074832fdd7095965e1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a6300ef111b3074832fdd7095965e1b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignGpu</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options)</td></tr>\n<tr class=\"separator:a0a6300ef111b3074832fdd7095965e1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1c34c3d957054b0cb96b1192f1cd5ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">setPatchSizeSideEffects</a> ()</td></tr>\n<tr class=\"separator:ad1c34c3d957054b0cb96b1192f1cd5ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8183db02aa4ff98750c3511aae01647b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b\">run</a> (const FrameBundle::Ptr &amp;ref_frames, const FrameBundle::Ptr &amp;cur_frames)</td></tr>\n<tr class=\"separator:a8183db02aa4ff98750c3511aae01647b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5d4c2aafee7c3e5b9e2116bf639f7c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5d4c2aafee7c3e5b9e2116bf639f7c4\"></a>\nFloatTypeGpu&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">getMedianDisparity</a> ()</td></tr>\n<tr class=\"memdesc:ae5d4c2aafee7c3e5b9e2116bf639f7c4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">getMedianDisparity returns the median disparty for all features between the current frame and the reference frame. The value is updated when calling sparse_img_align_device_utils::computeDisparity() (see .cpp file) <br /></td></tr>\n<tr class=\"separator:ae5d4c2aafee7c3e5b9e2116bf639f7c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a2d94926d421bf224e8e3c535d5214bcc inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d94926d421bf224e8e3c535d5214bcc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignBase</b> (<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options)</td></tr>\n<tr class=\"separator:a2d94926d421bf224e8e3c535d5214bcc inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac99b568f8257028f10a9c4b5360967ac inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac99b568f8257028f10a9c4b5360967ac\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setWeightedPrior</b> (const Transformation &amp;T_cur_ref_prior, const double alpha_prior, const double beta_prior, const double lambda_rot, const double lambda_trans, const double lambda_alpha, const double lambda_beta)</td></tr>\n<tr class=\"separator:ac99b568f8257028f10a9c4b5360967ac inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"af714e9f8d09a6d582903463b1052242c\"></a>\ntemplate&lt;class derived &gt; </td></tr>\n<tr class=\"memitem:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>setPatchSize</b> (size_t patch_size)</td></tr>\n<tr class=\"separator:af714e9f8d09a6d582903463b1052242c inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5714f0be918499ce3c4506fac5093cb9 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a> (int num)</td></tr>\n<tr class=\"separator:a5714f0be918499ce3c4506fac5093cb9 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10fba90982b01781c771d190ab6c9cf8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a> (double alpha_init)</td></tr>\n<tr class=\"memdesc:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation multiplicative parameter. <br /></td></tr>\n<tr class=\"separator:a10fba90982b01781c771d190ab6c9cf8 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f4c32db9799835eb96edd923eb91afe\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a> (double beta_init)</td></tr>\n<tr class=\"memdesc:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set inital value for illumination estimation additive parameter. <br /></td></tr>\n<tr class=\"separator:a9f4c32db9799835eb96edd923eb91afe inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a969ecfed6d72c366e715abb84303b267\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a> (const bool do_compensation)</td></tr>\n<tr class=\"memdesc:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set compensation. <br /></td></tr>\n<tr class=\"separator:a969ecfed6d72c366e715abb84303b267 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94b3c43120316c4a9a363a74d889f6ef\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">evaluateError</a> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state, HessianMatrix *H, GradientVector *g)=0</td></tr>\n<tr class=\"memdesc:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp the (cur)rent image such that it aligns with the (ref)erence image. <br /></td></tr>\n<tr class=\"separator:a94b3c43120316c4a9a363a74d889f6ef inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbbb721409609ac3b186c37ceae940fd inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adbbb721409609ac3b186c37ceae940fd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>update</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;old_model, const UpdateVector &amp;dx, <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;new_model)</td></tr>\n<tr class=\"separator:adbbb721409609ac3b186c37ceae940fd inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b3fcafa47674e33729c5084c0cddc06 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b3fcafa47674e33729c5084c0cddc06\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;current_model)</td></tr>\n<tr class=\"separator:a6b3fcafa47674e33729c5084c0cddc06 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ca2c25563a70509ffc8a4d19505a509 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6ca2c25563a70509ffc8a4d19505a509\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a6ca2c25563a70509ffc8a4d19505a509 inherit pub_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913 inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb inherit pub_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab0d506ced45a03707b768e0dc10fe16c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab0d506ced45a03707b768e0dc10fe16c\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:ab0d506ced45a03707b768e0dc10fe16c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a8efb75b6b1a01712eab1b35dfa737b3a inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8efb75b6b1a01712eab1b35dfa737b3a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a8efb75b6b1a01712eab1b35dfa737b3a inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bc1e5452c08987e375123c3f70ef509 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8bc1e5452c08987e375123c3f70ef509\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_</b></td></tr>\n<tr class=\"separator:a8bc1e5452c08987e375123c3f70ef509 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba2bd5db5c5a998e8cfe1e7c1cfd94ca inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba2bd5db5c5a998e8cfe1e7c1cfd94ca\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>border_size_</b></td></tr>\n<tr class=\"separator:aba2bd5db5c5a998e8cfe1e7c1cfd94ca inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46c042975c5ab36f975ac2dfe85ac759 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46c042975c5ab36f975ac2dfe85ac759\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_with_border_</b></td></tr>\n<tr class=\"separator:a46c042975c5ab36f975ac2dfe85ac759 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a7a67cd8c2e4a59fae1e1f842802151 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a7a67cd8c2e4a59fae1e1f842802151\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_area_</b></td></tr>\n<tr class=\"separator:a0a7a67cd8c2e4a59fae1e1f842802151 inherit pub_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef SparseImgAlignState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864 inherit pub_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:af4d4246a664012e9c7eaa650052beda6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4d4246a664012e9c7eaa650052beda6\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6\">evaluateError</a> (const <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"memdesc:af4d4246a664012e9c7eaa650052beda6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp the (cur)rent image such that it aligns with the (ref)erence image. <br /></td></tr>\n<tr class=\"separator:af4d4246a664012e9c7eaa650052beda6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nSparseImgAlignBase &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4 inherit pro_methods_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aabd98c4fb307a73affad692f605a96df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aabd98c4fb307a73affad692f605a96df\"></a>\nGPUProperties&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>gpu_props_</b></td></tr>\n<tr class=\"separator:aabd98c4fb307a73affad692f605a96df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc01ab5a4cb56293d967fb12f890c05f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acc01ab5a4cb56293d967fb12f890c05f\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_blocks_reduce_</b></td></tr>\n<tr class=\"separator:acc01ab5a4cb56293d967fb12f890c05f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f5b9bc585ff5ad8f656f586142d8924\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f5b9bc585ff5ad8f656f586142d8924\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_threads_reduce_</b></td></tr>\n<tr class=\"separator:a2f5b9bc585ff5ad8f656f586142d8924\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c00f127c614f96e7f7de7d83f98e690\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c00f127c614f96e7f7de7d83f98e690\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_cache_</b> = false</td></tr>\n<tr class=\"separator:a2c00f127c614f96e7f7de7d83f98e690\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e634b263e4ef509a54c134b1cbd78d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1e634b263e4ef509a54c134b1cbd78d1\"></a>\nFloatTypeGpu&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>median_disparity_</b></td></tr>\n<tr class=\"separator:a1e634b263e4ef509a54c134b1cbd78d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8dba00655fbdefeb2e8f15e59a2d06f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae8dba00655fbdefeb2e8f15e59a2d06f\"></a>\nstd::vector&lt; std::vector&lt; imp::cu::ImageGpu8uC1::Ptr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_cur_imgs_pyramid_copy_</b></td></tr>\n<tr class=\"separator:ae8dba00655fbdefeb2e8f15e59a2d06f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84ea4b5fe5052a4c5913a8f0caf4661d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a84ea4b5fe5052a4c5913a8f0caf4661d\"></a>\nstd::vector&lt; std::vector&lt; imp::cu::ImageGpu8uC1::Ptr &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_ref_imgs_pyramid_copy_</b></td></tr>\n<tr class=\"separator:a84ea4b5fe5052a4c5913a8f0caf4661d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acefba4b3ebfb7298f2fcb4969bb516fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acefba4b3ebfb7298f2fcb4969bb516fa\"></a>\n<a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>host_cache_</b></td></tr>\n<tr class=\"separator:acefba4b3ebfb7298f2fcb4969bb516fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35584157219242e3c8885ce63383f832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a35584157219242e3c8885ce63383f832\"></a>\nGpuCacheHandler&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>gpu_cache_</b></td></tr>\n<tr class=\"separator:a35584157219242e3c8885ce63383f832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5219161aa94f8ae58a815579acf9657c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5219161aa94f8ae58a815579acf9657c\"></a>\nstd::vector&lt; imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_T_imu_cam_bundle_</b></td></tr>\n<tr class=\"separator:a5219161aa94f8ae58a815579acf9657c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3481a4f4d7e48e18200c20149fbbc034\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3481a4f4d7e48e18200c20149fbbc034\"></a>\nstd::vector&lt; imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_T_cam_imu_bundle_</b></td></tr>\n<tr class=\"separator:a3481a4f4d7e48e18200c20149fbbc034\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac972d2e3f9a3334c16ea30c278ac55f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac972d2e3f9a3334c16ea30c278ac55f2\"></a>\nstd::vector&lt; imp::cu::PinholeCamera::Ptr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_camera_bundle_</b></td></tr>\n<tr class=\"separator:ac972d2e3f9a3334c16ea30c278ac55f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae957956ae7f0fabb5d845aaeb60703c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae957956ae7f0fabb5d845aaeb60703c7\"></a>\nstd::vector&lt; imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cu_T_cur_ref_bundle_</b></td></tr>\n<tr class=\"separator:ae957956ae7f0fabb5d845aaeb60703c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:aa5e388ec993b3730fc2ce78a9a53b37b inherit pub_types_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa5e388ec993b3730fc2ce78a9a53b37b\"></a>\ntypedef <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SolverOptions</b></td></tr>\n<tr class=\"separator:aa5e388ec993b3730fc2ce78a9a53b37b inherit pub_types_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957 inherit pub_types_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a2d970f586348b65a3969000349fd04eb inherit pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d970f586348b65a3969000349fd04eb\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDefaultSolverOptions</b> ()</td></tr>\n<tr class=\"separator:a2d970f586348b65a3969000349fd04eb inherit pub_static_methods_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a860e21ad9b8d513e71fea093ec166935 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a860e21ad9b8d513e71fea093ec166935\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kJacobianSize</b> = 8</td></tr>\n<tr class=\"separator:a860e21ad9b8d513e71fea093ec166935 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfdf6d2a1518cc664cadf99b428bb7b4 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acfdf6d2a1518cc664cadf99b428bb7b4\"></a>\nstatic constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kHessianTriagN</b> = 36</td></tr>\n<tr class=\"separator:acfdf6d2a1518cc664cadf99b428bb7b4 inherit pub_static_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classsvo_1_1SparseImgAlignBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classsvo_1_1SparseImgAlignBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></td></tr>\n<tr class=\"memitem:a10ec80fd2989fbdfdc423965880999dc inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10ec80fd2989fbdfdc423965880999dc\"></a>\n<a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a10ec80fd2989fbdfdc423965880999dc inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3709befd619eded103d3f2f890735a8\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a></td></tr>\n<tr class=\"memdesc:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frame, has depth for gradient pixels. <br /></td></tr>\n<tr class=\"separator:af3709befd619eded103d3f2f890735a8 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a063cf65662c5ccd0704ff76e71dd2c27\"></a>\nFrameBundle::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a></td></tr>\n<tr class=\"memdesc:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">only the image is known! <br /></td></tr>\n<tr class=\"separator:a063cf65662c5ccd0704ff76e71dd2c27 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f3482ed793303a2dbdb03504c84bdf5\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a></td></tr>\n<tr class=\"memdesc:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pose of reference frame's IMU in world coordinates. <br /></td></tr>\n<tr class=\"separator:a5f3482ed793303a2dbdb03504c84bdf5 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab76abe2df1f3158db10036766b3a0e3b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a></td></tr>\n<tr class=\"memdesc:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">current pyramid level on which the optimization runs. <br /></td></tr>\n<tr class=\"separator:ab76abe2df1f3158db10036766b3a0e3b inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93bb8bea82016e49242f4bc481a50e3e inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93bb8bea82016e49242f4bc481a50e3e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_rot_</b></td></tr>\n<tr class=\"separator:a93bb8bea82016e49242f4bc481a50e3e inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53564c06f84a3de49e990b5afb3295bf inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a53564c06f84a3de49e990b5afb3295bf\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_trans_</b></td></tr>\n<tr class=\"separator:a53564c06f84a3de49e990b5afb3295bf inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88b46e6059a54d8ff3e1316cdbe2d7f3 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88b46e6059a54d8ff3e1316cdbe2d7f3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_alpha_</b></td></tr>\n<tr class=\"separator:a88b46e6059a54d8ff3e1316cdbe2d7f3 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2876dba734206359a3c38c6f528a426 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2876dba734206359a3c38c6f528a426\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_lambda_beta_</b></td></tr>\n<tr class=\"separator:af2876dba734206359a3c38c6f528a426 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a52b5536d15bb5f7e71b166c235ecb660\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">max_num_features_</a> = -1</td></tr>\n<tr class=\"memdesc:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of features used for alignment (if -1, all are used) <br /></td></tr>\n<tr class=\"separator:a52b5536d15bb5f7e71b166c235ecb660 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa68edbea9f6d1bc0e1f46790e6f65dca inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa68edbea9f6d1bc0e1f46790e6f65dca\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>alpha_init_</b> = 0.0</td></tr>\n<tr class=\"separator:aa68edbea9f6d1bc0e1f46790e6f65dca inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade11ace74f886e261e5713fbb5ddbd2a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade11ace74f886e261e5713fbb5ddbd2a\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>beta_init_</b> = 0.0</td></tr>\n<tr class=\"separator:ade11ace74f886e261e5713fbb5ddbd2a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d93f9939fcd71e8172d24c0bb8dee3a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d93f9939fcd71e8172d24c0bb8dee3a\"></a>\nvk::solver::WeightFunctionPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_function_</b></td></tr>\n<tr class=\"separator:a8d93f9939fcd71e8172d24c0bb8dee3a inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19fa3163a7c8c9f0df12a331ebe37409 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a19fa3163a7c8c9f0df12a331ebe37409\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_scale_</b></td></tr>\n<tr class=\"separator:a19fa3163a7c8c9f0df12a331ebe37409 inherit pro_attribs_classsvo_1_1SparseImgAlignBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b></td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47 inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b inherit pro_attribs_classvk_1_1solver_1_1MiniLeastSquaresSolver\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Optimize the pose of the frame by minimizing the photometric error of feature patches. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a8183db02aa4ff98750c3511aae01647b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8183db02aa4ff98750c3511aae01647b\">&#9670;&nbsp;</a></span>run()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::SparseImgAlignGpu::run </td>\n          <td>(</td>\n          <td class=\"paramtype\">const FrameBundle::Ptr &amp;&#160;</td>\n          <td class=\"paramname\"><em>ref_frames</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const FrameBundle::Ptr &amp;&#160;</td>\n          <td class=\"paramname\"><em>cur_frames</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Uncomment if you need the median disparity </p>\n\n<p>Implements <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a>.</p>\n\n</div>\n</div>\n<a id=\"ad1c34c3d957054b0cb96b1192f1cd5ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1c34c3d957054b0cb96b1192f1cd5ea\">&#9670;&nbsp;</a></span>setPatchSizeSideEffects()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void svo::SparseImgAlignGpu::setPatchSizeSideEffects </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>The derived class has to specify the necessary modifications (e.g. memory allocation) in case the patchsize is changed. </p>\n\n<p>Implements <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">svo::SparseImgAlignBase</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align__gpu_8h_source.html\">sparse_img_align_gpu.h</a></li>\n<li>svo_img_align/src/sparse_img_align_gpu.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignGpu__coll__graph.md5",
    "content": "f561db159d5b687d936bb897c75c38e5"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlignGpu__inherit__graph.md5",
    "content": "1d1c5f53342448c06869fc7fed44b388"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlign__coll__graph.md5",
    "content": "86ef74854bad5030f794298e5f9819f5"
  },
  {
    "path": "docs/classsvo_1_1SparseImgAlign__inherit__graph.md5",
    "content": "bfbe3b9b53d2f3ba45b81ef215e450b9"
  },
  {
    "path": "docs/classsvo_1_1StereoInit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoInit Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>detector_</b> (defined in <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stereo_</b> (defined in <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>StereoInit</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~StereoInit</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1StereoInit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::StereoInit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1StereoInit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoInit Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::StereoInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1StereoInit__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1StereoInit_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1StereoInit_inherit__map\" id=\"svo_1_1StereoInit_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::StereoInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1StereoInit__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1StereoInit_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1StereoInit_coll__map\" id=\"svo_1_1StereoInit_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0b9c1e6cdc17997131417d2143e9fafd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0b9c1e6cdc17997131417d2143e9fafd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>StereoInit</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a0b9c1e6cdc17997131417d2143e9fafd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24ef878442c236201e48dcff9701e556\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a24ef878442c236201e48dcff9701e556\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:a24ef878442c236201e48dcff9701e556\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a01dd7d7fad267bfd19d3dd03a5435296\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01dd7d7fad267bfd19d3dd03a5435296\"></a>\nstd::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereo_</b></td></tr>\n<tr class=\"separator:a01dd7d7fad267bfd19d3dd03a5435296\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0aca0ab79b1ba45195d4b21c1597e7e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0aca0ab79b1ba45195d4b21c1597e7e1\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>detector_</b></td></tr>\n<tr class=\"separator:a0aca0ab79b1ba45195d4b21c1597e7e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1StereoInit__coll__graph.md5",
    "content": "dffca687b3a763f53d9556e6d088d9ea"
  },
  {
    "path": "docs/classsvo_1_1StereoInit__inherit__graph.md5",
    "content": "796fb72204f82701b134dd84fa04b05b"
  },
  {
    "path": "docs/classsvo_1_1StereoTriangulation-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoTriangulation Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>compute</b>(const FramePtr &amp;frame0, const FramePtr &amp;frame1) (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>feature_detector_</b> (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>options_</b> (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>StereoTriangulation</b>(const StereoTriangulationOptions &amp;options, const DetectorPtr &amp;feature_detector) (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~StereoTriangulation</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1StereoTriangulation.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::StereoTriangulation Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1StereoTriangulation-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoTriangulation Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::StereoTriangulation:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1StereoTriangulation__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1StereoTriangulation_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1StereoTriangulation_coll__map\" id=\"svo_1_1StereoTriangulation_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1StereoTriangulationOptions.html\" title=\"svo::StereoTriangulation\\lOptions\" alt=\"\" coords=\"5,95,168,136\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a31f6df6803773951eadc28bd94a75a53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31f6df6803773951eadc28bd94a75a53\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a31f6df6803773951eadc28bd94a75a53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aaa60c06bbfe6b524d794759c1df76879\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaa60c06bbfe6b524d794759c1df76879\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>StereoTriangulation</b> (const <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a> &amp;options, const DetectorPtr &amp;feature_detector)</td></tr>\n<tr class=\"separator:aaa60c06bbfe6b524d794759c1df76879\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a473c21a1702221f2f0e4d1a5c6be494c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a473c21a1702221f2f0e4d1a5c6be494c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>compute</b> (const FramePtr &amp;frame0, const FramePtr &amp;frame1)</td></tr>\n<tr class=\"separator:a473c21a1702221f2f0e4d1a5c6be494c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a1457bfb9a2796968ab9f6d93c861faf3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1457bfb9a2796968ab9f6d93c861faf3\"></a>\n<a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>options_</b></td></tr>\n<tr class=\"separator:a1457bfb9a2796968ab9f6d93c861faf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd501b4cf150a702dd9c4b308fd16a81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd501b4cf150a702dd9c4b308fd16a81\"></a>\nDetectorPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>feature_detector_</b></td></tr>\n<tr class=\"separator:abd501b4cf150a702dd9c4b308fd16a81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"stereo__triangulation_8h_source.html\">stereo_triangulation.h</a></li>\n<li>svo/src/stereo_triangulation.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1StereoTriangulation__coll__graph.md5",
    "content": "91f7d7b791a1dc39996284767290fc3c"
  },
  {
    "path": "docs/classsvo_1_1SvoInterface-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SvoInterface Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>automatic_reinitialization_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>backend_interface_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backend_visualizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>idle_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>image_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imageCallbackPostprocessing</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imageCallbackPreprocessing</b>(int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imu_handler_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imu_thread_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>imuCallback</b>(const sensor_msgs::ImuConstPtr &amp;imu_msg) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>imuLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>inputKeyCallback</b>(const std_msgs::StringConstPtr &amp;key_input) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>monoCallback</b>(const sensor_msgs::ImageConstPtr &amp;msg) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>monoLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ncam_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pipeline_type_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pnh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>processImageBundle</b>(const std::vector&lt; cv::Mat &gt; &amp;images, int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishResults</b>(const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>quit_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>remote_input_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>set_initial_attitude_from_gravity_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setImuPrior</b>(const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>stereoCallback</b>(const sensor_msgs::ImageConstPtr &amp;msg0, const sensor_msgs::ImageConstPtr &amp;msg1) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stereoLoop</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sub_remote_key_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>subscribeImage</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>subscribeImu</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>subscribeRemoteKey</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>svo_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SvoInterface</b>(const PipelineType &amp;pipeline_type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;private_nh) (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizer_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~SvoInterface</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SvoInterface.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SvoInterface Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1SvoInterface-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SvoInterface Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>SVO Interface.  \n <a href=\"classsvo_1_1SvoInterface.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"svo__interface_8h_source.html\">svo_interface.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::SvoInterface:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SvoInterface__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SvoInterface_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1SvoInterface_inherit__map\" id=\"svo_1_1SvoInterface_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1BenchmarkNode.html\" title=\"svo::BenchmarkNode\" alt=\"\" coords=\"5,80,153,107\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a79e389b23e9832921eb6436b91e334cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79e389b23e9832921eb6436b91e334cc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SvoInterface</b> (const PipelineType &amp;pipeline_type, const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;private_nh)</td></tr>\n<tr class=\"separator:a79e389b23e9832921eb6436b91e334cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b7e936a3d1ce08fefee1bd027726d4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7e936a3d1ce08fefee1bd027726d4b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>processImageBundle</b> (const std::vector&lt; cv::Mat &gt; &amp;images, int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a3b7e936a3d1ce08fefee1bd027726d4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7807d4605b04efe5c411d28401f6ced7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7807d4605b04efe5c411d28401f6ced7\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setImuPrior</b> (const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a7807d4605b04efe5c411d28401f6ced7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e7a0ea77f94b23c1da9393240a77f98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e7a0ea77f94b23c1da9393240a77f98\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishResults</b> (const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:a2e7a0ea77f94b23c1da9393240a77f98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91c40cc887685a042182e4881bb5fafa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a91c40cc887685a042182e4881bb5fafa\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>monoCallback</b> (const sensor_msgs::ImageConstPtr &amp;msg)</td></tr>\n<tr class=\"separator:a91c40cc887685a042182e4881bb5fafa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a256ec83666dbadb8c06e5fa280c6ff57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a256ec83666dbadb8c06e5fa280c6ff57\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereoCallback</b> (const sensor_msgs::ImageConstPtr &amp;msg0, const sensor_msgs::ImageConstPtr &amp;msg1)</td></tr>\n<tr class=\"separator:a256ec83666dbadb8c06e5fa280c6ff57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f5b0d8ad802632fbf2b8c52dc4d6b25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f5b0d8ad802632fbf2b8c52dc4d6b25\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imuCallback</b> (const sensor_msgs::ImuConstPtr &amp;imu_msg)</td></tr>\n<tr class=\"separator:a4f5b0d8ad802632fbf2b8c52dc4d6b25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a046b48b2d7f4b3e44de4e5ac05e9b35e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a046b48b2d7f4b3e44de4e5ac05e9b35e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>inputKeyCallback</b> (const std_msgs::StringConstPtr &amp;key_input)</td></tr>\n<tr class=\"separator:a046b48b2d7f4b3e44de4e5ac05e9b35e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4110f749405d369b28c1941e50200f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af4110f749405d369b28c1941e50200f8\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imageCallbackPreprocessing</b> (int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:af4110f749405d369b28c1941e50200f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec2d7112b731075c736fe529d4160fec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aec2d7112b731075c736fe529d4160fec\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imageCallbackPostprocessing</b> ()</td></tr>\n<tr class=\"separator:aec2d7112b731075c736fe529d4160fec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a907759945fcafcb4db0f3a13689ce68d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a907759945fcafcb4db0f3a13689ce68d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeImu</b> ()</td></tr>\n<tr class=\"separator:a907759945fcafcb4db0f3a13689ce68d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac39875aab6bcf73f9e7cf5d939a2e569\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac39875aab6bcf73f9e7cf5d939a2e569\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeImage</b> ()</td></tr>\n<tr class=\"separator:ac39875aab6bcf73f9e7cf5d939a2e569\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:addaaf2a94ff905b60000eef0ff121dec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"addaaf2a94ff905b60000eef0ff121dec\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>subscribeRemoteKey</b> ()</td></tr>\n<tr class=\"separator:addaaf2a94ff905b60000eef0ff121dec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e8830f84dc4c7be82b9097bbe38510f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e8830f84dc4c7be82b9097bbe38510f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imuLoop</b> ()</td></tr>\n<tr class=\"separator:a9e8830f84dc4c7be82b9097bbe38510f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6221627913dc7b1c6c46922a5ef50cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6221627913dc7b1c6c46922a5ef50cfb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>monoLoop</b> ()</td></tr>\n<tr class=\"separator:a6221627913dc7b1c6c46922a5ef50cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab41183f0f68b73d82c30b174cb0b1a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab41183f0f68b73d82c30b174cb0b1a4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stereoLoop</b> ()</td></tr>\n<tr class=\"separator:aab41183f0f68b73d82c30b174cb0b1a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8a0aeb81f044d04159abdc477f29cb24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a0aeb81f044d04159abdc477f29cb24\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nh_</b></td></tr>\n<tr class=\"separator:a8a0aeb81f044d04159abdc477f29cb24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6600f54bba3d257f1eb78aff8015a240\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6600f54bba3d257f1eb78aff8015a240\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pnh_</b></td></tr>\n<tr class=\"separator:a6600f54bba3d257f1eb78aff8015a240\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb8c9cbf7816467947d3fe30a860ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad3fb8c9cbf7816467947d3fe30a860ca\"></a>\nPipelineType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pipeline_type_</b></td></tr>\n<tr class=\"separator:ad3fb8c9cbf7816467947d3fe30a860ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0e789bd7a032893e384de84fea9ab0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf0e789bd7a032893e384de84fea9ab0\"></a>\nros::Subscriber&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sub_remote_key_</b></td></tr>\n<tr class=\"separator:acf0e789bd7a032893e384de84fea9ab0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0940c8964ed203d3d254615b5b72eea0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0940c8964ed203d3d254615b5b72eea0\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>remote_input_</b></td></tr>\n<tr class=\"separator:a0940c8964ed203d3d254615b5b72eea0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad45c126e85286925fed3e10d0427f9b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad45c126e85286925fed3e10d0427f9b9\"></a>\nstd::unique_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_thread_</b></td></tr>\n<tr class=\"separator:ad45c126e85286925fed3e10d0427f9b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a876d14802b8913b3724bd6e4ae4ce08e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a876d14802b8913b3724bd6e4ae4ce08e\"></a>\nstd::unique_ptr&lt; std::thread &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>image_thread_</b></td></tr>\n<tr class=\"separator:a876d14802b8913b3724bd6e4ae4ce08e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c951d59a8214a07a4b324fb7c59324f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c951d59a8214a07a4b324fb7c59324f\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>svo_</b></td></tr>\n<tr class=\"separator:a3c951d59a8214a07a4b324fb7c59324f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66e19a241474aeebb375293b637e677\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad66e19a241474aeebb375293b637e677\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizer_</b></td></tr>\n<tr class=\"separator:ad66e19a241474aeebb375293b637e677\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0223a8aec31b130b37a2b0bab22a2bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab0223a8aec31b130b37a2b0bab22a2bb\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>imu_handler_</b></td></tr>\n<tr class=\"separator:ab0223a8aec31b130b37a2b0bab22a2bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af535457d9c8ff83920bc9f3282b5de6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af535457d9c8ff83920bc9f3282b5de6b\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backend_interface_</b></td></tr>\n<tr class=\"separator:af535457d9c8ff83920bc9f3282b5de6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d6b764e80420591a5e534894ffabef2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d6b764e80420591a5e534894ffabef2\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backend_visualizer_</b></td></tr>\n<tr class=\"separator:a1d6b764e80420591a5e534894ffabef2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9bdd989949321dd4b54fd7cbd8a6716\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac9bdd989949321dd4b54fd7cbd8a6716\"></a>\nCameraBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ncam_</b></td></tr>\n<tr class=\"separator:ac9bdd989949321dd4b54fd7cbd8a6716\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63a8156b73ae2dd1ae8503ecfeb1fca5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63a8156b73ae2dd1ae8503ecfeb1fca5\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>set_initial_attitude_from_gravity_</b> = true</td></tr>\n<tr class=\"separator:a63a8156b73ae2dd1ae8503ecfeb1fca5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3dc416e3db2aa32dfc61f0c4a9995fb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3dc416e3db2aa32dfc61f0c4a9995fb0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>quit_</b> = false</td></tr>\n<tr class=\"separator:a3dc416e3db2aa32dfc61f0c4a9995fb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:affbfbcab64ead8d105fe9a5870d40c08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"affbfbcab64ead8d105fe9a5870d40c08\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>idle_</b> = false</td></tr>\n<tr class=\"separator:affbfbcab64ead8d105fe9a5870d40c08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a571a5d110c5fa79f3ca19329bfe18709\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a571a5d110c5fa79f3ca19329bfe18709\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>automatic_reinitialization_</b> = false</td></tr>\n<tr class=\"separator:a571a5d110c5fa79f3ca19329bfe18709\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>SVO Interface. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"svo__interface_8h_source.html\">svo_interface.h</a></li>\n<li>svo_ros/src/svo_interface.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SvoInterface__inherit__graph.md5",
    "content": "afa89de63e6ae32e647166720304820f"
  },
  {
    "path": "docs/classsvo_1_1SvoNodelet-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SvoNodelet Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>onInit</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>svo_interface_</b> (defined in <a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SvoNodelet</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~SvoNodelet</b>() (defined in <a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SvoNodelet.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SvoNodelet Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1SvoNodelet-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SvoNodelet Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::SvoNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SvoNodelet__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1SvoNodelet_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::SvoNodelet:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1SvoNodelet__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1SvoNodelet_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a99267c61b544df8e295c8ca38cd750be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a99267c61b544df8e295c8ca38cd750be\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>onInit</b> ()</td></tr>\n<tr class=\"separator:a99267c61b544df8e295c8ca38cd750be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a7662d43ba5b3753b260ce2a057cd6b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7662d43ba5b3753b260ce2a057cd6b65\"></a>\nstd::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>svo_interface_</b></td></tr>\n<tr class=\"separator:a7662d43ba5b3753b260ce2a057cd6b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"svo__nodelet_8h_source.html\">svo_nodelet.h</a></li>\n<li>svo_ros/src/svo_nodelet.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1SvoNodelet__coll__graph.md5",
    "content": "112239640d4a108b2a41351bf8d5f473"
  },
  {
    "path": "docs/classsvo_1_1SvoNodelet__inherit__graph.md5",
    "content": "24c30da77299cce4de222e33b66e956c"
  },
  {
    "path": "docs/classsvo_1_1TwoPointInit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::TwoPointInit Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AbstractInitialization</b>(const InitializationOptions &amp;init_options, const FeatureTrackerOptions &amp;tracker_options, const DetectorOptions &amp;detector_options, const CameraBundlePtr &amp;cams) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addFrameBundle</b>(const FrameBundlePtr &amp;frames_cur) override (defined in <a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>BearingVectors</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureMatches</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InlierMask</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>R_ref_world_</b> (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reset</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setAbsoluteOrientationPrior</b>(const Quaternion &amp;R_cam_world) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setDepthPrior</b>(double depth) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTranslationPrior</b>(const Eigen::Vector3d &amp;t_ref_cur) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trackFeaturesAndCheckDisparity</b>(const FrameBundlePtr &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UniquePtr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AbstractInitialization</b>() (defined in <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~TwoPointInit</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1TwoPointInit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::TwoPointInit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classsvo_1_1TwoPointInit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::TwoPointInit Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for svo::TwoPointInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1TwoPointInit__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1TwoPointInit_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1TwoPointInit_inherit__map\" id=\"svo_1_1TwoPointInit_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,5,175,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::TwoPointInit:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1TwoPointInit__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1TwoPointInit_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1TwoPointInit_coll__map\" id=\"svo_1_1TwoPointInit_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"105,213,274,240\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,124,171,151\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af06f4c22062946a5d7d95b0305301e25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af06f4c22062946a5d7d95b0305301e25\"></a>\nvirtual InitResult&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addFrameBundle</b> (const FrameBundlePtr &amp;frames_cur) override</td></tr>\n<tr class=\"separator:af06f4c22062946a5d7d95b0305301e25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13c0bc3f8d1c51d0d07dc8b9b8eeedda\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractInitialization</b> (const <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> &amp;init_options, const <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> &amp;tracker_options, const <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> &amp;detector_options, const CameraBundlePtr &amp;cams)</td></tr>\n<tr class=\"separator:a13c0bc3f8d1c51d0d07dc8b9b8eeedda inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a438c5207677f717f5843d16f3004d5cc\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trackFeaturesAndCheckDisparity</b> (const FrameBundlePtr &amp;frames)</td></tr>\n<tr class=\"separator:a438c5207677f717f5843d16f3004d5cc inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa15ec6039b7d43f9968d8eeccdad1156\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reset</b> ()</td></tr>\n<tr class=\"separator:aa15ec6039b7d43f9968d8eeccdad1156 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c90f1c02850cb88b2b8d8cab5a208a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAbsoluteOrientationPrior</b> (const Quaternion &amp;R_cam_world)</td></tr>\n<tr class=\"separator:a0c90f1c02850cb88b2b8d8cab5a208a8 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b13170fe31863046cb70f93afd01f51\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTranslationPrior</b> (const Eigen::Vector3d &amp;t_ref_cur)</td></tr>\n<tr class=\"separator:a7b13170fe31863046cb70f93afd01f51 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af22db349a285cc767c59e236b0b41318\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setDepthPrior</b> (double depth)</td></tr>\n<tr class=\"separator:af22db349a285cc767c59e236b0b41318 inherit pub_methods_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae137f5624533646d9a96bbd52d31720a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVectors</b> = std::vector&lt; Eigen::Vector3d, Eigen::aligned_allocator&lt; Eigen::Vector3d &gt; &gt;</td></tr>\n<tr class=\"separator:ae137f5624533646d9a96bbd52d31720a inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6811b395d0ed281d6a3ae8b7d9b9e479\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a6811b395d0ed281d6a3ae8b7d9b9e479 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56d910b89423f33e89d4e5d059e74566\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;</td></tr>\n<tr class=\"separator:a56d910b89423f33e89d4e5d059e74566 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0dc2874eccc502e9e0068b998887e032\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a0dc2874eccc502e9e0068b998887e032 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa71af4dd1a7a85067ce4cfd6e137c867\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureMatches</b> = std::vector&lt; std::pair&lt; size_t, size_t &gt; &gt;</td></tr>\n<tr class=\"separator:aa71af4dd1a7a85067ce4cfd6e137c867 inherit pub_types_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classsvo_1_1AbstractInitialization\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classsvo_1_1AbstractInitialization')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></td></tr>\n<tr class=\"memitem:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1068444d04d307ce094ffa2a0316adb\"></a>\n<a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a></td></tr>\n<tr class=\"memdesc:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer options. <br /></td></tr>\n<tr class=\"separator:ac1068444d04d307ce094ffa2a0316adb inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2e24cfe6f93e061880908e8056fa91d\"></a>\nFeatureTrackerUniquePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a></td></tr>\n<tr class=\"memdesc:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature tracker. <br /></td></tr>\n<tr class=\"separator:ae2e24cfe6f93e061880908e8056fa91d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43599f8bcbdd69c18149b1448f2f6c2d\"></a>\nFrameBundlePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a></td></tr>\n<tr class=\"memdesc:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">reference frames <br /></td></tr>\n<tr class=\"separator:a43599f8bcbdd69c18149b1448f2f6c2d inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa22cfe13c5fecb2143a98267014b4166\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a></td></tr>\n<tr class=\"memdesc:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">computed transformation between the first two frames. <br /></td></tr>\n<tr class=\"separator:aa22cfe13c5fecb2143a98267014b4166 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3cb7423935d0abda3f4d78e763af3f06\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_ref_world_</b></td></tr>\n<tr class=\"separator:a3cb7423935d0abda3f4d78e763af3f06 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a50df992c918076ae1ff5e7cb645838\"></a>\nQuaternion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a></td></tr>\n<tr class=\"memdesc:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Absolute orientation prior. <br /></td></tr>\n<tr class=\"separator:a6a50df992c918076ae1ff5e7cb645838 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7d2735111e496273cab33e274b0eec33\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a></td></tr>\n<tr class=\"memdesc:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translation prior. <br /></td></tr>\n<tr class=\"separator:a7d2735111e496273cab33e274b0eec33 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1dbe5edff29693eec75b3cb090478f0\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">have_rotation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a rotation prior? <br /></td></tr>\n<tr class=\"separator:ab1dbe5edff29693eec75b3cb090478f0 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b3465a5b4bcdc9aa30cba80f0f8686\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">have_translation_prior_</a> = false</td></tr>\n<tr class=\"memdesc:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a translation prior? <br /></td></tr>\n<tr class=\"separator:aa8b3465a5b4bcdc9aa30cba80f0f8686 inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a39278ac0ece4bb6920d8e8d7286be8ac\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">have_depth_prior_</a> = false</td></tr>\n<tr class=\"memdesc:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do we have a depth prior? <br /></td></tr>\n<tr class=\"separator:a39278ac0ece4bb6920d8e8d7286be8ac inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab39a5d256e4335bdc07b18eccbeb846c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">depth_at_current_frame_</a> = 1.0</td></tr>\n<tr class=\"memdesc:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth prior of 3D points in current frame. <br /></td></tr>\n<tr class=\"separator:ab39a5d256e4335bdc07b18eccbeb846c inherit pub_attribs_classsvo_1_1AbstractInitialization\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Tracks features using KLT and then uses the IMU rotation prior to estimate the relative pose using a 2Pt RANSAC </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n<li>svo/src/initialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1TwoPointInit__coll__graph.md5",
    "content": "586ef8bd20ccd1a1ec6dd9e784fb8c92"
  },
  {
    "path": "docs/classsvo_1_1TwoPointInit__inherit__graph.md5",
    "content": "322f85e91f7462b094fb126f1047f946"
  },
  {
    "path": "docs/classsvo_1_1ViNodeState-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ViNodeState Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>get_T_W_B</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>get_T_W_B</b>() (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>get_W_v_B</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAccBias</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getGyroBias</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getImuBias</b>() const (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>set_T_W_B</b>(const Transformation &amp;T_W_B) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>set_W_v_B</b>(const Eigen::Vector3d &amp;W_v_B) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>setAccBias</b>(const Eigen::Vector3d &amp;acc_bias) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setGyroBias</b>(const Eigen::Vector3d &amp;gyro_bias) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ViNodeState</b>(const Transformation &amp;T_W_B) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ViNodeState</b>() (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ViNodeState</b>(const Transformation &amp;T_W_B, const Eigen::Vector3d &amp;W_v_B, const Eigen::Vector3d &amp;accelerometer_bias, const Eigen::Vector3d &amp;gyro_bias) (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a></td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ViNodeState</b>() (defined in <a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">svo::ViNodeState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ViNodeState.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ViNodeState Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo_1_1ViNodeState-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ViNodeState Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"backend__types_8h_source.html\">backend_types.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::ViNodeState:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1ViNodeState__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ViNodeState_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad26024add22532e2a8c43e92b051dcf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad26024add22532e2a8c43e92b051dcf4\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ViNodeState</b> (const Transformation &amp;T_W_B)</td></tr>\n<tr class=\"separator:ad26024add22532e2a8c43e92b051dcf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8e6709885202e29bcc1586a39df1532\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8e6709885202e29bcc1586a39df1532\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ViNodeState</b> (const Transformation &amp;T_W_B, const Eigen::Vector3d &amp;W_v_B, const Eigen::Vector3d &amp;accelerometer_bias, const Eigen::Vector3d &amp;gyro_bias)</td></tr>\n<tr class=\"separator:ad8e6709885202e29bcc1586a39df1532\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4008e0a059c007cba03aaa169b9cd772\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4008e0a059c007cba03aaa169b9cd772\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>get_T_W_B</b> () const</td></tr>\n<tr class=\"separator:a4008e0a059c007cba03aaa169b9cd772\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8eb774945d42742f7f246d0dbd05a2c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8eb774945d42742f7f246d0dbd05a2c7\"></a>\nTransformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>get_T_W_B</b> ()</td></tr>\n<tr class=\"separator:a8eb774945d42742f7f246d0dbd05a2c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd1868095b47a835eb5eda7cb1f71430\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acd1868095b47a835eb5eda7cb1f71430\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>get_W_v_B</b> () const</td></tr>\n<tr class=\"separator:acd1868095b47a835eb5eda7cb1f71430\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed3dfc4dfb8518ceaad7c51be5304642\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed3dfc4dfb8518ceaad7c51be5304642\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAccBias</b> () const</td></tr>\n<tr class=\"separator:aed3dfc4dfb8518ceaad7c51be5304642\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a347d84cce9efd511a2f67cfc6381317c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a347d84cce9efd511a2f67cfc6381317c\"></a>\nconst Eigen::Vector3d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getGyroBias</b> () const</td></tr>\n<tr class=\"separator:a347d84cce9efd511a2f67cfc6381317c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80d61a7ab8c5af1093afa00217230d8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80d61a7ab8c5af1093afa00217230d8d\"></a>\nEigen::Matrix&lt; double, 6, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getImuBias</b> () const</td></tr>\n<tr class=\"separator:a80d61a7ab8c5af1093afa00217230d8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1367c304a944371118415f544bd7fe5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1367c304a944371118415f544bd7fe5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>set_T_W_B</b> (const Transformation &amp;T_W_B)</td></tr>\n<tr class=\"separator:ae1367c304a944371118415f544bd7fe5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e981e6dea056f7a8d838221cc189579\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6e981e6dea056f7a8d838221cc189579\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>set_W_v_B</b> (const Eigen::Vector3d &amp;W_v_B)</td></tr>\n<tr class=\"separator:a6e981e6dea056f7a8d838221cc189579\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90e609bed99ef1293c5e7c2d97c0362f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a90e609bed99ef1293c5e7c2d97c0362f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setAccBias</b> (const Eigen::Vector3d &amp;acc_bias)</td></tr>\n<tr class=\"separator:a90e609bed99ef1293c5e7c2d97c0362f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26b0e721fcc42eb0262843fe4532b42c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a26b0e721fcc42eb0262843fe4532b42c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setGyroBias</b> (const Eigen::Vector3d &amp;gyro_bias)</td></tr>\n<tr class=\"separator:a26b0e721fcc42eb0262843fe4532b42c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a76790f1d53f5d1eaee0b8621736df380\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a76790f1d53f5d1eaee0b8621736df380\"></a>\nTransformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">T_W_B_</a></td></tr>\n<tr class=\"memdesc:a76790f1d53f5d1eaee0b8621736df380\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The pose taking points from the body frame to the world frame. <br /></td></tr>\n<tr class=\"separator:a76790f1d53f5d1eaee0b8621736df380\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ab8dff69a84a9131f8d9709573084d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ab8dff69a84a9131f8d9709573084d3\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">W_v_B_</a></td></tr>\n<tr class=\"memdesc:a7ab8dff69a84a9131f8d9709573084d3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The velocity (m/s). <br /></td></tr>\n<tr class=\"separator:a7ab8dff69a84a9131f8d9709573084d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95b661260623cfd6e59da5faceff6d64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95b661260623cfd6e59da5faceff6d64\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">acc_bias_</a></td></tr>\n<tr class=\"memdesc:a95b661260623cfd6e59da5faceff6d64\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The accelerometer bias (m/s^2). <br /></td></tr>\n<tr class=\"separator:a95b661260623cfd6e59da5faceff6d64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b4cdfc57b7a672ab0d058750b9548de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b4cdfc57b7a672ab0d058750b9548de\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">gyro_bias_</a></td></tr>\n<tr class=\"memdesc:a6b4cdfc57b7a672ab0d058750b9548de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The gyroscope bias (rad/s). <br /></td></tr>\n<tr class=\"separator:a6b4cdfc57b7a672ab0d058750b9548de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>The state of a ViNode (pose, velocity and bias). From SWE. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"backend__types_8h_source.html\">backend_types.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1ViNodeState__coll__graph.md5",
    "content": "71e9e4d237074ff15233ec39cb0480da"
  },
  {
    "path": "docs/classsvo_1_1Visualizer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Visualizer Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>br_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>dense_pub_nth_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>exportToDense</b>(const FrameBundlePtr &amp;frame_bundle) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>img_pub_level_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>img_pub_nth_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kWorldFrame</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ofs_pointcloud_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ofs_states_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pc_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pnh_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PointCloud</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PointType</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Ptr</b> typedef (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_cam_poses_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_dense_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_frames_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_images_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_imu_pose_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_info_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_loop_closure_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_markers_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>pub_pc_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>pub_points_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publish_map_every_frame_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publish_points_display_time_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publish_seeds_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publish_seeds_uncertainty_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publish_world_in_cam_frame_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishBundleFeatureTracks</b>(const FrameBundlePtr frames_ref, const FrameBundlePtr frames_cur, int64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishCameraPoses</b>(const FrameBundlePtr &amp;frame_bundle, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishFeatureTracks</b>(const Keypoints &amp;px_ref, const Keypoints &amp;px_cur, const std::vector&lt; std::pair&lt; size_t, size_t &gt;&gt; &amp;matches_ref_cur, const ImgPyr &amp;img_pyr, const Level &amp;level, const uint64_t timestamp, const size_t frame_index) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishImages</b>(const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishImagesWithFeatures</b>(const FrameBundlePtr &amp;frame_bundle, const int64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishImuPose</b>(const Transformation &amp;T_world_imu, const Eigen::Matrix&lt; double, 6, 6 &gt; Covariance, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishKeyframeWithPoints</b>(const FramePtr &amp;frame, const uint64_t timestamp, const double marker_scale=0.05) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishLoopClosure</b>(const FramePtr &amp;query, const FramePtr &amp;match, const Transformation &amp;T_match_query) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishLoopClosureInfo</b>(const std::vector&lt; Eigen::Matrix&lt; float, 1, 6 &gt;, Eigen::aligned_allocator&lt; Eigen::Matrix&lt; float, 1, 6 &gt; &gt; &gt; &amp;loop_closure_data) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishMapRegion</b>(const std::vector&lt; FramePtr &gt; &amp;frames) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishSeeds</b>(const MapPtr &amp;map) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishSeedsAsPointcloud</b>(const Frame &amp;frame, bool only_converged_seeds, bool reset_pc_before_publishing=true) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishSeedsBinary</b>(const MapPtr &amp;map, const float sigma_threshold) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishSeedsUncertainty</b>(const MapPtr &amp;map) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishSvoInfo</b>(const svo::FrameHandlerBase *const svo, const int64_t timestamp_nanoseconds) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>publishTrajectoryPoint</b>(const Eigen::Vector3d &amp;pos_in_vision, const uint64_t timestamp, const int id) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>publishVelocity</b>(const Eigen::Vector3d &amp;velocity_imu, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_dir_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_id_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_pointcloud_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>vis_scale_</b> (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizeCoordinateFrames</b>(const Transformation &amp;T_world_cam) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizeHexacopter</b>(const Transformation &amp;T_frame_world, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizeMarkers</b>(const FrameBundlePtr &amp;frame_bundle, const std::vector&lt; FramePtr &gt; &amp;close_kfs, const MapPtr &amp;map) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>visualizeMarkersWithUncertainty</b>(const FramePtr &amp;frame, const std::vector&lt; FramePtr &gt; &amp;close_kfs, const MapPtr &amp;map, const float sigma_threshold) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>visualizeQuadrocopter</b>(const Transformation &amp;T_frame_world, const uint64_t timestamp) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Visualizer</b>(const std::string &amp;trace_dir, const ros::NodeHandle &amp;nh_private, const size_t num_cameras) (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~Visualizer</b>()=default (defined in <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Visualizer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Visualizer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classsvo_1_1Visualizer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Visualizer Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Publish visualisation messages to ROS.  \n <a href=\"classsvo_1_1Visualizer.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"visualizer_8h_source.html\">visualizer.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Visualizer:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo_1_1Visualizer__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Visualizer_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a7bd79b0bf2d75cd75d53a694e71ee99d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7bd79b0bf2d75cd75d53a694e71ee99d\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Ptr</b></td></tr>\n<tr class=\"separator:a7bd79b0bf2d75cd75d53a694e71ee99d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac097ab1fd043eec0d10b05f927dd82e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac097ab1fd043eec0d10b05f927dd82e8\"></a>\ntypedef pcl::PointXYZI&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointType</b></td></tr>\n<tr class=\"separator:ac097ab1fd043eec0d10b05f927dd82e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f86f85690a723ac22f225038fa24e65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f86f85690a723ac22f225038fa24e65\"></a>\ntypedef pcl::PointCloud&lt; PointType &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointCloud</b></td></tr>\n<tr class=\"separator:a9f86f85690a723ac22f225038fa24e65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a30e62e671b6e68b2ac425bb217dd8b94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30e62e671b6e68b2ac425bb217dd8b94\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Visualizer</b> (const std::string &amp;trace_dir, const ros::NodeHandle &amp;nh_private, const size_t num_cameras)</td></tr>\n<tr class=\"separator:a30e62e671b6e68b2ac425bb217dd8b94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aece73585fed1d779e11f724ecce89bc3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aece73585fed1d779e11f724ecce89bc3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishSvoInfo</b> (const <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a> *const svo, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:aece73585fed1d779e11f724ecce89bc3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3b94168d607c819d0927e900afe898b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae3b94168d607c819d0927e900afe898b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishImages</b> (const std::vector&lt; cv::Mat &gt; &amp;images, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:ae3b94168d607c819d0927e900afe898b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0eaa82a3df0f863ceff04616c5eb9359\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0eaa82a3df0f863ceff04616c5eb9359\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishImagesWithFeatures</b> (const FrameBundlePtr &amp;frame_bundle, const int64_t timestamp)</td></tr>\n<tr class=\"separator:a0eaa82a3df0f863ceff04616c5eb9359\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad540415c8024b85c267d5ec52d16ce65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad540415c8024b85c267d5ec52d16ce65\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishImuPose</b> (const Transformation &amp;T_world_imu, const Eigen::Matrix&lt; double, 6, 6 &gt; Covariance, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:ad540415c8024b85c267d5ec52d16ce65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed08536c986b97456efe1587d99b6a5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed08536c986b97456efe1587d99b6a5a\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishCameraPoses</b> (const FrameBundlePtr &amp;frame_bundle, const int64_t timestamp_nanoseconds)</td></tr>\n<tr class=\"separator:aed08536c986b97456efe1587d99b6a5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63d317175b82f3c61de3ea64f41ed758\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63d317175b82f3c61de3ea64f41ed758\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishBundleFeatureTracks</b> (const FrameBundlePtr frames_ref, const FrameBundlePtr frames_cur, int64_t timestamp)</td></tr>\n<tr class=\"separator:a63d317175b82f3c61de3ea64f41ed758\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a921d6c6e3320c5c9f3bfdc1acbc2b850\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a921d6c6e3320c5c9f3bfdc1acbc2b850\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishFeatureTracks</b> (const Keypoints &amp;px_ref, const Keypoints &amp;px_cur, const std::vector&lt; std::pair&lt; size_t, size_t &gt;&gt; &amp;matches_ref_cur, const ImgPyr &amp;img_pyr, const Level &amp;level, const uint64_t timestamp, const size_t frame_index)</td></tr>\n<tr class=\"separator:a921d6c6e3320c5c9f3bfdc1acbc2b850\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af80a248694ebb3ef14ba5fde0386125b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af80a248694ebb3ef14ba5fde0386125b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeHexacopter</b> (const Transformation &amp;T_frame_world, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:af80a248694ebb3ef14ba5fde0386125b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c7d2ce8f614c258b102d2e157fdd542\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c7d2ce8f614c258b102d2e157fdd542\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeQuadrocopter</b> (const Transformation &amp;T_frame_world, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:a2c7d2ce8f614c258b102d2e157fdd542\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeef708b9750ebffee3b632fcefc452f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aeef708b9750ebffee3b632fcefc452f0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeMarkers</b> (const FrameBundlePtr &amp;frame_bundle, const std::vector&lt; FramePtr &gt; &amp;close_kfs, const MapPtr &amp;map)</td></tr>\n<tr class=\"separator:aeef708b9750ebffee3b632fcefc452f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a707b8a6b70b60bb3e84d8970355ece27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a707b8a6b70b60bb3e84d8970355ece27\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishTrajectoryPoint</b> (const Eigen::Vector3d &amp;pos_in_vision, const uint64_t timestamp, const int id)</td></tr>\n<tr class=\"separator:a707b8a6b70b60bb3e84d8970355ece27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4aaa0daf2fb00074d023885d978d5043\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4aaa0daf2fb00074d023885d978d5043\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeMarkersWithUncertainty</b> (const FramePtr &amp;frame, const std::vector&lt; FramePtr &gt; &amp;close_kfs, const MapPtr &amp;map, const float sigma_threshold)</td></tr>\n<tr class=\"separator:a4aaa0daf2fb00074d023885d978d5043\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a022167319f6f4227803a2cc6275c27a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a022167319f6f4227803a2cc6275c27a0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishSeedsBinary</b> (const MapPtr &amp;map, const float sigma_threshold)</td></tr>\n<tr class=\"separator:a022167319f6f4227803a2cc6275c27a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a487bb7e510ec17eff30eb9ba8101b760\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a487bb7e510ec17eff30eb9ba8101b760\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishSeeds</b> (const MapPtr &amp;map)</td></tr>\n<tr class=\"separator:a487bb7e510ec17eff30eb9ba8101b760\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3899275f4d6031c84fe615052f2cf4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3899275f4d6031c84fe615052f2cf4e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishSeedsAsPointcloud</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;frame, bool only_converged_seeds, bool reset_pc_before_publishing=true)</td></tr>\n<tr class=\"separator:aa3899275f4d6031c84fe615052f2cf4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac95293b5a8f97a969ea3ecf36c89678a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac95293b5a8f97a969ea3ecf36c89678a\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishVelocity</b> (const Eigen::Vector3d &amp;velocity_imu, const uint64_t timestamp)</td></tr>\n<tr class=\"separator:ac95293b5a8f97a969ea3ecf36c89678a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92a9469bbe8766d12c7f1d93d1e0999c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a92a9469bbe8766d12c7f1d93d1e0999c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishMapRegion</b> (const std::vector&lt; FramePtr &gt; &amp;frames)</td></tr>\n<tr class=\"separator:a92a9469bbe8766d12c7f1d93d1e0999c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b2aef657b8163f0f0d0b7432d1b7dc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b2aef657b8163f0f0d0b7432d1b7dc9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishKeyframeWithPoints</b> (const FramePtr &amp;frame, const uint64_t timestamp, const double marker_scale=0.05)</td></tr>\n<tr class=\"separator:a7b2aef657b8163f0f0d0b7432d1b7dc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4803cca083b03cec30119d1f91514a0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4803cca083b03cec30119d1f91514a0e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishLoopClosure</b> (const FramePtr &amp;query, const FramePtr &amp;match, const Transformation &amp;T_match_query)</td></tr>\n<tr class=\"separator:a4803cca083b03cec30119d1f91514a0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96e78b07d57746ae524697fad91c1d8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a96e78b07d57746ae524697fad91c1d8c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>exportToDense</b> (const FrameBundlePtr &amp;frame_bundle)</td></tr>\n<tr class=\"separator:a96e78b07d57746ae524697fad91c1d8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5854b71f335a91c6562501d11480e9f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5854b71f335a91c6562501d11480e9f9\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishSeedsUncertainty</b> (const MapPtr &amp;map)</td></tr>\n<tr class=\"separator:a5854b71f335a91c6562501d11480e9f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b1406f242fa00d70d5536c9e284a5b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b1406f242fa00d70d5536c9e284a5b7\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeCoordinateFrames</b> (const Transformation &amp;T_world_cam)</td></tr>\n<tr class=\"separator:a3b1406f242fa00d70d5536c9e284a5b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af372f4f5d2b728fac9a7989c91e68ab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af372f4f5d2b728fac9a7989c91e68ab8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publishLoopClosureInfo</b> (const std::vector&lt; Eigen::Matrix&lt; float, 1, 6 &gt;, Eigen::aligned_allocator&lt; Eigen::Matrix&lt; float, 1, 6 &gt; &gt; &gt; &amp;loop_closure_data)</td></tr>\n<tr class=\"separator:af372f4f5d2b728fac9a7989c91e68ab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3b7368728d2b050b359688d4df030167\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b7368728d2b050b359688d4df030167\"></a>\nconst std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kWorldFrame</b> = &quot;world&quot;</td></tr>\n<tr class=\"separator:a3b7368728d2b050b359688d4df030167\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4e5cf1cedb5ae19cae3e7d7ce109327\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae4e5cf1cedb5ae19cae3e7d7ce109327\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pnh_</b></td></tr>\n<tr class=\"separator:ae4e5cf1cedb5ae19cae3e7d7ce109327\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11be0d4089fec2120cfdcf8bc81f272d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a11be0d4089fec2120cfdcf8bc81f272d\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_id_</b> = 0</td></tr>\n<tr class=\"separator:a11be0d4089fec2120cfdcf8bc81f272d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26f255b7362623a4aaddfd3258d6ef44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a26f255b7362623a4aaddfd3258d6ef44\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_dir_</b></td></tr>\n<tr class=\"separator:a26f255b7362623a4aaddfd3258d6ef44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a156ef18839f432640bb46cfe97502200\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a156ef18839f432640bb46cfe97502200\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_pub_level_</b></td></tr>\n<tr class=\"separator:a156ef18839f432640bb46cfe97502200\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e92fb7fac15290132bb80575825200d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e92fb7fac15290132bb80575825200d\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_pub_nth_</b></td></tr>\n<tr class=\"separator:a0e92fb7fac15290132bb80575825200d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0ad781b8f1903a74233f05e270014a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0ad781b8f1903a74233f05e270014a5\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>dense_pub_nth_</b></td></tr>\n<tr class=\"separator:ad0ad781b8f1903a74233f05e270014a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a38d819608b371aef68b0519f201050\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a38d819608b371aef68b0519f201050\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_frames_</b></td></tr>\n<tr class=\"separator:a8a38d819608b371aef68b0519f201050\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a626433ac5369f2c84a331d169b9ab8b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a626433ac5369f2c84a331d169b9ab8b5\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_points_</b></td></tr>\n<tr class=\"separator:a626433ac5369f2c84a331d169b9ab8b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9051e10ac9543227b657a4b295453810\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9051e10ac9543227b657a4b295453810\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_imu_pose_</b></td></tr>\n<tr class=\"separator:a9051e10ac9543227b657a4b295453810\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0454ef1306917977c582594e49042439\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0454ef1306917977c582594e49042439\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_info_</b></td></tr>\n<tr class=\"separator:a0454ef1306917977c582594e49042439\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a747be1bb57e5c915c0cd18b9222b04e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a747be1bb57e5c915c0cd18b9222b04e7\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_markers_</b></td></tr>\n<tr class=\"separator:a747be1bb57e5c915c0cd18b9222b04e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688345b33e1d9d80d664c51d859499f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a688345b33e1d9d80d664c51d859499f5\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_pc_</b></td></tr>\n<tr class=\"separator:a688345b33e1d9d80d664c51d859499f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a377c40a48d0e6f707478e3ac0366419b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a377c40a48d0e6f707478e3ac0366419b\"></a>\nPointCloud::Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pc_</b></td></tr>\n<tr class=\"separator:a377c40a48d0e6f707478e3ac0366419b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7733836a6976ea631440afbf97cbea3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7733836a6976ea631440afbf97cbea3a\"></a>\nstd::vector&lt; ros::Publisher &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_cam_poses_</b></td></tr>\n<tr class=\"separator:a7733836a6976ea631440afbf97cbea3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4afd0a6b26ce98274f1691934179697d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4afd0a6b26ce98274f1691934179697d\"></a>\nstd::vector&lt; ros::Publisher &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_dense_</b></td></tr>\n<tr class=\"separator:a4afd0a6b26ce98274f1691934179697d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56edc6891144aa6661116e068767a66a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a56edc6891144aa6661116e068767a66a\"></a>\nstd::vector&lt; image_transport::Publisher &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_images_</b></td></tr>\n<tr class=\"separator:a56edc6891144aa6661116e068767a66a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a701d9d6f05ce9cae5761a5e82d2148f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a701d9d6f05ce9cae5761a5e82d2148f5\"></a>\nros::Publisher&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>pub_loop_closure_</b></td></tr>\n<tr class=\"separator:a701d9d6f05ce9cae5761a5e82d2148f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb5d9bae4ab8a6cd5ba1f51a6048d5f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abb5d9bae4ab8a6cd5ba1f51a6048d5f7\"></a>\ntf::TransformBroadcaster&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>br_</b></td></tr>\n<tr class=\"separator:abb5d9bae4ab8a6cd5ba1f51a6048d5f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f425b214c95c5bd4269303d7bec531f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f425b214c95c5bd4269303d7bec531f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publish_world_in_cam_frame_</b></td></tr>\n<tr class=\"separator:a5f425b214c95c5bd4269303d7bec531f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9d2c4bcb7469be252753dee6b031ba4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac9d2c4bcb7469be252753dee6b031ba4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publish_map_every_frame_</b></td></tr>\n<tr class=\"separator:ac9d2c4bcb7469be252753dee6b031ba4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88b22924ff43e9ce059657711563df27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88b22924ff43e9ce059657711563df27\"></a>\nros::Duration&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publish_points_display_time_</b></td></tr>\n<tr class=\"separator:a88b22924ff43e9ce059657711563df27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a361897e44c6a4f05818227b6c1686191\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a361897e44c6a4f05818227b6c1686191\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publish_seeds_</b></td></tr>\n<tr class=\"separator:a361897e44c6a4f05818227b6c1686191\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97a0f07b816de44296001ccb6d032e24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a97a0f07b816de44296001ccb6d032e24\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>publish_seeds_uncertainty_</b></td></tr>\n<tr class=\"separator:a97a0f07b816de44296001ccb6d032e24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0d3c6f5e42d88732ad402d1aa58a2ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae0d3c6f5e42d88732ad402d1aa58a2ed\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_pointcloud_</b></td></tr>\n<tr class=\"separator:ae0d3c6f5e42d88732ad402d1aa58a2ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d9365f2ad95a820b7a3cbe89644ade\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae1d9365f2ad95a820b7a3cbe89644ade\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>vis_scale_</b></td></tr>\n<tr class=\"separator:ae1d9365f2ad95a820b7a3cbe89644ade\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a633e4f6b534e444f8f85547117e1aeae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a633e4f6b534e444f8f85547117e1aeae\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ofs_states_</b></td></tr>\n<tr class=\"separator:a633e4f6b534e444f8f85547117e1aeae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1e65a86388a52c9e99e5399188a9b46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1e65a86388a52c9e99e5399188a9b46\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ofs_pointcloud_</b></td></tr>\n<tr class=\"separator:ab1e65a86388a52c9e99e5399188a9b46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Publish visualisation messages to ROS. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"visualizer_8h_source.html\">visualizer.h</a></li>\n<li>svo_ros/src/visualizer.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1Visualizer__coll__graph.md5",
    "content": "5dbaf9796bb56e20c2954d90f8bcb031"
  },
  {
    "path": "docs/classsvo_1_1patch__score_1_1ZMSSD-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>patch_score</b></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">ZMSSD</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>computeScore</b>(uint8_t *cur_patch) const (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>computeScore</b>(uint8_t *cur_patch, int stride) const (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>patch_area_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>patch_size_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ref_patch_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>sumA_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>sumAA_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>threshold</b>() (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>threshold_</b> (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ZMSSD</b>(uint8_t *ref_patch) (defined in <a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo_1_1patch__score_1_1ZMSSD.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>patch_score</b></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">ZMSSD</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classsvo_1_1patch__score_1_1ZMSSD-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Zero Mean Sum of Squared Differences Cost.  \n <a href=\"classsvo_1_1patch__score_1_1ZMSSD.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"patch__score_8h_source.html\">patch_score.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2d9a8f51eebeec29c0bb850789e93606\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d9a8f51eebeec29c0bb850789e93606\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ZMSSD</b> (uint8_t *ref_patch)</td></tr>\n<tr class=\"separator:a2d9a8f51eebeec29c0bb850789e93606\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f049a6e0d12b8356a8b3598a388676c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f049a6e0d12b8356a8b3598a388676c\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>computeScore</b> (uint8_t *cur_patch) const</td></tr>\n<tr class=\"separator:a7f049a6e0d12b8356a8b3598a388676c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a658c43cd407831e5f82870a765beb20c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a658c43cd407831e5f82870a765beb20c\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>computeScore</b> (uint8_t *cur_patch, int stride) const</td></tr>\n<tr class=\"separator:a658c43cd407831e5f82870a765beb20c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:afcfd8e8196e795216547ea73124b9ecc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afcfd8e8196e795216547ea73124b9ecc\"></a>\nstatic int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>threshold</b> ()</td></tr>\n<tr class=\"separator:afcfd8e8196e795216547ea73124b9ecc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5a2a9c5e2716f7b5e975510fe1a13343\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5a2a9c5e2716f7b5e975510fe1a13343\"></a>\nuint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ref_patch_</b></td></tr>\n<tr class=\"separator:a5a2a9c5e2716f7b5e975510fe1a13343\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d1635366ee37f311ee9d8d6832c3d79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d1635366ee37f311ee9d8d6832c3d79\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sumA_</b></td></tr>\n<tr class=\"separator:a1d1635366ee37f311ee9d8d6832c3d79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77647fe7c16627d1232caddf8273656c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77647fe7c16627d1232caddf8273656c\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>sumAA_</b></td></tr>\n<tr class=\"separator:a77647fe7c16627d1232caddf8273656c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:adbbf0f440200ff9a9b3d8a7e3dc1d63c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adbbf0f440200ff9a9b3d8a7e3dc1d63c\"></a>\nstatic const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_size_</b> = 2*HALF_PATCH_SIZE</td></tr>\n<tr class=\"separator:adbbf0f440200ff9a9b3d8a7e3dc1d63c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4b438041faa1d2197aac4ecf2a565fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4b438041faa1d2197aac4ecf2a565fe\"></a>\nstatic const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>patch_area_</b> = patch_size_*patch_size_</td></tr>\n<tr class=\"separator:ab4b438041faa1d2197aac4ecf2a565fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ebf6c5d663e392240dd325600131b1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ebf6c5d663e392240dd325600131b1e\"></a>\nstatic const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>threshold_</b> = 2000*patch_area_</td></tr>\n<tr class=\"separator:a9ebf6c5d663e392240dd325600131b1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><h3>template&lt;int HALF_PATCH_SIZE&gt;<br />\nclass svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</h3>\n\n<p>Zero Mean Sum of Squared Differences Cost. </p>\n</div><hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"matcher_8h_source.html\">matcher.h</a></li>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"patch__score_8h_source.html\">patch_score.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo__ros_1_1SvoNodeBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>svo_ros</b></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">SvoNodeBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_ros::SvoNodeBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>initThirdParty</b>(int argc, char **argv) (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>node_handle_</b> (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>private_node_handle_</b> (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>run</b>() (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>svo_interface_</b> (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SvoNodeBase</b>() (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type_</b> (defined in <a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo__ros_1_1SvoNodeBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros::SvoNodeBase Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>svo_ros</b></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\">SvoNodeBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classsvo__ros_1_1SvoNodeBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo_ros::SvoNodeBase Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo_ros::SvoNodeBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classsvo__ros_1_1SvoNodeBase__coll__graph.png\" border=\"0\" usemap=\"#svo__ros_1_1SvoNodeBase_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo__ros_1_1SvoNodeBase_coll__map\" id=\"svo__ros_1_1SvoNodeBase_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SvoInterface.html\" title=\"SVO Interface. \" alt=\"\" coords=\"23,5,148,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad426654a9dac45201c68a9d135f2cde1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad426654a9dac45201c68a9d135f2cde1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> ()</td></tr>\n<tr class=\"separator:ad426654a9dac45201c68a9d135f2cde1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af0ec278cd6561cd50208e12cc03f2b26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0ec278cd6561cd50208e12cc03f2b26\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initThirdParty</b> (int argc, char **argv)</td></tr>\n<tr class=\"separator:af0ec278cd6561cd50208e12cc03f2b26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abf7040b35f2ade2487c8196f337c08b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf7040b35f2ade2487c8196f337c08b8\"></a>\n<a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>svo_interface_</b></td></tr>\n<tr class=\"separator:abf7040b35f2ade2487c8196f337c08b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a8961407095be0e091193cfc68fbe5e19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8961407095be0e091193cfc68fbe5e19\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>node_handle_</b></td></tr>\n<tr class=\"separator:a8961407095be0e091193cfc68fbe5e19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2f3563de081f7b1fc56f379b69c76da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2f3563de081f7b1fc56f379b69c76da\"></a>\nros::NodeHandle&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>private_node_handle_</b></td></tr>\n<tr class=\"separator:ae2f3563de081f7b1fc56f379b69c76da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa59c286a169e45a1098be1b60a1cec88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa59c286a169e45a1098be1b60a1cec88\"></a>\nsvo::PipelineType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type_</b></td></tr>\n<tr class=\"separator:aa59c286a169e45a1098be1b60a1cec88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"svo__node__base_8h_source.html\">svo_node_base.h</a></li>\n<li>svo_ros/src/svo_node_base.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classsvo__ros_1_1SvoNodeBase__coll__graph.md5",
    "content": "3e9c5efc11ca152b35c1cd6be5a58284"
  },
  {
    "path": "docs/classtrigger__map__expansion_1_1TriggerMapExpansion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>trigger_map_expansion</b></li><li class=\"navelem\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">TriggerMapExpansion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">trigger_map_expansion.TriggerMapExpansion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self) (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_baseline_th</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2\">_BaselineOverDepth</a>(self, pts, t)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717\">_CameraInfoCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a\">_CheckNewMapNeeded</a>(self, event)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_coverage_th</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_dvs_frame_id</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_got_camera_info</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_got_camera_info</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_h</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_K</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_map</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_map_to_skip</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9\">_MapCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61\">_MapVisibility</a>(self, pts)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_rate</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_remote</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79\">_RemoteKeyCallback</a>(self, msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_state</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_t_map</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_tf</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_visibility_th</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_w</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_world_frame_id</b> (defined in <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classtrigger__map__expansion_1_1TriggerMapExpansion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: trigger_map_expansion.TriggerMapExpansion Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>trigger_map_expansion</b></li><li class=\"navelem\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\">TriggerMapExpansion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"#pri-static-attribs\">Static Private Attributes</a> &#124;\n<a href=\"classtrigger__map__expansion_1_1TriggerMapExpansion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">trigger_map_expansion.TriggerMapExpansion Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a37ea0c844dfb68e01e5247b7deb16a96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a37ea0c844dfb68e01e5247b7deb16a96\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self)</td></tr>\n<tr class=\"separator:a37ea0c844dfb68e01e5247b7deb16a96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a7d28797e00fd682ed81d0cd36233f717\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717\">_CameraInfoCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:a7d28797e00fd682ed81d0cd36233f717\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc4f70520fcbbec1944fcc1c28f5ce79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79\">_RemoteKeyCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:adc4f70520fcbbec1944fcc1c28f5ce79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05a264b71a227107361b2aa3ff8fcee9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9\">_MapCallback</a> (self, msg)</td></tr>\n<tr class=\"separator:a05a264b71a227107361b2aa3ff8fcee9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85a5db2ff029f0d3c2d64c9a9f64780a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a\">_CheckNewMapNeeded</a> (self, event)</td></tr>\n<tr class=\"separator:a85a5db2ff029f0d3c2d64c9a9f64780a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af71a8102df1bcef832eb951797bf5b61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61\">_MapVisibility</a> (self, pts)</td></tr>\n<tr class=\"separator:af71a8102df1bcef832eb951797bf5b61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaff9dc85544735920faef3fcc2d15fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2\">_BaselineOverDepth</a> (self, pts, t)</td></tr>\n<tr class=\"separator:aaff9dc85544735920faef3fcc2d15fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a4dc2c0e20e25dbbc8e708dcf6072a444\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4dc2c0e20e25dbbc8e708dcf6072a444\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_rate</b></td></tr>\n<tr class=\"separator:a4dc2c0e20e25dbbc8e708dcf6072a444\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a480e23161198678d7f05ba5b524059\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6a480e23161198678d7f05ba5b524059\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_visibility_th</b></td></tr>\n<tr class=\"separator:a6a480e23161198678d7f05ba5b524059\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad802110325c8a9a5131f5c712b980452\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad802110325c8a9a5131f5c712b980452\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_coverage_th</b></td></tr>\n<tr class=\"separator:ad802110325c8a9a5131f5c712b980452\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f680e23252c9e32185a364b2a032e88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8f680e23252c9e32185a364b2a032e88\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_baseline_th</b></td></tr>\n<tr class=\"separator:a8f680e23252c9e32185a364b2a032e88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0589f0b00d61df93ac63d4ccf62e14fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0589f0b00d61df93ac63d4ccf62e14fc\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_dvs_frame_id</b></td></tr>\n<tr class=\"separator:a0589f0b00d61df93ac63d4ccf62e14fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed34efa6f6bc45b8501f83da7b4d5bed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed34efa6f6bc45b8501f83da7b4d5bed\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_world_frame_id</b></td></tr>\n<tr class=\"separator:aed34efa6f6bc45b8501f83da7b4d5bed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ea1ab0db1f46d9a2bce337699f8ae68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ea1ab0db1f46d9a2bce337699f8ae68\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_map_to_skip</b></td></tr>\n<tr class=\"separator:a9ea1ab0db1f46d9a2bce337699f8ae68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad904a1f359ec7c28242e9a24b7fc4a09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad904a1f359ec7c28242e9a24b7fc4a09\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_w</b></td></tr>\n<tr class=\"separator:ad904a1f359ec7c28242e9a24b7fc4a09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb117418463b70fed2dc770381b7f1bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acb117418463b70fed2dc770381b7f1bd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_h</b></td></tr>\n<tr class=\"separator:acb117418463b70fed2dc770381b7f1bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2f749ff5b625fe2b647d84932a5699f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab2f749ff5b625fe2b647d84932a5699f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_K</b></td></tr>\n<tr class=\"separator:ab2f749ff5b625fe2b647d84932a5699f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c2434e014012e5e399c2b0cc4688dbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6c2434e014012e5e399c2b0cc4688dbd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_remote</b></td></tr>\n<tr class=\"separator:a6c2434e014012e5e399c2b0cc4688dbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab612421517a34e200166363ad3cf19b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab612421517a34e200166363ad3cf19b9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_tf</b></td></tr>\n<tr class=\"separator:ab612421517a34e200166363ad3cf19b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09a52ffba091ba9193cb4321203fb14e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09a52ffba091ba9193cb4321203fb14e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_got_camera_info</b></td></tr>\n<tr class=\"separator:a09a52ffba091ba9193cb4321203fb14e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-static-attribs\"></a>\nStatic Private Attributes</h2></td></tr>\n<tr class=\"memitem:acd23966809a08b08f2d339c7b3ad459f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acd23966809a08b08f2d339c7b3ad459f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_state</b> = WAIT_FOR_MAP</td></tr>\n<tr class=\"separator:acd23966809a08b08f2d339c7b3ad459f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4d2ef5470011e8c51b25144c7048192\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac4d2ef5470011e8c51b25144c7048192\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_map</b> = None</td></tr>\n<tr class=\"separator:ac4d2ef5470011e8c51b25144c7048192\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96bec6af1b72ecdae76aa6d5da121939\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a96bec6af1b72ecdae76aa6d5da121939\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_t_map</b> = None</td></tr>\n<tr class=\"separator:a96bec6af1b72ecdae76aa6d5da121939\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1144711b0ce66334b2aa98fac517583e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1144711b0ce66334b2aa98fac517583e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_got_camera_info</b> = False</td></tr>\n<tr class=\"separator:a1144711b0ce66334b2aa98fac517583e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aaff9dc85544735920faef3fcc2d15fa2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaff9dc85544735920faef3fcc2d15fa2\">&#9670;&nbsp;</a></span>_BaselineOverDepth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._BaselineOverDepth </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>pts</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>t</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Computes the heuristic baseline / average depth\n\n@param pts map point cloud (3d points: 3xN)\n@patam t translation vector between the two poses\n</pre> \n</div>\n</div>\n<a id=\"a7d28797e00fd682ed81d0cd36233f717\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d28797e00fd682ed81d0cd36233f717\">&#9670;&nbsp;</a></span>_CameraInfoCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._CameraInfoCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Update camera calibration once from topic \"camera_info\"\n</pre> \n</div>\n</div>\n<a id=\"a85a5db2ff029f0d3c2d64c9a9f64780a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85a5db2ff029f0d3c2d64c9a9f64780a\">&#9670;&nbsp;</a></span>_CheckNewMapNeeded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._CheckNewMapNeeded </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>event</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Regularly check whether a map update is needed if self._state == CHECKING\nand a map has already been received\n\n@param rospy.Timer event\n\n@see _MapVisibility, _BaselineOverDepth\n</pre> \n</div>\n</div>\n<a id=\"a05a264b71a227107361b2aa3ff8fcee9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05a264b71a227107361b2aa3ff8fcee9\">&#9670;&nbsp;</a></span>_MapCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._MapCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Store last published map\n\n@param msg message containing the last published map\n</pre> \n</div>\n</div>\n<a id=\"af71a8102df1bcef832eb951797bf5b61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af71a8102df1bcef832eb951797bf5b61\">&#9670;&nbsp;</a></span>_MapVisibility()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._MapVisibility </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>pts</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Computes the map visibility as the number of points that are projected\nonto the new frame over the total number of points.\n\n@param pts map points\n\n@return the map visibility\n</pre> \n</div>\n</div>\n<a id=\"adc4f70520fcbbec1944fcc1c28f5ce79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc4f70520fcbbec1944fcc1c28f5ce79\">&#9670;&nbsp;</a></span>_RemoteKeyCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def trigger_map_expansion.TriggerMapExpansion._RemoteKeyCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>msg</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">private</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Listens to enable and disable map expansion commands\ntopic: remote_key\n\n\"disable_map_expansion\" -&gt; does not check whether a map update is needed\n\"enable_map_expansion\" -&gt; checks whether a map update is needed\n\n@param msg remote key message\n</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>dvs_mapping/src/trigger_map_expansion.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1pinhole__camera_1_1PinholeCamera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>pinhole_camera</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">PinholeCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.pinhole_camera.PinholeCamera Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, width, height, fx, fy, cx, cy) (defined in <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f\">back_project</a>(self, px)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>focal_length</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>height</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>principle_point</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e\">project</a>(self, xyz)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>width</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vikit_py.pinhole_camera.PinholeCamera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>pinhole_camera</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\">PinholeCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.pinhole_camera.PinholeCamera Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af88f34e5ccf197977735d975de505445\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af88f34e5ccf197977735d975de505445\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, width, height, fx, fy, cx, cy)</td></tr>\n<tr class=\"separator:af88f34e5ccf197977735d975de505445\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f6c5642703e7e34a1eb9cef0a30633f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f\">back_project</a> (self, px)</td></tr>\n<tr class=\"separator:a5f6c5642703e7e34a1eb9cef0a30633f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10580f558a939cd1ab4247e50107d69e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e\">project</a> (self, xyz)</td></tr>\n<tr class=\"separator:a10580f558a939cd1ab4247e50107d69e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ada6f154763502862c855837e083deebe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ada6f154763502862c855837e083deebe\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>width</b></td></tr>\n<tr class=\"separator:ada6f154763502862c855837e083deebe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d54b7d66b4db46e79ff2b901c37e9e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d54b7d66b4db46e79ff2b901c37e9e8\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>height</b></td></tr>\n<tr class=\"separator:a0d54b7d66b4db46e79ff2b901c37e9e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0734cc5af64a84b8c0597b61dc31c68d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0734cc5af64a84b8c0597b61dc31c68d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>focal_length</b></td></tr>\n<tr class=\"separator:a0734cc5af64a84b8c0597b61dc31c68d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac88c02c43199573f32088f2f6e0c6626\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac88c02c43199573f32088f2f6e0c6626\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>principle_point</b></td></tr>\n<tr class=\"separator:ac88c02c43199573f32088f2f6e0c6626\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><pre class=\"fragment\">Pinhole Camera Model </pre> </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5f6c5642703e7e34a1eb9cef0a30633f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f6c5642703e7e34a1eb9cef0a30633f\">&#9670;&nbsp;</a></span>back_project()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.pinhole_camera.PinholeCamera.back_project </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>px</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Computes the bearing-vector from the pixel measurement. Z-Component is 1</pre> \n</div>\n</div>\n<a id=\"a10580f558a939cd1ab4247e50107d69e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10580f558a939cd1ab4247e50107d69e\">&#9670;&nbsp;</a></span>project()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.pinhole_camera.PinholeCamera.project </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>xyz</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Projects a euclidean point to a 2d image measurement</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_py/src/vikit_py/pinhole_camera.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1ros__node_1_1RosNode-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>ros_node</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">RosNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.ros_node.RosNode Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>__init__</b>(self, package, executable) (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_executable</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_package</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_param_string</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>add_flags</b>(self, flag_dictionary) (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>add_parameters</b>(self, namespace, parameter_dictionary) (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>clear_all_parameters</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>run</b>(self, parameter_dictionary, namespace='', log_cpu_usage=True, log_cpu_usage_folder='/tmp') (defined in <a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">vikit_py.ros_node.RosNode</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1ros__node_1_1RosNode.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vikit_py.ros_node.RosNode Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>ros_node</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\">RosNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvikit__py_1_1ros__node_1_1RosNode-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.ros_node.RosNode Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a79d0125e9885ad6009ca48a0bb520091\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a79d0125e9885ad6009ca48a0bb520091\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>__init__</b> (self, package, executable)</td></tr>\n<tr class=\"separator:a79d0125e9885ad6009ca48a0bb520091\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d7d7614b54b72bb4f0584be1b7e041e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d7d7614b54b72bb4f0584be1b7e041e\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>add_parameters</b> (self, namespace, parameter_dictionary)</td></tr>\n<tr class=\"separator:a2d7d7614b54b72bb4f0584be1b7e041e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8fe826c5f882b2baacb25fa40d050da6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8fe826c5f882b2baacb25fa40d050da6\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>add_flags</b> (self, flag_dictionary)</td></tr>\n<tr class=\"separator:a8fe826c5f882b2baacb25fa40d050da6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64210a1c5180ccb76ed6f3e950c42d4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64210a1c5180ccb76ed6f3e950c42d4e\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>clear_all_parameters</b> (self)</td></tr>\n<tr class=\"separator:a64210a1c5180ccb76ed6f3e950c42d4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac57827eb147bfd5f811b3fea909c018d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac57827eb147bfd5f811b3fea909c018d\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>run</b> (self, parameter_dictionary, namespace='', log_cpu_usage=True, log_cpu_usage_folder='/tmp')</td></tr>\n<tr class=\"separator:ac57827eb147bfd5f811b3fea909c018d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a73277f5bac2a09fe77bc7d33e6b84e04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a73277f5bac2a09fe77bc7d33e6b84e04\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_package</b></td></tr>\n<tr class=\"separator:a73277f5bac2a09fe77bc7d33e6b84e04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdb3b411a33f3b55f5cffead785bf73f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abdb3b411a33f3b55f5cffead785bf73f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_executable</b></td></tr>\n<tr class=\"separator:abdb3b411a33f3b55f5cffead785bf73f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5a4f5d8e1d6c001f0d5dfa99d1967e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5a4f5d8e1d6c001f0d5dfa99d1967e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_param_string</b></td></tr>\n<tr class=\"separator:a0c5a4f5d8e1d6c001f0d5dfa99d1967e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_py/src/vikit_py/ros_node.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1test__transformations_1_1TestTransformations-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>test_transformations</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">TestTransformations</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.test_transformations.TestTransformations Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>test_axis_angle</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>test_compare_axis_angle</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>test_first_order_rotation</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>test_logmap_so3</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>test_right_jacobian_so3</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>test_S_inv_eulerZYX_body_deriv</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>test_skew</b>(self) (defined in <a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1test__transformations_1_1TestTransformations.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vikit_py.test_transformations.TestTransformations Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>test_transformations</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\">TestTransformations</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvikit__py_1_1test__transformations_1_1TestTransformations-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.test_transformations.TestTransformations Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vikit_py.test_transformations.TestTransformations:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvikit__py_1_1test__transformations_1_1TestTransformations__inherit__graph.png\" border=\"0\" usemap=\"#vikit__py_8test__transformations_8TestTransformations_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vikit_py.test_transformations.TestTransformations:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvikit__py_1_1test__transformations_1_1TestTransformations__coll__graph.png\" border=\"0\" usemap=\"#vikit__py_8test__transformations_8TestTransformations_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a63f7ed8b5d858380c4ece10589680d30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63f7ed8b5d858380c4ece10589680d30\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_skew</b> (self)</td></tr>\n<tr class=\"separator:a63f7ed8b5d858380c4ece10589680d30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6346fa9658bb5ab7bcb34869aa7893c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6346fa9658bb5ab7bcb34869aa7893c9\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_first_order_rotation</b> (self)</td></tr>\n<tr class=\"separator:a6346fa9658bb5ab7bcb34869aa7893c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62153161ea1d2be5fa0b6bc376e05143\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a62153161ea1d2be5fa0b6bc376e05143\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_axis_angle</b> (self)</td></tr>\n<tr class=\"separator:a62153161ea1d2be5fa0b6bc376e05143\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bde8e9858c76b2630d08bf5d0130b60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8bde8e9858c76b2630d08bf5d0130b60\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_compare_axis_angle</b> (self)</td></tr>\n<tr class=\"separator:a8bde8e9858c76b2630d08bf5d0130b60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac098e470cf3d70473448a9755fa5e58a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac098e470cf3d70473448a9755fa5e58a\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_right_jacobian_so3</b> (self)</td></tr>\n<tr class=\"separator:ac098e470cf3d70473448a9755fa5e58a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab31d74b8b6516ce603117a13094d5f97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab31d74b8b6516ce603117a13094d5f97\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_logmap_so3</b> (self)</td></tr>\n<tr class=\"separator:ab31d74b8b6516ce603117a13094d5f97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f5f52ef86d9ff5f26a08155c96f949b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f5f52ef86d9ff5f26a08155c96f949b\"></a>\ndef&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>test_S_inv_eulerZYX_body_deriv</b> (self)</td></tr>\n<tr class=\"separator:a5f5f52ef86d9ff5f26a08155c96f949b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_py/src/vikit_py/test_transformations.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1test__transformations_1_1TestTransformations__coll__graph.md5",
    "content": "984701a103917215a7e1dee52e801184"
  },
  {
    "path": "docs/classvikit__py_1_1test__transformations_1_1TestTransformations__inherit__graph.md5",
    "content": "0ca9b083dbdc790318431a5ce7e0130f"
  },
  {
    "path": "docs/classvikit__py_1_1transformations_1_1Arcball-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>transformations</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">Arcball</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.transformations.Arcball Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f\">__init__</a>(self, initial=None)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_axes</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_axis</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_center</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_constrain</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_qdown</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_qnow</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_qpre</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>_radius</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>_vdown</b> (defined in <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad\">down</a>(self, point)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20\">drag</a>(self, point)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4\">getconstrain</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2\">matrix</a>(self)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c\">next</a>(self, acceleration=0.0)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732\">place</a>(self, center, radius)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7\">setaxes</a>(self, axes)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f\">setconstrain</a>(self, constrain)</td><td class=\"entry\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">vikit_py.transformations.Arcball</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1transformations_1_1Arcball.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vikit_py.transformations.Arcball Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vikit_py</b></li><li class=\"navelem\"><b>transformations</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\">Arcball</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvikit__py_1_1transformations_1_1Arcball-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py.transformations.Arcball Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vikit_py.transformations.Arcball:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvikit__py_1_1transformations_1_1Arcball__inherit__graph.png\" border=\"0\" usemap=\"#vikit__py_8transformations_8Arcball_inherit__map\" alt=\"Inheritance graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vikit_py.transformations.Arcball:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvikit__py_1_1transformations_1_1Arcball__coll__graph.png\" border=\"0\" usemap=\"#vikit__py_8transformations_8Arcball_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7a6d4f87b263638972d77eaa7653026f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f\">__init__</a> (self, initial=None)</td></tr>\n<tr class=\"separator:a7a6d4f87b263638972d77eaa7653026f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6315f97ef8eca783acd2980dc713b732\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732\">place</a> (self, center, radius)</td></tr>\n<tr class=\"separator:a6315f97ef8eca783acd2980dc713b732\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97471dbe6e284e0384cbe7b6c429dac7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7\">setaxes</a> (self, axes)</td></tr>\n<tr class=\"separator:a97471dbe6e284e0384cbe7b6c429dac7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a727e86bb7b1e679eaef005547780922f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f\">setconstrain</a> (self, constrain)</td></tr>\n<tr class=\"separator:a727e86bb7b1e679eaef005547780922f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acecfe604df014ec0928300b2be4286d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4\">getconstrain</a> (self)</td></tr>\n<tr class=\"separator:acecfe604df014ec0928300b2be4286d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fb248ad1336b57da9bb69c788edbfad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad\">down</a> (self, point)</td></tr>\n<tr class=\"separator:a5fb248ad1336b57da9bb69c788edbfad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0be960e525f7e6e59c7066fbad772f20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20\">drag</a> (self, point)</td></tr>\n<tr class=\"separator:a0be960e525f7e6e59c7066fbad772f20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c3505cf87c983ed5e846222b11a896c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c\">next</a> (self, acceleration=0.0)</td></tr>\n<tr class=\"separator:a4c3505cf87c983ed5e846222b11a896c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08e63edc552973ef57d98616305fadf2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">def&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2\">matrix</a> (self)</td></tr>\n<tr class=\"separator:a08e63edc552973ef57d98616305fadf2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a95538c6fb1ae1633560202193744f11a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95538c6fb1ae1633560202193744f11a\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_axis</b></td></tr>\n<tr class=\"separator:a95538c6fb1ae1633560202193744f11a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8b9c021cc8326c5bfff9b62fb872c2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8b9c021cc8326c5bfff9b62fb872c2f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_axes</b></td></tr>\n<tr class=\"separator:aa8b9c021cc8326c5bfff9b62fb872c2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcf36e54348e0fb10e70588a159ff72d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adcf36e54348e0fb10e70588a159ff72d\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_radius</b></td></tr>\n<tr class=\"separator:adcf36e54348e0fb10e70588a159ff72d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a958e891c3a634aa6ac32d1c575a7a430\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a958e891c3a634aa6ac32d1c575a7a430\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_center</b></td></tr>\n<tr class=\"separator:a958e891c3a634aa6ac32d1c575a7a430\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abaa9a210b35b1478e7f080f748754e2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abaa9a210b35b1478e7f080f748754e2a\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_vdown</b></td></tr>\n<tr class=\"separator:abaa9a210b35b1478e7f080f748754e2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af13d3f0bf5c8a7dc8cca4c41b626d555\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af13d3f0bf5c8a7dc8cca4c41b626d555\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_constrain</b></td></tr>\n<tr class=\"separator:af13d3f0bf5c8a7dc8cca4c41b626d555\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add8c5c07bf402ecb36ed32b6353a0f6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"add8c5c07bf402ecb36ed32b6353a0f6e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_qdown</b></td></tr>\n<tr class=\"separator:add8c5c07bf402ecb36ed32b6353a0f6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82bc09b84d4bb3c2d4bc1e7f371464d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82bc09b84d4bb3c2d4bc1e7f371464d5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_qnow</b></td></tr>\n<tr class=\"separator:a82bc09b84d4bb3c2d4bc1e7f371464d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a286a35ded98808349d25094aa65c2cf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a286a35ded98808349d25094aa65c2cf9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>_qpre</b></td></tr>\n<tr class=\"separator:a286a35ded98808349d25094aa65c2cf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><pre class=\"fragment\">Virtual Trackball Control.\n\n&gt;&gt;&gt; ball = Arcball()\n&gt;&gt;&gt; ball = Arcball(initial=numpy.identity(4))\n&gt;&gt;&gt; ball.place([320, 320], 320)\n&gt;&gt;&gt; ball.down([500, 250])\n&gt;&gt;&gt; ball.drag([475, 275])\n&gt;&gt;&gt; R = ball.matrix()\n&gt;&gt;&gt; numpy.allclose(numpy.sum(R), 3.90583455)\nTrue\n&gt;&gt;&gt; ball = Arcball(initial=[0, 0, 0, 1])\n&gt;&gt;&gt; ball.place([320, 320], 320)\n&gt;&gt;&gt; ball.setaxes([1,1,0], [-1, 1, 0])\n&gt;&gt;&gt; ball.setconstrain(True)\n&gt;&gt;&gt; ball.down([400, 200])\n&gt;&gt;&gt; ball.drag([200, 400])\n&gt;&gt;&gt; R = ball.matrix()\n&gt;&gt;&gt; numpy.allclose(numpy.sum(R), 0.2055924)\nTrue\n&gt;&gt;&gt; ball.next()</pre> </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a7a6d4f87b263638972d77eaa7653026f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a6d4f87b263638972d77eaa7653026f\">&#9670;&nbsp;</a></span>__init__()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.__init__ </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>initial</em> = <code>None</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Initialize virtual trackball control.\n\ninitial : quaternion or rotation matrix</pre> \n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5fb248ad1336b57da9bb69c788edbfad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fb248ad1336b57da9bb69c788edbfad\">&#9670;&nbsp;</a></span>down()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.down </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>point</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Set initial cursor window coordinates and pick constrain-axis.</pre> \n</div>\n</div>\n<a id=\"a0be960e525f7e6e59c7066fbad772f20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0be960e525f7e6e59c7066fbad772f20\">&#9670;&nbsp;</a></span>drag()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.drag </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>point</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Update current cursor window coordinates.</pre> \n</div>\n</div>\n<a id=\"acecfe604df014ec0928300b2be4286d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acecfe604df014ec0928300b2be4286d4\">&#9670;&nbsp;</a></span>getconstrain()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.getconstrain </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Return state of constrain to axis mode.</pre> \n</div>\n</div>\n<a id=\"a08e63edc552973ef57d98616305fadf2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08e63edc552973ef57d98616305fadf2\">&#9670;&nbsp;</a></span>matrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.matrix </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Return homogeneous rotation matrix.</pre> \n</div>\n</div>\n<a id=\"a4c3505cf87c983ed5e846222b11a896c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c3505cf87c983ed5e846222b11a896c\">&#9670;&nbsp;</a></span>next()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.next </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>acceleration</em> = <code>0.0</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Continue rotation in direction of last drag.</pre> \n</div>\n</div>\n<a id=\"a6315f97ef8eca783acd2980dc713b732\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6315f97ef8eca783acd2980dc713b732\">&#9670;&nbsp;</a></span>place()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.place </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>center</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>radius</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Place Arcball, e.g. when window size changes.\n\ncenter : sequence[2]\n    Window coordinates of trackball center.\nradius : float\n    Radius of trackball in window coordinates.</pre> \n</div>\n</div>\n<a id=\"a97471dbe6e284e0384cbe7b6c429dac7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97471dbe6e284e0384cbe7b6c429dac7\">&#9670;&nbsp;</a></span>setaxes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.setaxes </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>axes</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Set axes to constrain rotations.</pre> \n</div>\n</div>\n<a id=\"a727e86bb7b1e679eaef005547780922f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a727e86bb7b1e679eaef005547780922f\">&#9670;&nbsp;</a></span>setconstrain()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">def vikit_py.transformations.Arcball.setconstrain </td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>self</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\"><em>constrain</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<pre class=\"fragment\">Set state of constrain to axis mode.</pre> \n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_py/src/vikit_py/transformations.py</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvikit__py_1_1transformations_1_1Arcball__coll__graph.md5",
    "content": "163e5c2f6000d4a1595a9022fbddd8bc"
  },
  {
    "path": "docs/classvikit__py_1_1transformations_1_1Arcball__inherit__graph.md5",
    "content": "451f872e4e095410637672fe97a32808"
  },
  {
    "path": "docs/classvk_1_1PerformanceMonitor-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::PerformanceMonitor Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>addLog</b>(const std::string &amp;name) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>addTimer</b>(const std::string &amp;name) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getTime</b>(const std::string &amp;name) const (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>init</b>(const std::string &amp;trace_name, const std::string &amp;trace_dir) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>log</b>(const std::string &amp;name, double data) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>logs_</b> (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ofs_</b> (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PerformanceMonitor</b>() (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>startTimer</b>(const std::string &amp;name) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stopTimer</b>(const std::string &amp;name) (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timers_</b> (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace</b>() (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_dir_</b> (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>trace_name_</b> (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>traceHeader</b>() (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>writeToFile</b>() (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~PerformanceMonitor</b>() (defined in <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1PerformanceMonitor.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::PerformanceMonitor Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1PerformanceMonitor-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::PerformanceMonitor Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a898e988c4c6ed6b5eb7707490171190d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a898e988c4c6ed6b5eb7707490171190d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init</b> (const std::string &amp;trace_name, const std::string &amp;trace_dir)</td></tr>\n<tr class=\"separator:a898e988c4c6ed6b5eb7707490171190d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e492856d45082b6838bb5f1f564300f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e492856d45082b6838bb5f1f564300f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addTimer</b> (const std::string &amp;name)</td></tr>\n<tr class=\"separator:a0e492856d45082b6838bb5f1f564300f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf8335390b62901bda28b0329b914a25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf8335390b62901bda28b0329b914a25\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>addLog</b> (const std::string &amp;name)</td></tr>\n<tr class=\"separator:abf8335390b62901bda28b0329b914a25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40601d470eb1eaf1f33582b2242aa696\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40601d470eb1eaf1f33582b2242aa696\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>writeToFile</b> ()</td></tr>\n<tr class=\"separator:a40601d470eb1eaf1f33582b2242aa696\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a549bf24d496b077be7637c142a70b6cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a549bf24d496b077be7637c142a70b6cd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startTimer</b> (const std::string &amp;name)</td></tr>\n<tr class=\"separator:a549bf24d496b077be7637c142a70b6cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2349124b2af1268d73112db65a3a43ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2349124b2af1268d73112db65a3a43ad\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stopTimer</b> (const std::string &amp;name)</td></tr>\n<tr class=\"separator:a2349124b2af1268d73112db65a3a43ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae33d878d9121a699ce7ae2c3bdf0fb92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae33d878d9121a699ce7ae2c3bdf0fb92\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getTime</b> (const std::string &amp;name) const</td></tr>\n<tr class=\"separator:ae33d878d9121a699ce7ae2c3bdf0fb92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb7e93e01ae1d2e8e7ae5ea16871fe9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abb7e93e01ae1d2e8e7ae5ea16871fe9e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>log</b> (const std::string &amp;name, double data)</td></tr>\n<tr class=\"separator:abb7e93e01ae1d2e8e7ae5ea16871fe9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a84c868aee0bc40a289f862f103ad38bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a84c868aee0bc40a289f862f103ad38bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace</b> ()</td></tr>\n<tr class=\"separator:a84c868aee0bc40a289f862f103ad38bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a421f047db1a1887d2b98bbd2abade505\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a421f047db1a1887d2b98bbd2abade505\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>traceHeader</b> ()</td></tr>\n<tr class=\"separator:a421f047db1a1887d2b98bbd2abade505\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aae00adcd0d92dac61880e4c3f46b002e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae00adcd0d92dac61880e4c3f46b002e\"></a>\nstd::map&lt; std::string, <a class=\"el\" href=\"classvk_1_1Timer.html\">Timer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timers_</b></td></tr>\n<tr class=\"separator:aae00adcd0d92dac61880e4c3f46b002e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1055b92235638e455fc6f1b83488424c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1055b92235638e455fc6f1b83488424c\"></a>\nstd::map&lt; std::string, <a class=\"el\" href=\"structvk_1_1LogItem.html\">LogItem</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>logs_</b></td></tr>\n<tr class=\"separator:a1055b92235638e455fc6f1b83488424c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c717d68a4d19c696fef9a31ba328eff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c717d68a4d19c696fef9a31ba328eff\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_name_</b></td></tr>\n<tr class=\"separator:a2c717d68a4d19c696fef9a31ba328eff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14e970b291fa6f9bac3afd581ddeaa99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14e970b291fa6f9bac3afd581ddeaa99\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_dir_</b></td></tr>\n<tr class=\"separator:a14e970b291fa6f9bac3afd581ddeaa99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2490184793a84b00c3a996163a1d6954\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2490184793a84b00c3a996163a1d6954\"></a>\nstd::ofstream&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ofs_</b></td></tr>\n<tr class=\"separator:a2490184793a84b00c3a996163a1d6954\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"performance__monitor_8h_source.html\">performance_monitor.h</a></li>\n<li>svo_vikit/vikit_common/src/performance_monitor.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1RingBuffer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::RingBuffer&lt; T &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>arr_</b> (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>arr_size_</b> (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>begin_</b> (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>clear</b>() (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>empty</b>() const (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>end_</b> (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>get</b>(int i) (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getMean</b>() const (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getMedian</b>() (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getSum</b>() const (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>num_elem_</b> (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>push_back</b>(const T &amp;elem) (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>RingBuffer</b>(int size) (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>RingBuffer</b>(int size, const T &amp;initial_value) (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>size</b>() const (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~RingBuffer</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1RingBuffer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::RingBuffer&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1RingBuffer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::RingBuffer&lt; T &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa28850a14de7d8cd90e6344febda4f8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa28850a14de7d8cd90e6344febda4f8c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RingBuffer</b> (int size)</td></tr>\n<tr class=\"separator:aa28850a14de7d8cd90e6344febda4f8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8b340cbd757ec7aa91228a548770619\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8b340cbd757ec7aa91228a548770619\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RingBuffer</b> (int size, const T &amp;initial_value)</td></tr>\n<tr class=\"separator:ad8b340cbd757ec7aa91228a548770619\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac882042be4abab77747200ff71d49a99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac882042be4abab77747200ff71d49a99\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push_back</b> (const T &amp;elem)</td></tr>\n<tr class=\"separator:ac882042be4abab77747200ff71d49a99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a677f5ba3ee9970798c919a9c90ec4045\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a677f5ba3ee9970798c919a9c90ec4045\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>empty</b> () const</td></tr>\n<tr class=\"separator:a677f5ba3ee9970798c919a9c90ec4045\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a026f28a2d9c9e2f1115abe61dfe3bf8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a026f28a2d9c9e2f1115abe61dfe3bf8c\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>clear</b> ()</td></tr>\n<tr class=\"separator:a026f28a2d9c9e2f1115abe61dfe3bf8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a21e87714bbd4f551bba2c3173629f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a21e87714bbd4f551bba2c3173629f5\"></a>\nT&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>get</b> (int i)</td></tr>\n<tr class=\"separator:a8a21e87714bbd4f551bba2c3173629f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6721fd0b4d008a8185e6ebadfd52bb0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6721fd0b4d008a8185e6ebadfd52bb0f\"></a>\nT&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getSum</b> () const</td></tr>\n<tr class=\"separator:a6721fd0b4d008a8185e6ebadfd52bb0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbe3b402a42ab40bb4066a3950aac528\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afbe3b402a42ab40bb4066a3950aac528\"></a>\nT&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getMean</b> () const</td></tr>\n<tr class=\"separator:afbe3b402a42ab40bb4066a3950aac528\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bf50b417921e94da512ea93b4339abb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bf50b417921e94da512ea93b4339abb\"></a>\nT&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getMedian</b> ()</td></tr>\n<tr class=\"separator:a5bf50b417921e94da512ea93b4339abb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a388793b8045cf51fb1077cc63e820e92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a388793b8045cf51fb1077cc63e820e92\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>size</b> () const</td></tr>\n<tr class=\"separator:a388793b8045cf51fb1077cc63e820e92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a995753ce252ece6c20a9445b2a372465\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a995753ce252ece6c20a9445b2a372465\"></a>\nstd::vector&lt; T &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>arr_</b></td></tr>\n<tr class=\"separator:a995753ce252ece6c20a9445b2a372465\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40030aee29ef9213c35cf0ac2413cd36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40030aee29ef9213c35cf0ac2413cd36\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>begin_</b> = 0</td></tr>\n<tr class=\"separator:a40030aee29ef9213c35cf0ac2413cd36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76cc702b2863e202357a9e1d5bea0836\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a76cc702b2863e202357a9e1d5bea0836\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>end_</b> = -1</td></tr>\n<tr class=\"separator:a76cc702b2863e202357a9e1d5bea0836\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b16946a6080220350ff06e40dcfa253\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6b16946a6080220350ff06e40dcfa253\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>num_elem_</b> = 0</td></tr>\n<tr class=\"separator:a6b16946a6080220350ff06e40dcfa253\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a29d7de4ac0b727cae7c175f5642781c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a29d7de4ac0b727cae7c175f5642781c0\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>arr_size_</b></td></tr>\n<tr class=\"separator:a29d7de4ac0b727cae7c175f5642781c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"ringbuffer_8h_source.html\">ringbuffer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1Sample-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1Sample.html\">Sample</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Sample Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>gaussian</b>(double sigma) (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>gen_int</b> (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>gen_real</b> (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>randomDirection2D</b>() (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>randomDirection3D</b>() (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>setTimeBasedSeed</b>() (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>uniform</b>(int from, int to) (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>uniform</b>() (defined in <a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Sample.html\">vk::Sample</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1Sample.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::Sample Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1Sample.html\">Sample</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"classvk_1_1Sample-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Sample Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a340e7aeca723e4f205678eb7d1fa8167\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a340e7aeca723e4f205678eb7d1fa8167\"></a>\nstatic void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>setTimeBasedSeed</b> ()</td></tr>\n<tr class=\"separator:a340e7aeca723e4f205678eb7d1fa8167\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e229bea87d80640ba786ca024b93256\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e229bea87d80640ba786ca024b93256\"></a>\nstatic int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uniform</b> (int from, int to)</td></tr>\n<tr class=\"separator:a2e229bea87d80640ba786ca024b93256\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a227e0f56c7a424c1a5114c9c413108f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a227e0f56c7a424c1a5114c9c413108f3\"></a>\nstatic double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uniform</b> ()</td></tr>\n<tr class=\"separator:a227e0f56c7a424c1a5114c9c413108f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0dc6ddaac4fc5089f680f7f56054a05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0dc6ddaac4fc5089f680f7f56054a05\"></a>\nstatic double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>gaussian</b> (double sigma)</td></tr>\n<tr class=\"separator:ad0dc6ddaac4fc5089f680f7f56054a05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a9309fb2f6414425ee988164cebbc4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1a9309fb2f6414425ee988164cebbc4e\"></a>\nstatic Eigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>randomDirection3D</b> ()</td></tr>\n<tr class=\"separator:a1a9309fb2f6414425ee988164cebbc4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf09905d554a83e0df32b0528f0ff8d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf09905d554a83e0df32b0528f0ff8d0\"></a>\nstatic Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>randomDirection2D</b> ()</td></tr>\n<tr class=\"separator:acf09905d554a83e0df32b0528f0ff8d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a754171e72fd56393932e43cba23fff95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a754171e72fd56393932e43cba23fff95\"></a>\nstatic std::ranlux24&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>gen_real</b></td></tr>\n<tr class=\"separator:a754171e72fd56393932e43cba23fff95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4bfc19b2de74ca735c856bf253d8f11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab4bfc19b2de74ca735c856bf253d8f11\"></a>\nstatic std::mt19937&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>gen_int</b></td></tr>\n<tr class=\"separator:ab4bfc19b2de74ca735c856bf253d8f11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"sample_8h_source.html\">sample.h</a></li>\n<li>svo_vikit/vikit_common/src/sample.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1Timer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1Timer.html\">Timer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Timer Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>accumulated_</b> (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Clock</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>duration_</b> (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">getAccumulated</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">getCurrentTime</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">getCurrentTimeStr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">getMilliseconds</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">getTime</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Nanoseconds</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">resume</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Seconds</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>start_time_</b> (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">stop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>TimePoint</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">Timer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1Timer.html\">vk::Timer</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1Timer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::Timer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1Timer.html\">Timer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1Timer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Timer Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a8cdb24b703fdff437f3384f2aed2aa8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8cdb24b703fdff437f3384f2aed2aa8b\"></a>\ntypedef std::chrono::high_resolution_clock&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Clock</b></td></tr>\n<tr class=\"separator:a8cdb24b703fdff437f3384f2aed2aa8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a847a433d86e638cec94d0a45e7d514a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a847a433d86e638cec94d0a45e7d514a0\"></a>\ntypedef std::chrono::time_point&lt; Clock &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>TimePoint</b></td></tr>\n<tr class=\"separator:a847a433d86e638cec94d0a45e7d514a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66c538854432aba9523bb0b89f42869e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a66c538854432aba9523bb0b89f42869e\"></a>\ntypedef std::chrono::nanoseconds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Nanoseconds</b></td></tr>\n<tr class=\"separator:a66c538854432aba9523bb0b89f42869e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab200a2b55e6e143cab94796ffa186633\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab200a2b55e6e143cab94796ffa186633\"></a>\ntypedef std::chrono::seconds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Seconds</b></td></tr>\n<tr class=\"separator:ab200a2b55e6e143cab94796ffa186633\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac4731123877be5bf29b884318124b3d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac4731123877be5bf29b884318124b3d5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">Timer</a> ()</td></tr>\n<tr class=\"memdesc:ac4731123877be5bf29b884318124b3d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The constructor directly starts the timer. <br /></td></tr>\n<tr class=\"separator:ac4731123877be5bf29b884318124b3d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0abae2bd9dce865021b7f4d842fce3cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0abae2bd9dce865021b7f4d842fce3cf\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">start</a> ()</td></tr>\n<tr class=\"memdesc:a0abae2bd9dce865021b7f4d842fce3cf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the timer. <br /></td></tr>\n<tr class=\"separator:a0abae2bd9dce865021b7f4d842fce3cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a937f7ba7ee23d9c6681a2f8f4b13aeb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a937f7ba7ee23d9c6681a2f8f4b13aeb0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">resume</a> ()</td></tr>\n<tr class=\"memdesc:a937f7ba7ee23d9c6681a2f8f4b13aeb0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resumes the timer. Total time can be obtained with <a class=\"el\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\" title=\"Returns duration since the last reset or construction of the timer. \">getAccumulated()</a>. <br /></td></tr>\n<tr class=\"separator:a937f7ba7ee23d9c6681a2f8f4b13aeb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18a64946c4dd5ac2cc022cf87b1dc8c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18a64946c4dd5ac2cc022cf87b1dc8c4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">stop</a> ()</td></tr>\n<tr class=\"memdesc:a18a64946c4dd5ac2cc022cf87b1dc8c4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns duration in seconds. <br /></td></tr>\n<tr class=\"separator:a18a64946c4dd5ac2cc022cf87b1dc8c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65e03ae5233d2416a6e05bbb0043acb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65e03ae5233d2416a6e05bbb0043acb1\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">getTime</a> () const</td></tr>\n<tr class=\"memdesc:a65e03ae5233d2416a6e05bbb0043acb1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns duration of last measurement in seconds. <br /></td></tr>\n<tr class=\"separator:a65e03ae5233d2416a6e05bbb0043acb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4726df50d1bf639e3a388f4384ef859e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4726df50d1bf639e3a388f4384ef859e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">getMilliseconds</a> () const</td></tr>\n<tr class=\"memdesc:a4726df50d1bf639e3a388f4384ef859e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns duration of last measurement in milliseconds. <br /></td></tr>\n<tr class=\"separator:a4726df50d1bf639e3a388f4384ef859e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad99d3f70d31126b6df92efc606510d7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad99d3f70d31126b6df92efc606510d7a\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">getAccumulated</a> () const</td></tr>\n<tr class=\"memdesc:ad99d3f70d31126b6df92efc606510d7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns duration since the last reset or construction of the timer. <br /></td></tr>\n<tr class=\"separator:ad99d3f70d31126b6df92efc606510d7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af67efe108481802c25c2f5bf582b6b4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af67efe108481802c25c2f5bf582b6b4e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">reset</a> ()</td></tr>\n<tr class=\"memdesc:af67efe108481802c25c2f5bf582b6b4e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset the current timer and the accumulated. <br /></td></tr>\n<tr class=\"separator:af67efe108481802c25c2f5bf582b6b4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a164e023e2c064a4a34198c6514062499\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a164e023e2c064a4a34198c6514062499\"></a>\nstatic double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">getCurrentTime</a> ()</td></tr>\n<tr class=\"memdesc:a164e023e2c064a4a34198c6514062499\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get seconds since 1.1.1970. <br /></td></tr>\n<tr class=\"separator:a164e023e2c064a4a34198c6514062499\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdb0f48be68ce003252fc6f75ed9de94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abdb0f48be68ce003252fc6f75ed9de94\"></a>\nstatic std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">getCurrentTimeStr</a> ()</td></tr>\n<tr class=\"memdesc:abdb0f48be68ce003252fc6f75ed9de94\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get a formated string of the current time, hour, minute and second. <br /></td></tr>\n<tr class=\"separator:abdb0f48be68ce003252fc6f75ed9de94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aa6d42effc9f5775f347faf911badfe1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa6d42effc9f5775f347faf911badfe1d\"></a>\nTimePoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>start_time_</b></td></tr>\n<tr class=\"separator:aa6d42effc9f5775f347faf911badfe1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cd83dd335e9728e413fdae5d0e9367b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4cd83dd335e9728e413fdae5d0e9367b\"></a>\nNanoseconds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>duration_</b></td></tr>\n<tr class=\"separator:a4cd83dd335e9728e413fdae5d0e9367b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04ba5ce0fa53cff3d939bfec6d80dc05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a04ba5ce0fa53cff3d939bfec6d80dc05\"></a>\nNanoseconds&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>accumulated_</b></td></tr>\n<tr class=\"separator:a04ba5ce0fa53cff3d939bfec6d80dc05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"timer_8h_source.html\">timer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1UserInputThread-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::UserInputThread Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">acquireUserInput</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">getch</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">getch_</a>(int echo)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">getche</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">getInput</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">initTermios</a>(int echo)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>input_</b> (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>new_terminal_settings_</b> (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>original_terminal_settings_</b> (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">resetTermios</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">stop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>stop_</b> (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>user_input_thread_</b> (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>UserInputThread</b>() (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~UserInputThread</b>() (defined in <a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1UserInputThread.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::UserInputThread Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1UserInputThread-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::UserInputThread Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"user__input__thread_8h_source.html\">user_input_thread.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6fae4286fe70e621c565fb337b41c61f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">getInput</a> ()</td></tr>\n<tr class=\"separator:a6fae4286fe70e621c565fb337b41c61f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e169ae06877a84e56e5229261cc29d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4e169ae06877a84e56e5229261cc29d3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">stop</a> ()</td></tr>\n<tr class=\"memdesc:a4e169ae06877a84e56e5229261cc29d3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop the thread. <br /></td></tr>\n<tr class=\"separator:a4e169ae06877a84e56e5229261cc29d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:acd22f9756e8e36fa950b6983580a24a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acd22f9756e8e36fa950b6983580a24a0\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">acquireUserInput</a> ()</td></tr>\n<tr class=\"memdesc:acd22f9756e8e36fa950b6983580a24a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Main loop that waits for new user input. <br /></td></tr>\n<tr class=\"separator:acd22f9756e8e36fa950b6983580a24a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae76c187a3513b0e72c7c24b55e14f2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae76c187a3513b0e72c7c24b55e14f2d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">initTermios</a> (int echo)</td></tr>\n<tr class=\"memdesc:aae76c187a3513b0e72c7c24b55e14f2d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initialize new terminal i/o settings. <br /></td></tr>\n<tr class=\"separator:aae76c187a3513b0e72c7c24b55e14f2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9605d12c6b8ea4602d1649512d69a08b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9605d12c6b8ea4602d1649512d69a08b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">resetTermios</a> ()</td></tr>\n<tr class=\"memdesc:a9605d12c6b8ea4602d1649512d69a08b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restore old terminal i/o settings. <br /></td></tr>\n<tr class=\"separator:a9605d12c6b8ea4602d1649512d69a08b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2055b14945c756b3b5dd31f7d06cbb99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2055b14945c756b3b5dd31f7d06cbb99\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">getch_</a> (int echo)</td></tr>\n<tr class=\"memdesc:a2055b14945c756b3b5dd31f7d06cbb99\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Read 1 character - echo defines echo mode. <br /></td></tr>\n<tr class=\"separator:a2055b14945c756b3b5dd31f7d06cbb99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0cc1c9c095c70514f4357647401e10e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0cc1c9c095c70514f4357647401e10e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">getch</a> ()</td></tr>\n<tr class=\"memdesc:ad0cc1c9c095c70514f4357647401e10e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Read 1 character without echo. <br /></td></tr>\n<tr class=\"separator:ad0cc1c9c095c70514f4357647401e10e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f5b29025621c1ad30d6de2a64aad67d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f5b29025621c1ad30d6de2a64aad67d\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">getche</a> ()</td></tr>\n<tr class=\"memdesc:a0f5b29025621c1ad30d6de2a64aad67d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Read 1 character with echo. <br /></td></tr>\n<tr class=\"separator:a0f5b29025621c1ad30d6de2a64aad67d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aa9542cec66b06b563a45e448c160b214\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa9542cec66b06b563a45e448c160b214\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>stop_</b></td></tr>\n<tr class=\"separator:aa9542cec66b06b563a45e448c160b214\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a60c0e0a383214c166f301692f27b74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2a60c0e0a383214c166f301692f27b74\"></a>\nstd::thread *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>user_input_thread_</b></td></tr>\n<tr class=\"separator:a2a60c0e0a383214c166f301692f27b74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94f8b9134f873197c3164f13bee237a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a94f8b9134f873197c3164f13bee237a4\"></a>\nchar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>input_</b></td></tr>\n<tr class=\"separator:a94f8b9134f873197c3164f13bee237a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab01b33da6de80ecaf4fe75ea371f7143\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab01b33da6de80ecaf4fe75ea371f7143\"></a>\nstruct termios&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>original_terminal_settings_</b></td></tr>\n<tr class=\"separator:ab01b33da6de80ecaf4fe75ea371f7143\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5058a96876751f2ae72ca471e259350\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad5058a96876751f2ae72ca471e259350\"></a>\nstruct termios old_terminal_settings_&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>new_terminal_settings_</b></td></tr>\n<tr class=\"separator:ad5058a96876751f2ae72ca471e259350\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>A class that starts its own thread and listens to the console input. The console input can then be inquired using the <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">getInput()</a> function. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a6fae4286fe70e621c565fb337b41c61f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fae4286fe70e621c565fb337b41c61f\">&#9670;&nbsp;</a></span>getInput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char vk::UserInputThread::getInput </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Returns the latest acquired user input. Default is set to 0. Once this function is called, the input state is reset to the default. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"user__input__thread_8h_source.html\">user_input_thread.h</a></li>\n<li>svo_vikit/vikit_common/src/user_input_thread.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1AtanDistortion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::AtanDistortion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>AtanDistortion</b>(const double &amp;s) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>AtanDistortion</b>(const Eigen::VectorXd &amp;parameters) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>distort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distort</b>(const Eigen::Vector2d &amp;vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>initializeParameters</b>(const double &amp;s) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>IntrinsicParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>jacobian</b>(const Eigen::Vector2d &amp;) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kRadialDistortionFactor</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>s_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>s_inv_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>tans_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>tans_inv_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>undistort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~AtanDistortion</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">vk::cameras::AtanDistortion</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1AtanDistortion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::AtanDistortion Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\">AtanDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1AtanDistortion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::AtanDistortion Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a9bfe92861e9de13463bdc1de2206d816\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bfe92861e9de13463bdc1de2206d816\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>IntrinsicParameters</b> { <b>kRadialDistortionFactor</b>\n }</td></tr>\n<tr class=\"separator:a9bfe92861e9de13463bdc1de2206d816\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a01b1120a9bd874753bc9a95a7c051083\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01b1120a9bd874753bc9a95a7c051083\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>initializeParameters</b> (const double &amp;s)</td></tr>\n<tr class=\"separator:a01b1120a9bd874753bc9a95a7c051083\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d7d7f75422fe30ae5d7aad003d7f0a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d7d7f75422fe30ae5d7aad003d7f0a7\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AtanDistortion</b> (const double &amp;s)</td></tr>\n<tr class=\"separator:a4d7d7f75422fe30ae5d7aad003d7f0a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe92f4b599e7a04276489df431ddf17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adbe92f4b599e7a04276489df431ddf17\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AtanDistortion</b> (const Eigen::VectorXd &amp;parameters)</td></tr>\n<tr class=\"separator:adbe92f4b599e7a04276489df431ddf17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23a2d0dc8a44bd342a9f241bcc8d48b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a23a2d0dc8a44bd342a9f241bcc8d48b1\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:a23a2d0dc8a44bd342a9f241bcc8d48b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a512cd489b2227522c0b17d2b960e04a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a512cd489b2227522c0b17d2b960e04a2\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (const Eigen::Vector2d &amp;vector) const</td></tr>\n<tr class=\"separator:a512cd489b2227522c0b17d2b960e04a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d2ed427bf2dc4d1ca6dd95a72d73a77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d2ed427bf2dc4d1ca6dd95a72d73a77\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jacobian</b> (const Eigen::Vector2d &amp;) const</td></tr>\n<tr class=\"separator:a9d2ed427bf2dc4d1ca6dd95a72d73a77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e91c065e038c7f78d39c22477224252\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e91c065e038c7f78d39c22477224252\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>undistort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:a3e91c065e038c7f78d39c22477224252\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1293b6b5f7f51dfdfe0b62aff115ec69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1293b6b5f7f51dfdfe0b62aff115ec69\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:a1293b6b5f7f51dfdfe0b62aff115ec69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab1dd13b279fd2629fbb93199007add3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aab1dd13b279fd2629fbb93199007add3\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:aab1dd13b279fd2629fbb93199007add3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abc0096d54c1469523a2e38fc85f0034f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abc0096d54c1469523a2e38fc85f0034f\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>s_</b></td></tr>\n<tr class=\"separator:abc0096d54c1469523a2e38fc85f0034f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9c3e3d68e8d176977d417bcac55bec4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af9c3e3d68e8d176977d417bcac55bec4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>s_inv_</b></td></tr>\n<tr class=\"separator:af9c3e3d68e8d176977d417bcac55bec4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96288a769b5eb5df52de6d51d94925c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a96288a769b5eb5df52de6d51d94925c4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tans_</b></td></tr>\n<tr class=\"separator:a96288a769b5eb5df52de6d51d94925c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f6c53141bcc419999dc1019f53580d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f6c53141bcc419999dc1019f53580d2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>tans_inv_</b></td></tr>\n<tr class=\"separator:a4f6c53141bcc419999dc1019f53580d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"atan__distortion_8h_source.html\">atan_distortion.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::CameraGeometry&lt; Projection &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CameraGeometryBase) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">backProject3</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">vk::cameras::CameraGeometryBase::backProject3</a>(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>camera_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CameraGeometry</b>(const int width, const int height, const projection_t &amp;projection) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a>(const int width, const int height)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>createTestCamera</b>() (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">errorMultiplier</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const override (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">getDistortionParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">getIntrinsicParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>height_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>label_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a>(const std::string &amp;yaml_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a>(const std::string &amp;mask_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mask_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">printParameters</a>(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">project3</a>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projection</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>projection_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projection_t</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a>(const std::string &amp;label)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a>(const cv::Mat &amp;mask)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Type</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>width_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~CameraGeometry</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~CameraGeometryBase</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::CameraGeometry&lt; Projection &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1CameraGeometry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::CameraGeometry&lt; Projection &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::cameras::CameraGeometry&lt; Projection &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1CameraGeometry__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_inherit__map\" id=\"vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,5,240,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::cameras::CameraGeometry&lt; Projection &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1CameraGeometry__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_coll__map\" id=\"vk_1_1cameras_1_1CameraGeometry_3_01Projection_01_4_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,5,240,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2deeccd3b0a60c5271e112781d5d96e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2deeccd3b0a60c5271e112781d5d96e9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraGeometry</b> (const int width, const int height, const projection_t &amp;projection)</td></tr>\n<tr class=\"separator:a2deeccd3b0a60c5271e112781d5d96e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c002abe3ce8c39d72c6bd174882cdec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td></tr>\n<tr class=\"separator:a4c002abe3ce8c39d72c6bd174882cdec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3acada201195ada920c4a9df98e02c34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3acada201195ada920c4a9df98e02c34\"></a>\nvirtual const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">project3</a> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td></tr>\n<tr class=\"memdesc:a3acada201195ada920c4a9df98e02c34\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. <br /></td></tr>\n<tr class=\"separator:a3acada201195ada920c4a9df98e02c34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed1cc99646623ce62b54b280ad1cf90e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed1cc99646623ce62b54b280ad1cf90e\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">printParameters</a> (std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td></tr>\n<tr class=\"memdesc:aed1cc99646623ce62b54b280ad1cf90e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print camera info. <br /></td></tr>\n<tr class=\"separator:aed1cc99646623ce62b54b280ad1cf90e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a831fccee5ea8e720b90d1044338533d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a831fccee5ea8e720b90d1044338533d4\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">getIntrinsicParameters</a> () const override</td></tr>\n<tr class=\"memdesc:a831fccee5ea8e720b90d1044338533d4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Intrinsic parameters from camera. <br /></td></tr>\n<tr class=\"separator:a831fccee5ea8e720b90d1044338533d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae571c6775c2a5ded9ec8e3b702c36e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae571c6775c2a5ded9ec8e3b702c36e6\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">getDistortionParameters</a> () const override</td></tr>\n<tr class=\"memdesc:aae571c6775c2a5ded9ec8e3b702c36e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Distortion parameters from camera. <br /></td></tr>\n<tr class=\"separator:aae571c6775c2a5ded9ec8e3b702c36e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adba5d477ee438ddb370716e5f9acdaec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">errorMultiplier</a> () const override</td></tr>\n<tr class=\"separator:adba5d477ee438ddb370716e5f9acdaec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bd93798bab1f09b91e41e6beda0f843\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bd93798bab1f09b91e41e6beda0f843\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const override</td></tr>\n<tr class=\"separator:a9bd93798bab1f09b91e41e6beda0f843\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2361435a40c14e6298637320f5f6ab7\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"ac2361435a40c14e6298637320f5f6ab7\"></a>\ntemplate&lt;typename T  = Projection&gt; </td></tr>\n<tr class=\"memitem:ac2361435a40c14e6298637320f5f6ab7\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">const T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>projection</b> () const</td></tr>\n<tr class=\"separator:ac2361435a40c14e6298637320f5f6ab7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd4108b4f6790798d3eab9f83a048c5e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>)</td></tr>\n<tr class=\"separator:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad6c928f432ff85e3cfe086b31a7d916e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a> (const int width, const int height)</td></tr>\n<tr class=\"memdesc:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td></tr>\n<tr class=\"separator:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b17bf9ed137aebb4f70d334495698a7\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a> () const</td></tr>\n<tr class=\"memdesc:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CameraType value representing the camera model used by the derived class. <br /></td></tr>\n<tr class=\"separator:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a70c7addad3da7445ac2afa7d324147\"></a>\nconst std::string &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a> () const</td></tr>\n<tr class=\"memdesc:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Name of the camera. <br /></td></tr>\n<tr class=\"separator:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48d2fc2c432f29028d89812668e75cfd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a> (const std::string &amp;label)</td></tr>\n<tr class=\"memdesc:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set user-specific camera label. <br /></td></tr>\n<tr class=\"separator:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8602711f9d4c4b7187ba04d1d5678177\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a> () const</td></tr>\n<tr class=\"memdesc:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image width in pixels. <br /></td></tr>\n<tr class=\"separator:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a768d756f986912c68676d516d3dea18c\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a> () const</td></tr>\n<tr class=\"memdesc:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image height in pixels. <br /></td></tr>\n<tr class=\"separator:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"add6f222399cd18fefaeee4c1767868e4\"></a>\ntemplate&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return if a given keypoint is inside the imaging box of the camera. <br /></td></tr>\n<tr class=\"separator:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td></tr>\n<tr class=\"separator:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a> (const cv::Mat &amp;mask)</td></tr>\n<tr class=\"separator:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae80baaad39fc665e8042a7e9eb0a84e0\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the mask. <br /></td></tr>\n<tr class=\"separator:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47408e0e4133a22f37eb406f07f552ed\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a> ()</td></tr>\n<tr class=\"memdesc:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clear the mask. <br /></td></tr>\n<tr class=\"separator:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2444ecb4b20bfe69d6372a38c94d3f16\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a> () const</td></tr>\n<tr class=\"memdesc:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Does the camera have a mask? <br /></td></tr>\n<tr class=\"separator:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0215932e0f6f88923069368f2ba16bfc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a> (const std::string &amp;mask_file)</td></tr>\n<tr class=\"memdesc:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load from file <br /></td></tr>\n<tr class=\"separator:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af75364888adf0cb4e4f907cf58833f8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if the keypoint is masked. <br /></td></tr>\n<tr class=\"separator:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c4b95b4978f697ade3c088ee2d4371f\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a> () const</td></tr>\n<tr class=\"memdesc:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a random non-masked keypoint. <br /></td></tr>\n<tr class=\"separator:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af68b582b8c7d5e1d2d9be6b35284fd73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af68b582b8c7d5e1d2d9be6b35284fd73\"></a>\nstatic std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>&lt; Projection &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createTestCamera</b> ()</td></tr>\n<tr class=\"separator:af68b582b8c7d5e1d2d9be6b35284fd73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab342b2a8ed0212d5608b38fdab62a858\"></a>\nstatic Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a> (const std::string &amp;yaml_file)</td></tr>\n<tr class=\"memdesc:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. <br /></td></tr>\n<tr class=\"separator:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4f39838f905877fc3c8289e5ff432f3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f39838f905877fc3c8289e5ff432f3c\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Projection&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection_t</b></td></tr>\n<tr class=\"separator:a4f39838f905877fc3c8289e5ff432f3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a3f28fddc83fa95c23be2d07e690cf8bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f28fddc83fa95c23be2d07e690cf8bb\"></a>\nprojection_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection_</b></td></tr>\n<tr class=\"separator:a3f28fddc83fa95c23be2d07e690cf8bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46979a570250f4767b7053245a97902e\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b> { <b>kPinhole</b> = 0, \n<b>kUnifiedProjection</b> = 1, \n<b>kOmni</b> = 2, \n<b>kEqFisheye</b> = 3\n }</td></tr>\n<tr class=\"separator:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a77296a13fab3dffbce403ed0bbc23a\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>width_</b></td></tr>\n<tr class=\"separator:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5604f13058ecade259c9256e9fd1f75b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>height_</b></td></tr>\n<tr class=\"separator:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34af063d84c1f6bfe75a97c4c45af2e5\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>label_</b></td></tr>\n<tr class=\"separator:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace98090e43a8c019bc5754b20cbfa185\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_type_</b></td></tr>\n<tr class=\"separator:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aecb1fc6fddd8b8f7e7bcd5524fa54c87\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mask_</b></td></tr>\n<tr class=\"separator:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a4c002abe3ce8c39d72c6bd174882cdec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c002abe3ce8c39d72c6bd174882cdec\">&#9670;&nbsp;</a></span>backProject3()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename Projection &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a>&lt; Projection &gt;::backProject3 </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>keypoint</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Eigen::Vector3d *&#160;</td>\n          <td class=\"paramname\"><em>out_point_3d</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Computes bearing vector from pixel coordinates. Z-component of the returned bearing vector is 1.0. IMPORTANT: returned vector is NOT of unit length! </p>\n\n<p>Implements <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15\">vk::cameras::CameraGeometryBase</a>.</p>\n\n</div>\n</div>\n<a id=\"adba5d477ee438ddb370716e5f9acdaec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adba5d477ee438ddb370716e5f9acdaec\">&#9670;&nbsp;</a></span>errorMultiplier()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename Projection &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a>&lt; Projection &gt;::errorMultiplier </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Equivalent to focal length for projective cameras and factor for omni-directional cameras that transforms small angular error to pixel-error. </p>\n\n<p>Implements <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0\">vk::cameras::CameraGeometryBase</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"camera__geometry_8h_source.html\">camera_geometry.h</a></li>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/implementation/<a class=\"el\" href=\"camera__geometry_8hpp_source.html\">camera_geometry.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometryBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::CameraGeometryBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CameraGeometryBase) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15\">backProject3</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">backProject3</a>(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>camera_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a>(const int width, const int height)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0\">errorMultiplier</a>() const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const =0 (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d\">getDistortionParameters</a>() const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d\">getIntrinsicParameters</a>() const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>height_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>label_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a>(const std::string &amp;yaml_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a>(const std::string &amp;mask_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mask_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1\">printParameters</a>(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b\">project3</a>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point=nullptr) const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a>(const std::string &amp;label)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a>(const cv::Mat &amp;mask)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Type</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>width_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~CameraGeometryBase</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometryBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::CameraGeometryBase Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1CameraGeometryBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::CameraGeometryBase Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::cameras::CameraGeometryBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1CameraGeometryBase__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1CameraGeometryBase_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1cameras_1_1CameraGeometryBase_inherit__map\" id=\"vk_1_1cameras_1_1CameraGeometryBase_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; EquidistantFisheyeProjection \\&gt;\" alt=\"\" coords=\"288,5,503,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; OmniProjection \\&gt;\" alt=\"\" coords=\"293,71,498,112\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; Projection \\&gt;\" alt=\"\" coords=\"293,136,498,177\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\" title=\"vk::cameras::Equidistant\\lFisheyeGeometry\" alt=\"\" coords=\"563,5,729,47\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\" title=\"vk::cameras::OmniGeometry\" alt=\"\" coords=\"551,78,741,105\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a46979a570250f4767b7053245a97902e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46979a570250f4767b7053245a97902e\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b> { <b>kPinhole</b> = 0, \n<b>kUnifiedProjection</b> = 1, \n<b>kOmni</b> = 2, \n<b>kEqFisheye</b> = 3\n }</td></tr>\n<tr class=\"separator:a46979a570250f4767b7053245a97902e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:abd4108b4f6790798d3eab9f83a048c5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd4108b4f6790798d3eab9f83a048c5e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>)</td></tr>\n<tr class=\"separator:abd4108b4f6790798d3eab9f83a048c5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6c928f432ff85e3cfe086b31a7d916e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad6c928f432ff85e3cfe086b31a7d916e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a> (const int width, const int height)</td></tr>\n<tr class=\"memdesc:ad6c928f432ff85e3cfe086b31a7d916e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:ad6c928f432ff85e3cfe086b31a7d916e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d562135e042ef8d56c496922f352e15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const =0</td></tr>\n<tr class=\"separator:a3d562135e042ef8d56c496922f352e15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13f9a85d500ba4ae624d15cc39976055\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td></tr>\n<tr class=\"separator:a13f9a85d500ba4ae624d15cc39976055\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2bfe46e92c8ea894fdd477a2b1fe13b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2bfe46e92c8ea894fdd477a2b1fe13b\"></a>\nvirtual const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b\">project3</a> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point=nullptr) const =0</td></tr>\n<tr class=\"memdesc:ac2bfe46e92c8ea894fdd477a2b1fe13b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. <br /></td></tr>\n<tr class=\"separator:ac2bfe46e92c8ea894fdd477a2b1fe13b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e312861e462b9f2e29fec1e4e6ff9c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8e312861e462b9f2e29fec1e4e6ff9c1\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1\">printParameters</a> (std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const =0</td></tr>\n<tr class=\"memdesc:a8e312861e462b9f2e29fec1e4e6ff9c1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print camera info. <br /></td></tr>\n<tr class=\"separator:a8e312861e462b9f2e29fec1e4e6ff9c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1a2aab897498c3ba629f4eaffabf2e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0\">errorMultiplier</a> () const =0</td></tr>\n<tr class=\"separator:ab1a2aab897498c3ba629f4eaffabf2e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a2f516a8914343fe366fbbd78e12a3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a2f516a8914343fe366fbbd78e12a3d\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d\">getIntrinsicParameters</a> () const =0</td></tr>\n<tr class=\"memdesc:a3a2f516a8914343fe366fbbd78e12a3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Intrinsic parameters from camera. <br /></td></tr>\n<tr class=\"separator:a3a2f516a8914343fe366fbbd78e12a3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d7cf90ce11c43d113e99b14d495993d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d7cf90ce11c43d113e99b14d495993d\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d\">getDistortionParameters</a> () const =0</td></tr>\n<tr class=\"memdesc:a2d7cf90ce11c43d113e99b14d495993d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Distortion parameters from camera. <br /></td></tr>\n<tr class=\"separator:a2d7cf90ce11c43d113e99b14d495993d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace2252a61a434bc84623bc0d820b423b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace2252a61a434bc84623bc0d820b423b\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const =0</td></tr>\n<tr class=\"separator:ace2252a61a434bc84623bc0d820b423b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b17bf9ed137aebb4f70d334495698a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b17bf9ed137aebb4f70d334495698a7\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a> () const</td></tr>\n<tr class=\"memdesc:a9b17bf9ed137aebb4f70d334495698a7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CameraType value representing the camera model used by the derived class. <br /></td></tr>\n<tr class=\"separator:a9b17bf9ed137aebb4f70d334495698a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a70c7addad3da7445ac2afa7d324147\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a70c7addad3da7445ac2afa7d324147\"></a>\nconst std::string &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a> () const</td></tr>\n<tr class=\"memdesc:a9a70c7addad3da7445ac2afa7d324147\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Name of the camera. <br /></td></tr>\n<tr class=\"separator:a9a70c7addad3da7445ac2afa7d324147\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48d2fc2c432f29028d89812668e75cfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48d2fc2c432f29028d89812668e75cfd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a> (const std::string &amp;label)</td></tr>\n<tr class=\"memdesc:a48d2fc2c432f29028d89812668e75cfd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set user-specific camera label. <br /></td></tr>\n<tr class=\"separator:a48d2fc2c432f29028d89812668e75cfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8602711f9d4c4b7187ba04d1d5678177\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8602711f9d4c4b7187ba04d1d5678177\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a> () const</td></tr>\n<tr class=\"memdesc:a8602711f9d4c4b7187ba04d1d5678177\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image width in pixels. <br /></td></tr>\n<tr class=\"separator:a8602711f9d4c4b7187ba04d1d5678177\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a768d756f986912c68676d516d3dea18c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a768d756f986912c68676d516d3dea18c\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a> () const</td></tr>\n<tr class=\"memdesc:a768d756f986912c68676d516d3dea18c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image height in pixels. <br /></td></tr>\n<tr class=\"separator:a768d756f986912c68676d516d3dea18c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"add6f222399cd18fefaeee4c1767868e4\"></a>\ntemplate&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:add6f222399cd18fefaeee4c1767868e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return if a given keypoint is inside the imaging box of the camera. <br /></td></tr>\n<tr class=\"separator:add6f222399cd18fefaeee4c1767868e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td></tr>\n<tr class=\"separator:ab9a288afa8d7571c4f30f8b071d982ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2031ea3fb1b1bcbf61c82c1dfcbcdd57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a> (const cv::Mat &amp;mask)</td></tr>\n<tr class=\"separator:a2031ea3fb1b1bcbf61c82c1dfcbcdd57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80baaad39fc665e8042a7e9eb0a84e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae80baaad39fc665e8042a7e9eb0a84e0\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:ae80baaad39fc665e8042a7e9eb0a84e0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the mask. <br /></td></tr>\n<tr class=\"separator:ae80baaad39fc665e8042a7e9eb0a84e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47408e0e4133a22f37eb406f07f552ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47408e0e4133a22f37eb406f07f552ed\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a> ()</td></tr>\n<tr class=\"memdesc:a47408e0e4133a22f37eb406f07f552ed\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clear the mask. <br /></td></tr>\n<tr class=\"separator:a47408e0e4133a22f37eb406f07f552ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2444ecb4b20bfe69d6372a38c94d3f16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2444ecb4b20bfe69d6372a38c94d3f16\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a> () const</td></tr>\n<tr class=\"memdesc:a2444ecb4b20bfe69d6372a38c94d3f16\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Does the camera have a mask? <br /></td></tr>\n<tr class=\"separator:a2444ecb4b20bfe69d6372a38c94d3f16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0215932e0f6f88923069368f2ba16bfc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0215932e0f6f88923069368f2ba16bfc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a> (const std::string &amp;mask_file)</td></tr>\n<tr class=\"memdesc:a0215932e0f6f88923069368f2ba16bfc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load from file <br /></td></tr>\n<tr class=\"separator:a0215932e0f6f88923069368f2ba16bfc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af75364888adf0cb4e4f907cf58833f8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af75364888adf0cb4e4f907cf58833f8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:af75364888adf0cb4e4f907cf58833f8a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if the keypoint is masked. <br /></td></tr>\n<tr class=\"separator:af75364888adf0cb4e4f907cf58833f8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4b95b4978f697ade3c088ee2d4371f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c4b95b4978f697ade3c088ee2d4371f\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a> () const</td></tr>\n<tr class=\"memdesc:a7c4b95b4978f697ade3c088ee2d4371f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a random non-masked keypoint. <br /></td></tr>\n<tr class=\"separator:a7c4b95b4978f697ade3c088ee2d4371f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ab342b2a8ed0212d5608b38fdab62a858\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab342b2a8ed0212d5608b38fdab62a858\"></a>\nstatic Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a> (const std::string &amp;yaml_file)</td></tr>\n<tr class=\"memdesc:ab342b2a8ed0212d5608b38fdab62a858\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. <br /></td></tr>\n<tr class=\"separator:ab342b2a8ed0212d5608b38fdab62a858\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a8a77296a13fab3dffbce403ed0bbc23a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a77296a13fab3dffbce403ed0bbc23a\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>width_</b></td></tr>\n<tr class=\"separator:a8a77296a13fab3dffbce403ed0bbc23a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5604f13058ecade259c9256e9fd1f75b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5604f13058ecade259c9256e9fd1f75b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>height_</b></td></tr>\n<tr class=\"separator:a5604f13058ecade259c9256e9fd1f75b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34af063d84c1f6bfe75a97c4c45af2e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34af063d84c1f6bfe75a97c4c45af2e5\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>label_</b></td></tr>\n<tr class=\"separator:a34af063d84c1f6bfe75a97c4c45af2e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace98090e43a8c019bc5754b20cbfa185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace98090e43a8c019bc5754b20cbfa185\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_type_</b></td></tr>\n<tr class=\"separator:ace98090e43a8c019bc5754b20cbfa185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecb1fc6fddd8b8f7e7bcd5524fa54c87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aecb1fc6fddd8b8f7e7bcd5524fa54c87\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mask_</b></td></tr>\n<tr class=\"separator:aecb1fc6fddd8b8f7e7bcd5524fa54c87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3d562135e042ef8d56c496922f352e15\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d562135e042ef8d56c496922f352e15\">&#9670;&nbsp;</a></span>backProject3() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool vk::cameras::CameraGeometryBase::backProject3 </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>keypoint</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Eigen::Vector3d *&#160;</td>\n          <td class=\"paramname\"><em>out_point_3d</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Computes bearing vector from pixel coordinates. Z-component of the returned bearing vector is 1.0. IMPORTANT: returned vector is NOT of unit length! </p>\n\n<p>Implemented in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>, and <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>.</p>\n\n</div>\n</div>\n<a id=\"a13f9a85d500ba4ae624d15cc39976055\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13f9a85d500ba4ae624d15cc39976055\">&#9670;&nbsp;</a></span>backProject3() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void vk::cameras::CameraGeometryBase::backProject3 </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>keypoints</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Eigen::Matrix3Xd *&#160;</td>\n          <td class=\"paramname\"><em>out_bearing_vectors</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; bool &gt; *&#160;</td>\n          <td class=\"paramname\"><em>success</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Override taking multiple keypoints. Derived classes are free to make a vectorized implementation for speedup. </p>\n\n</div>\n</div>\n<a id=\"ab1a2aab897498c3ba629f4eaffabf2e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1a2aab897498c3ba629f4eaffabf2e0\">&#9670;&nbsp;</a></span>errorMultiplier()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual double vk::cameras::CameraGeometryBase::errorMultiplier </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Equivalent to focal length for projective cameras and factor for omni-directional cameras that transforms small angular error to pixel-error. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>, and <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>.</p>\n\n</div>\n</div>\n<a id=\"ab9a288afa8d7571c4f30f8b071d982ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9a288afa8d7571c4f30f8b071d982ce\">&#9670;&nbsp;</a></span>isKeypointVisibleWithMargin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename DerivedKeyPoint &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool vk::cameras::CameraGeometryBase::isKeypointVisibleWithMargin </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>keypoint</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">typename DerivedKeyPoint::Scalar&#160;</td>\n          <td class=\"paramname\"><em>margin</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Return if a given keypoint is within the specified margin to the boundary of the imaging box of the camera. </p>\n\n</div>\n</div>\n<a id=\"a2031ea3fb1b1bcbf61c82c1dfcbcdd57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">&#9670;&nbsp;</a></span>setMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void vk::cameras::CameraGeometryBase::setMask </td>\n          <td>(</td>\n          <td class=\"paramtype\">const cv::Mat &amp;&#160;</td>\n          <td class=\"paramname\"><em>mask</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Set the mask. Masks must be the same size as the image and they follow the same convention as OpenCV: 0 == masked, nonzero == valid. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"camera__geometry__base_8h_source.html\">camera_geometry_base.h</a></li>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/implementation/<a class=\"el\" href=\"camera__geometry__base_8hpp_source.html\">camera_geometry_base.hpp</a></li>\n<li>svo_vikit/vikit_cameras/src/camera_geometry_base.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometryBase__inherit__graph.md5",
    "content": "dcf7acf20046c674597aa6ac7cc4b9d3"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometry__coll__graph.md5",
    "content": "c2f2bbbbf58f004aa5a15812f19150a3"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1CameraGeometry__inherit__graph.md5",
    "content": "728f5ff88c12af956745de1adfea8d74"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantDistortion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantDistortion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>deriv_thetad_from_theta</b>(const double theta) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>distort</b>(const Eigen::Vector2d &amp;vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>DistortionParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EquidistantDistortion</b>(const double k1, const double k2, const double k3, const double k4) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>EquidistantDistortion</b>(const Eigen::VectorXd &amp;parameters) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>jacobian</b>(const Eigen::Vector2d &amp;uv) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>k1_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>k2_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>k3_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>k4_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kRadialDistortionFactor1</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kRadialDistortionFactor2</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kRadialDistortionFactor3</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kRadialDistortionFactor4</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kRThresh</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>thetad_from_theta</b>(const double theta) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>undistort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~EquidistantDistortion</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantDistortion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::EquidistantDistortion Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1EquidistantDistortion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantDistortion Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:af5921c53b1e28bb5335c30b58c228574\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af5921c53b1e28bb5335c30b58c228574\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DistortionParameters</b> { <b>kRadialDistortionFactor1</b>, \n<b>kRadialDistortionFactor2</b>, \n<b>kRadialDistortionFactor3</b>, \n<b>kRadialDistortionFactor4</b>\n }</td></tr>\n<tr class=\"separator:af5921c53b1e28bb5335c30b58c228574\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa7d6ba93f46e2685911da320eb6320bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7d6ba93f46e2685911da320eb6320bf\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EquidistantDistortion</b> (const double k1, const double k2, const double k3, const double k4)</td></tr>\n<tr class=\"separator:aa7d6ba93f46e2685911da320eb6320bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1420fa27fbe907c642e05ee0b5b5b597\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1420fa27fbe907c642e05ee0b5b5b597\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EquidistantDistortion</b> (const Eigen::VectorXd &amp;parameters)</td></tr>\n<tr class=\"separator:a1420fa27fbe907c642e05ee0b5b5b597\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14b4051f9f7ae9ff391a6c6ebb73f7bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14b4051f9f7ae9ff391a6c6ebb73f7bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:a14b4051f9f7ae9ff391a6c6ebb73f7bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a313178ce380122a82c25b067cddc4386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a313178ce380122a82c25b067cddc4386\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (const Eigen::Vector2d &amp;vector) const</td></tr>\n<tr class=\"separator:a313178ce380122a82c25b067cddc4386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0bd41628b4934da22a76ccf879bbbe9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae0bd41628b4934da22a76ccf879bbbe9\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jacobian</b> (const Eigen::Vector2d &amp;uv) const</td></tr>\n<tr class=\"separator:ae0bd41628b4934da22a76ccf879bbbe9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a640e89b2d4baab95b4eaa399c9ba1e4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a640e89b2d4baab95b4eaa399c9ba1e4e\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>undistort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:a640e89b2d4baab95b4eaa399c9ba1e4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2dbd7605e5926bc1ed46a70b807bd753\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2dbd7605e5926bc1ed46a70b807bd753\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:a2dbd7605e5926bc1ed46a70b807bd753\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f0c60d6799d8211983ea12d29f6a5f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f0c60d6799d8211983ea12d29f6a5f9\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:a3f0c60d6799d8211983ea12d29f6a5f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af172f2b8f4f57c463d1e18eb06ace239\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af172f2b8f4f57c463d1e18eb06ace239\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k1_</b> = 0</td></tr>\n<tr class=\"separator:af172f2b8f4f57c463d1e18eb06ace239\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf232de8f5af4df7a335320dd0a9395e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf232de8f5af4df7a335320dd0a9395e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k2_</b> = 0</td></tr>\n<tr class=\"separator:abf232de8f5af4df7a335320dd0a9395e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac45b4ec494e26c36daacab0bda7e1538\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac45b4ec494e26c36daacab0bda7e1538\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k3_</b> = 0</td></tr>\n<tr class=\"separator:ac45b4ec494e26c36daacab0bda7e1538\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af45ac3c4c0b23cef4fca7b4fd461184d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af45ac3c4c0b23cef4fca7b4fd461184d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k4_</b> = 0</td></tr>\n<tr class=\"separator:af45ac3c4c0b23cef4fca7b4fd461184d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:ada623528ee83b392c2b269a8be2ff2d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ada623528ee83b392c2b269a8be2ff2d6\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>thetad_from_theta</b> (const double theta) const</td></tr>\n<tr class=\"separator:ada623528ee83b392c2b269a8be2ff2d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3ce42a56d30153de080eb7284955038\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3ce42a56d30153de080eb7284955038\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>deriv_thetad_from_theta</b> (const double theta) const</td></tr>\n<tr class=\"separator:ac3ce42a56d30153de080eb7284955038\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aa28adb0e1a8cd1b3813d58dd9a0b6cf8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa28adb0e1a8cd1b3813d58dd9a0b6cf8\"></a>\nconst double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kRThresh</b> = 1e-8</td></tr>\n<tr class=\"separator:aa28adb0e1a8cd1b3813d58dd9a0b6cf8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"equidistant__distortion_8h_source.html\">equidistant_distortion.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeGeometry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantFisheyeGeometry Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CameraGeometryBase) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">backProject3</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">vk::cameras::CameraGeometryBase::backProject3</a>(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>camera_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CameraGeometry</b>(const int width, const int height, const projection_t &amp;projection) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a>(const int width, const int height)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>createTestCamera</b>() (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>EquidistantFisheyeGeometry</b>(const int width, const int height, const double focal_length, const Eigen::Vector2d &amp;principal_point, const double radius) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EquidistantFisheyeGeometry</b>(const int width, const int height, const EquidistantFisheyeProjection &amp;projection, const double radius) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">errorMultiplier</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const override (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">getDistortionParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">getIntrinsicParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>height_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>label_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a>(const std::string &amp;yaml_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a>(const std::string &amp;mask_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mask_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">printParameters</a>(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">project3</a>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projection</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>projection_t</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a>(const std::string &amp;label)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a>(const cv::Mat &amp;mask)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Type</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>width_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~CameraGeometry</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~CameraGeometryBase</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~EquidistantFisheyeGeometry</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::EquidistantFisheyeGeometry Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantFisheyeGeometry Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::cameras::EquidistantFisheyeGeometry:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1EquidistantFisheyeGeometry_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1cameras_1_1EquidistantFisheyeGeometry_inherit__map\" id=\"vk_1_1cameras_1_1EquidistantFisheyeGeometry_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; EquidistantFisheyeProjection \\&gt;\" alt=\"\" coords=\"15,80,230,121\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,5,240,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::cameras::EquidistantFisheyeGeometry:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1EquidistantFisheyeGeometry_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1cameras_1_1EquidistantFisheyeGeometry_coll__map\" id=\"vk_1_1cameras_1_1EquidistantFisheyeGeometry_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; EquidistantFisheyeProjection \\&gt;\" alt=\"\" coords=\"127,109,342,151\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,13,240,39\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\" title=\"vk::cameras::Equidistant\\lFisheyeProjection\" alt=\"\" coords=\"263,5,430,47\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2e48b8d579e30a8a5883abab75f34f37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e48b8d579e30a8a5883abab75f34f37\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EquidistantFisheyeGeometry</b> (const int width, const int height, const double focal_length, const Eigen::Vector2d &amp;principal_point, const double radius)</td></tr>\n<tr class=\"separator:a2e48b8d579e30a8a5883abab75f34f37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af696ce93dd5591bcb985ce887d85dc4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af696ce93dd5591bcb985ce887d85dc4c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EquidistantFisheyeGeometry</b> (const int width, const int height, const <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a> &amp;projection, const double radius)</td></tr>\n<tr class=\"separator:af696ce93dd5591bcb985ce887d85dc4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td></tr>\n<tr class=\"memitem:a2deeccd3b0a60c5271e112781d5d96e9 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2deeccd3b0a60c5271e112781d5d96e9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraGeometry</b> (const int width, const int height, const projection_t &amp;projection)</td></tr>\n<tr class=\"separator:a2deeccd3b0a60c5271e112781d5d96e9 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c002abe3ce8c39d72c6bd174882cdec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backProject3</b> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td></tr>\n<tr class=\"separator:a4c002abe3ce8c39d72c6bd174882cdec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3acada201195ada920c4a9df98e02c34\"></a>\nvirtual const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>project3</b> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td></tr>\n<tr class=\"memdesc:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. <br /></td></tr>\n<tr class=\"separator:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed1cc99646623ce62b54b280ad1cf90e\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>printParameters</b> (std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td></tr>\n<tr class=\"memdesc:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print camera info. <br /></td></tr>\n<tr class=\"separator:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a831fccee5ea8e720b90d1044338533d4\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getIntrinsicParameters</b> () const override</td></tr>\n<tr class=\"memdesc:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Intrinsic parameters from camera. <br /></td></tr>\n<tr class=\"separator:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae571c6775c2a5ded9ec8e3b702c36e6\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const override</td></tr>\n<tr class=\"memdesc:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Distortion parameters from camera. <br /></td></tr>\n<tr class=\"separator:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adba5d477ee438ddb370716e5f9acdaec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>errorMultiplier</b> () const override</td></tr>\n<tr class=\"separator:adba5d477ee438ddb370716e5f9acdaec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bd93798bab1f09b91e41e6beda0f843 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bd93798bab1f09b91e41e6beda0f843\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const override</td></tr>\n<tr class=\"separator:a9bd93798bab1f09b91e41e6beda0f843 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2361435a40c14e6298637320f5f6ab7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2361435a40c14e6298637320f5f6ab7\"></a>\nconst T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection</b> () const</td></tr>\n<tr class=\"separator:ac2361435a40c14e6298637320f5f6ab7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd4108b4f6790798d3eab9f83a048c5e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>)</td></tr>\n<tr class=\"separator:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad6c928f432ff85e3cfe086b31a7d916e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a> (const int width, const int height)</td></tr>\n<tr class=\"memdesc:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td></tr>\n<tr class=\"separator:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b17bf9ed137aebb4f70d334495698a7\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a> () const</td></tr>\n<tr class=\"memdesc:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CameraType value representing the camera model used by the derived class. <br /></td></tr>\n<tr class=\"separator:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a70c7addad3da7445ac2afa7d324147\"></a>\nconst std::string &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a> () const</td></tr>\n<tr class=\"memdesc:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Name of the camera. <br /></td></tr>\n<tr class=\"separator:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48d2fc2c432f29028d89812668e75cfd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a> (const std::string &amp;label)</td></tr>\n<tr class=\"memdesc:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set user-specific camera label. <br /></td></tr>\n<tr class=\"separator:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8602711f9d4c4b7187ba04d1d5678177\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a> () const</td></tr>\n<tr class=\"memdesc:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image width in pixels. <br /></td></tr>\n<tr class=\"separator:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a768d756f986912c68676d516d3dea18c\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a> () const</td></tr>\n<tr class=\"memdesc:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image height in pixels. <br /></td></tr>\n<tr class=\"separator:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"add6f222399cd18fefaeee4c1767868e4\"></a>\ntemplate&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return if a given keypoint is inside the imaging box of the camera. <br /></td></tr>\n<tr class=\"separator:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td></tr>\n<tr class=\"separator:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a> (const cv::Mat &amp;mask)</td></tr>\n<tr class=\"separator:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae80baaad39fc665e8042a7e9eb0a84e0\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the mask. <br /></td></tr>\n<tr class=\"separator:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47408e0e4133a22f37eb406f07f552ed\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a> ()</td></tr>\n<tr class=\"memdesc:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clear the mask. <br /></td></tr>\n<tr class=\"separator:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2444ecb4b20bfe69d6372a38c94d3f16\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a> () const</td></tr>\n<tr class=\"memdesc:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Does the camera have a mask? <br /></td></tr>\n<tr class=\"separator:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0215932e0f6f88923069368f2ba16bfc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a> (const std::string &amp;mask_file)</td></tr>\n<tr class=\"memdesc:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load from file <br /></td></tr>\n<tr class=\"separator:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af75364888adf0cb4e4f907cf58833f8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if the keypoint is masked. <br /></td></tr>\n<tr class=\"separator:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c4b95b4978f697ade3c088ee2d4371f\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a> () const</td></tr>\n<tr class=\"memdesc:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a random non-masked keypoint. <br /></td></tr>\n<tr class=\"separator:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46979a570250f4767b7053245a97902e\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b> { <b>kPinhole</b> = 0, \n<b>kUnifiedProjection</b> = 1, \n<b>kOmni</b> = 2, \n<b>kEqFisheye</b> = 3\n }</td></tr>\n<tr class=\"separator:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td></tr>\n<tr class=\"memitem:af68b582b8c7d5e1d2d9be6b35284fd73 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af68b582b8c7d5e1d2d9be6b35284fd73\"></a>\nstatic std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createTestCamera</b> ()</td></tr>\n<tr class=\"separator:af68b582b8c7d5e1d2d9be6b35284fd73 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab342b2a8ed0212d5608b38fdab62a858\"></a>\nstatic Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a> (const std::string &amp;yaml_file)</td></tr>\n<tr class=\"memdesc:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. <br /></td></tr>\n<tr class=\"separator:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td></tr>\n<tr class=\"memitem:a4f39838f905877fc3c8289e5ff432f3c inherit pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f39838f905877fc3c8289e5ff432f3c\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection_t</b></td></tr>\n<tr class=\"separator:a4f39838f905877fc3c8289e5ff432f3c inherit pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a77296a13fab3dffbce403ed0bbc23a\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>width_</b></td></tr>\n<tr class=\"separator:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5604f13058ecade259c9256e9fd1f75b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>height_</b></td></tr>\n<tr class=\"separator:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34af063d84c1f6bfe75a97c4c45af2e5\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>label_</b></td></tr>\n<tr class=\"separator:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace98090e43a8c019bc5754b20cbfa185\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_type_</b></td></tr>\n<tr class=\"separator:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aecb1fc6fddd8b8f7e7bcd5524fa54c87\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mask_</b></td></tr>\n<tr class=\"separator:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"equidistant__fisheye__geometry_8h_source.html\">equidistant_fisheye_geometry.h</a></li>\n<li>svo_vikit/vikit_cameras/src/equidistant_fisheye_geometry.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeGeometry__coll__graph.md5",
    "content": "f9656859f4e4066f6fca924548f119f5"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeGeometry__inherit__graph.md5",
    "content": "5e80b94e5630728c16a00a58c57d0f87"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeProjection-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantFisheyeProjection Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backProject3</b>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_bearing_vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cam_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>EquidistantFisheyeProjection</b>(double focal_length, Eigen::Vector2d principal_point) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>errorMultiplier</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>focal_length_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getIntrinsicParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>IntrinsicParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kFocalLength</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPrincipalPointX</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPrincipalPointY</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>principal_point</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>principal_point_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>project3</b>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1EquidistantFisheyeProjection.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::EquidistantFisheyeProjection Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::EquidistantFisheyeProjection Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a8b3727b3609c19af00af9d57b991276b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8b3727b3609c19af00af9d57b991276b\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>IntrinsicParameters</b> { <b>kFocalLength</b>, \n<b>kPrincipalPointX</b>, \n<b>kPrincipalPointY</b>\n }</td></tr>\n<tr class=\"separator:a8b3727b3609c19af00af9d57b991276b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a55ce435c31059428107913f00bb56a7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55ce435c31059428107913f00bb56a7b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EquidistantFisheyeProjection</b> (double focal_length, Eigen::Vector2d principal_point)</td></tr>\n<tr class=\"separator:a55ce435c31059428107913f00bb56a7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d6734ea97bfc5daa1b649f90964aa9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0d6734ea97bfc5daa1b649f90964aa9b\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backProject3</b> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_bearing_vector) const</td></tr>\n<tr class=\"separator:a0d6734ea97bfc5daa1b649f90964aa9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a663e1fd36edfa1996197cac561738185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a663e1fd36edfa1996197cac561738185\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>project3</b> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const</td></tr>\n<tr class=\"separator:a663e1fd36edfa1996197cac561738185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93b22140d1a26f838f6e3301bb7f4274\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93b22140d1a26f838f6e3301bb7f4274\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>errorMultiplier</b> () const</td></tr>\n<tr class=\"separator:a93b22140d1a26f838f6e3301bb7f4274\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af59c2419a316c43cb6d8ff78e41baad7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af59c2419a316c43cb6d8ff78e41baad7\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const</td></tr>\n<tr class=\"separator:af59c2419a316c43cb6d8ff78e41baad7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c61b2377b88cb960c53178883d3e691\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8c61b2377b88cb960c53178883d3e691\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:a8c61b2377b88cb960c53178883d3e691\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af41aa2e75ce65fe88705f4cb3ab3ebd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af41aa2e75ce65fe88705f4cb3ab3ebd6\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getIntrinsicParameters</b> () const</td></tr>\n<tr class=\"separator:af41aa2e75ce65fe88705f4cb3ab3ebd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5ff1289393a861bfca6b157373a351a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5ff1289393a861bfca6b157373a351a\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:ae5ff1289393a861bfca6b157373a351a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada965ed1f4b6af8416257bce3a95ab10\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ada965ed1f4b6af8416257bce3a95ab10\"></a>\nconst Eigen::Vector2d &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>principal_point</b> () const</td></tr>\n<tr class=\"separator:ada965ed1f4b6af8416257bce3a95ab10\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac077d85622bd2de9ab0c2c61763faa68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac077d85622bd2de9ab0c2c61763faa68\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW const CameraGeometryBase::Type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_type_</b> = CameraGeometryBase::Type::kEqFisheye</td></tr>\n<tr class=\"separator:ac077d85622bd2de9ab0c2c61763faa68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:a4564fb824b3630373545013d39e73cf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4564fb824b3630373545013d39e73cf1\"></a>\nconst double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>focal_length_</b></td></tr>\n<tr class=\"separator:a4564fb824b3630373545013d39e73cf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ef3b2f708e93efc6806db10d41c1f92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ef3b2f708e93efc6806db10d41c1f92\"></a>\nconst Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>principal_point_</b></td></tr>\n<tr class=\"separator:a0ef3b2f708e93efc6806db10d41c1f92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"equidistant__fisheye__projection_8h_source.html\">equidistant_fisheye_projection.h</a></li>\n<li>svo_vikit/vikit_cameras/src/equidistant_fisheye_projection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1NCamera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::NCamera Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(NCamera) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">cameras_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">get_T_C_B</a>(size_t camera_index) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">getCamera</a>(size_t camera_index) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">getCameraShared</a>(size_t camera_index)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a615f3b14f9e3501071481444c4bbf325\">getCameraShared</a>(size_t camera_index) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">getCameraVector</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">getLabel</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">getNumCameras</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">getTransformationVector</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">initInternal</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">label_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">loadFromYaml</a>(const std::string &amp;yaml_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NCamera</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>NCamera</b>(const TransformationVector &amp;T_C_B, const std::vector&lt; std::shared_ptr&lt; Camera &gt;&gt; &amp;cameras, const std::string &amp;label) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NCamera</b>(const NCamera &amp;)=delete (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">numCameras</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const NCamera &amp;)=delete (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">printParameters</a>(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">setLabel</a>(const std::string &amp;label)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">T_C_B_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~NCamera</b>() (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1NCamera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::NCamera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1NCamera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::NCamera Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5c0b5359538574a68638e07b42217fa5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5c0b5359538574a68638e07b42217fa5\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>)</td></tr>\n<tr class=\"separator:a5c0b5359538574a68638e07b42217fa5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a887cbe5109114d336219d6551839eb9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a887cbe5109114d336219d6551839eb9f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NCamera</b> (const TransformationVector &amp;T_C_B, const std::vector&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt;&gt; &amp;cameras, const std::string &amp;label)</td></tr>\n<tr class=\"separator:a887cbe5109114d336219d6551839eb9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbc1274ef3de4649eed8ae52fe169199\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acbc1274ef3de4649eed8ae52fe169199\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>NCamera</b> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a> &amp;)=delete</td></tr>\n<tr class=\"separator:acbc1274ef3de4649eed8ae52fe169199\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c447f635b3a831d874af9efdc1ae416\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9c447f635b3a831d874af9efdc1ae416\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a9c447f635b3a831d874af9efdc1ae416\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad233ea2d278087592f477449c7b15332\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad233ea2d278087592f477449c7b15332\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">getNumCameras</a> () const</td></tr>\n<tr class=\"memdesc:ad233ea2d278087592f477449c7b15332\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the number of cameras. <br /></td></tr>\n<tr class=\"separator:ad233ea2d278087592f477449c7b15332\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a715647d79d0319c7d4bcc4e4ccd05f3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a715647d79d0319c7d4bcc4e4ccd05f3f\"></a>\nconst Transformation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">get_T_C_B</a> (size_t camera_index) const</td></tr>\n<tr class=\"memdesc:a715647d79d0319c7d4bcc4e4ccd05f3f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the pose of body frame with respect to the camera i. <br /></td></tr>\n<tr class=\"separator:a715647d79d0319c7d4bcc4e4ccd05f3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac32ad5bdf9d5867cf21c2fa6bf021d5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac32ad5bdf9d5867cf21c2fa6bf021d5d\"></a>\nconst TransformationVector &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">getTransformationVector</a> () const</td></tr>\n<tr class=\"memdesc:ac32ad5bdf9d5867cf21c2fa6bf021d5d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get all transformations. <br /></td></tr>\n<tr class=\"separator:ac32ad5bdf9d5867cf21c2fa6bf021d5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70cf2f8aeb34093f4fc3dad63405c306\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a70cf2f8aeb34093f4fc3dad63405c306\"></a>\nconst <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">getCamera</a> (size_t camera_index) const</td></tr>\n<tr class=\"memdesc:a70cf2f8aeb34093f4fc3dad63405c306\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the geometry object for camera i. <br /></td></tr>\n<tr class=\"separator:a70cf2f8aeb34093f4fc3dad63405c306\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36057e5cace3259c1f1689381c183a45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36057e5cace3259c1f1689381c183a45\"></a>\nstd::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">getCameraShared</a> (size_t camera_index)</td></tr>\n<tr class=\"memdesc:a36057e5cace3259c1f1689381c183a45\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the geometry object for camera i. <br /></td></tr>\n<tr class=\"separator:a36057e5cace3259c1f1689381c183a45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a615f3b14f9e3501071481444c4bbf325\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a615f3b14f9e3501071481444c4bbf325\"></a>\nstd::shared_ptr&lt; const <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a615f3b14f9e3501071481444c4bbf325\">getCameraShared</a> (size_t camera_index) const</td></tr>\n<tr class=\"memdesc:a615f3b14f9e3501071481444c4bbf325\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the geometry object for camera i. <br /></td></tr>\n<tr class=\"separator:a615f3b14f9e3501071481444c4bbf325\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad3f560613c3d47cdc7ba9d0097d0ba9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aad3f560613c3d47cdc7ba9d0097d0ba9\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">numCameras</a> () const</td></tr>\n<tr class=\"memdesc:aad3f560613c3d47cdc7ba9d0097d0ba9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">How many cameras does this system have? <br /></td></tr>\n<tr class=\"separator:aad3f560613c3d47cdc7ba9d0097d0ba9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a447cfe8121a730f567cfcf41fb913bf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a447cfe8121a730f567cfcf41fb913bf4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">printParameters</a> (std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const</td></tr>\n<tr class=\"memdesc:a447cfe8121a730f567cfcf41fb913bf4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print camera infos. <br /></td></tr>\n<tr class=\"separator:a447cfe8121a730f567cfcf41fb913bf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab82489ff15eb2aa23114566d34c1b47d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab82489ff15eb2aa23114566d34c1b47d\"></a>\nconst std::vector&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt; &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">getCameraVector</a> () const</td></tr>\n<tr class=\"memdesc:ab82489ff15eb2aa23114566d34c1b47d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get all cameras. <br /></td></tr>\n<tr class=\"separator:ab82489ff15eb2aa23114566d34c1b47d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eccedb85ac34cec9eb0e5bb5a31f997\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7eccedb85ac34cec9eb0e5bb5a31f997\"></a>\nconst std::string &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">getLabel</a> () const</td></tr>\n<tr class=\"memdesc:a7eccedb85ac34cec9eb0e5bb5a31f997\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get a label for the camera. <br /></td></tr>\n<tr class=\"separator:a7eccedb85ac34cec9eb0e5bb5a31f997\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a902480d3836876993bc8138a36429815\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a902480d3836876993bc8138a36429815\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">setLabel</a> (const std::string &amp;label)</td></tr>\n<tr class=\"memdesc:a902480d3836876993bc8138a36429815\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set a label for the camera. <br /></td></tr>\n<tr class=\"separator:a902480d3836876993bc8138a36429815\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ad477facc6c06e87b1b33469108e39c93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad477facc6c06e87b1b33469108e39c93\"></a>\nstatic std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">loadFromYaml</a> (const std::string &amp;yaml_file)</td></tr>\n<tr class=\"memdesc:ad477facc6c06e87b1b33469108e39c93\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. <br /></td></tr>\n<tr class=\"separator:ad477facc6c06e87b1b33469108e39c93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a3b2f13ab67e8d2f2ebb9add468b35bc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b2f13ab67e8d2f2ebb9add468b35bc5\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">initInternal</a> ()</td></tr>\n<tr class=\"memdesc:a3b2f13ab67e8d2f2ebb9add468b35bc5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Internal consistency checks and initialization. <br /></td></tr>\n<tr class=\"separator:a3b2f13ab67e8d2f2ebb9add468b35bc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ad40fbb66998063aebdfaf64a705c86df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad40fbb66998063aebdfaf64a705c86df\"></a>\nTransformationVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">T_C_B_</a></td></tr>\n<tr class=\"memdesc:ad40fbb66998063aebdfaf64a705c86df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The mounting transformations. <br /></td></tr>\n<tr class=\"separator:ad40fbb66998063aebdfaf64a705c86df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac820561513d67fdd3ff8833db5a28d27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac820561513d67fdd3ff8833db5a28d27\"></a>\nstd::vector&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">cameras_</a></td></tr>\n<tr class=\"memdesc:ac820561513d67fdd3ff8833db5a28d27\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The camera geometries. <br /></td></tr>\n<tr class=\"separator:ac820561513d67fdd3ff8833db5a28d27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832186f4e9e9599a3c12cdf94bf8dc41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a832186f4e9e9599a3c12cdf94bf8dc41\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">label_</a></td></tr>\n<tr class=\"memdesc:a832186f4e9e9599a3c12cdf94bf8dc41\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A label for this camera rig, a name. <br /></td></tr>\n<tr class=\"separator:a832186f4e9e9599a3c12cdf94bf8dc41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"ncamera_8h_source.html\">ncamera.h</a></li>\n<li>svo_vikit/vikit_cameras/src/ncamera.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1NoDistortion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::NoDistortion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>createTestDistortion</b>() (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distort</b>(double &amp;, double &amp;) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>distort</b>(const Eigen::Vector2d &amp;vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>jacobian</b>(const Eigen::Vector2d &amp;) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NoDistortion</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>undistort</b>(double &amp;, double &amp;) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~NoDistortion</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1NoDistortion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::NoDistortion Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classvk_1_1cameras_1_1NoDistortion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::NoDistortion Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5d54019354a6c6100045d5c47b0b7316\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5d54019354a6c6100045d5c47b0b7316\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (double &amp;, double &amp;) const</td></tr>\n<tr class=\"separator:a5d54019354a6c6100045d5c47b0b7316\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9538cacbc232cb94ff1001511067736d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9538cacbc232cb94ff1001511067736d\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (const Eigen::Vector2d &amp;vector) const</td></tr>\n<tr class=\"separator:a9538cacbc232cb94ff1001511067736d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a698172ce102dbe2e286c9cbd39a7f693\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a698172ce102dbe2e286c9cbd39a7f693\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>jacobian</b> (const Eigen::Vector2d &amp;) const</td></tr>\n<tr class=\"separator:a698172ce102dbe2e286c9cbd39a7f693\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93dc33d57664935f4347b4c2e9300b16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93dc33d57664935f4347b4c2e9300b16\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>undistort</b> (double &amp;, double &amp;) const</td></tr>\n<tr class=\"separator:a93dc33d57664935f4347b4c2e9300b16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9488f52751a6f3b502ccf5cdd3ae185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9488f52751a6f3b502ccf5cdd3ae185\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:ab9488f52751a6f3b502ccf5cdd3ae185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa230a8b2e47687a732f38f67673db5d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa230a8b2e47687a732f38f67673db5d8\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:aa230a8b2e47687a732f38f67673db5d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a34065487278277e8b562a5ae748c9397\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34065487278277e8b562a5ae748c9397\"></a>\nstatic <a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createTestDistortion</b> ()</td></tr>\n<tr class=\"separator:a34065487278277e8b562a5ae748c9397\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"no__distortion_8h_source.html\">no_distortion.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniGeometry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::OmniGeometry Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CameraGeometryBase) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">backProject3</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">vk::cameras::CameraGeometryBase::backProject3</a>(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>camera_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CameraGeometry</b>(const int width, const int height, const projection_t &amp;projection) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a>(const int width, const int height)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>createTestCamera</b>() (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">errorMultiplier</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const override (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">getDistortionParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">getIntrinsicParameters</a>() const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>height_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a>(const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kDontMask</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"><span class=\"mlabel\">private</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kParamNum</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>label_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a>(const std::string &amp;yaml_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a>(const std::string &amp;mask_file)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>mask_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>OmniGeometry</b>(const int width, const int height, const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, 12, 1 &gt; &amp;inverse_polynomial, const Eigen::Vector2d &amp;mask_relative_radii) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>OmniGeometry</b>(const int width, const int height, const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, 12, 1 &gt; &amp;inverse_polynomial) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>OmniGeometry</b>(const int width, const int height, const Eigen::VectorXd &amp;intrinsics) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">printParameters</a>(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">project3</a>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>projection</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>projection_t</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a>(const std::string &amp;label)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a>(const cv::Mat &amp;mask)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Type</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>width_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~CameraGeometry</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~CameraGeometryBase</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~OmniGeometry</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniGeometry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::OmniGeometry Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"#pri-static-attribs\">Static Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1OmniGeometry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::OmniGeometry Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::cameras::OmniGeometry:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1OmniGeometry__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1OmniGeometry_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1cameras_1_1OmniGeometry_inherit__map\" id=\"vk_1_1cameras_1_1OmniGeometry_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; OmniProjection \\&gt;\" alt=\"\" coords=\"20,80,225,121\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,5,240,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::cameras::OmniGeometry:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1cameras_1_1OmniGeometry__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1cameras_1_1OmniGeometry_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1cameras_1_1OmniGeometry_coll__map\" id=\"vk_1_1cameras_1_1OmniGeometry_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; OmniProjection \\&gt;\" alt=\"\" coords=\"139,95,344,136\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,5,240,32\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1cameras_1_1OmniProjection.html\" title=\"vk::cameras::OmniProjection\" alt=\"\" coords=\"265,5,455,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7ff87a7d17848bdcc26f5b03ca51a0f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ff87a7d17848bdcc26f5b03ca51a0f5\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>OmniGeometry</b> (const int width, const int height, const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, 12, 1 &gt; &amp;inverse_polynomial, const Eigen::Vector2d &amp;mask_relative_radii)</td></tr>\n<tr class=\"separator:a7ff87a7d17848bdcc26f5b03ca51a0f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab739aefc9525e0c0919ce6245f68831a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab739aefc9525e0c0919ce6245f68831a\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>OmniGeometry</b> (const int width, const int height, const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, 12, 1 &gt; &amp;inverse_polynomial)</td></tr>\n<tr class=\"separator:ab739aefc9525e0c0919ce6245f68831a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4bd16f6855e240c6d1005f4b6e93a82b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4bd16f6855e240c6d1005f4b6e93a82b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>OmniGeometry</b> (const int width, const int height, const Eigen::VectorXd &amp;intrinsics)</td></tr>\n<tr class=\"separator:a4bd16f6855e240c6d1005f4b6e93a82b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td></tr>\n<tr class=\"memitem:a2deeccd3b0a60c5271e112781d5d96e9 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2deeccd3b0a60c5271e112781d5d96e9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraGeometry</b> (const int width, const int height, const projection_t &amp;projection)</td></tr>\n<tr class=\"separator:a2deeccd3b0a60c5271e112781d5d96e9 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c002abe3ce8c39d72c6bd174882cdec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backProject3</b> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const override</td></tr>\n<tr class=\"separator:a4c002abe3ce8c39d72c6bd174882cdec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3acada201195ada920c4a9df98e02c34\"></a>\nvirtual const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>project3</b> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const override</td></tr>\n<tr class=\"memdesc:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Computes pixel coordinates from bearing vector with Jacobian w.r.t. point. <br /></td></tr>\n<tr class=\"separator:a3acada201195ada920c4a9df98e02c34 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aed1cc99646623ce62b54b280ad1cf90e\"></a>\nvirtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>printParameters</b> (std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const override</td></tr>\n<tr class=\"memdesc:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Print camera info. <br /></td></tr>\n<tr class=\"separator:aed1cc99646623ce62b54b280ad1cf90e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a831fccee5ea8e720b90d1044338533d4\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getIntrinsicParameters</b> () const override</td></tr>\n<tr class=\"memdesc:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Intrinsic parameters from camera. <br /></td></tr>\n<tr class=\"separator:a831fccee5ea8e720b90d1044338533d4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae571c6775c2a5ded9ec8e3b702c36e6\"></a>\nvirtual Eigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const override</td></tr>\n<tr class=\"memdesc:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get Distortion parameters from camera. <br /></td></tr>\n<tr class=\"separator:aae571c6775c2a5ded9ec8e3b702c36e6 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adba5d477ee438ddb370716e5f9acdaec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>errorMultiplier</b> () const override</td></tr>\n<tr class=\"separator:adba5d477ee438ddb370716e5f9acdaec inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bd93798bab1f09b91e41e6beda0f843 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bd93798bab1f09b91e41e6beda0f843\"></a>\nvirtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const override</td></tr>\n<tr class=\"separator:a9bd93798bab1f09b91e41e6beda0f843 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2361435a40c14e6298637320f5f6ab7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac2361435a40c14e6298637320f5f6ab7\"></a>\nconst T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection</b> () const</td></tr>\n<tr class=\"separator:ac2361435a40c14e6298637320f5f6ab7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd4108b4f6790798d3eab9f83a048c5e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">CameraGeometryBase</a>)</td></tr>\n<tr class=\"separator:abd4108b4f6790798d3eab9f83a048c5e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad6c928f432ff85e3cfe086b31a7d916e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">CameraGeometryBase</a> (const int width, const int height)</td></tr>\n<tr class=\"memdesc:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:ad6c928f432ff85e3cfe086b31a7d916e inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055\">backProject3</a> (const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const</td></tr>\n<tr class=\"separator:a13f9a85d500ba4ae624d15cc39976055 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b17bf9ed137aebb4f70d334495698a7\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">getType</a> () const</td></tr>\n<tr class=\"memdesc:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CameraType value representing the camera model used by the derived class. <br /></td></tr>\n<tr class=\"separator:a9b17bf9ed137aebb4f70d334495698a7 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a70c7addad3da7445ac2afa7d324147\"></a>\nconst std::string &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">getLabel</a> () const</td></tr>\n<tr class=\"memdesc:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Name of the camera. <br /></td></tr>\n<tr class=\"separator:a9a70c7addad3da7445ac2afa7d324147 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48d2fc2c432f29028d89812668e75cfd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">setLabel</a> (const std::string &amp;label)</td></tr>\n<tr class=\"memdesc:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set user-specific camera label. <br /></td></tr>\n<tr class=\"separator:a48d2fc2c432f29028d89812668e75cfd inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8602711f9d4c4b7187ba04d1d5678177\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">imageWidth</a> () const</td></tr>\n<tr class=\"memdesc:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image width in pixels. <br /></td></tr>\n<tr class=\"separator:a8602711f9d4c4b7187ba04d1d5678177 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a768d756f986912c68676d516d3dea18c\"></a>\nuint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">imageHeight</a> () const</td></tr>\n<tr class=\"memdesc:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image height in pixels. <br /></td></tr>\n<tr class=\"separator:a768d756f986912c68676d516d3dea18c inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"add6f222399cd18fefaeee4c1767868e4\"></a>\ntemplate&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">isKeypointVisible</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Return if a given keypoint is inside the imaging box of the camera. <br /></td></tr>\n<tr class=\"separator:add6f222399cd18fefaeee4c1767868e4 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename DerivedKeyPoint &gt; </td></tr>\n<tr class=\"memitem:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">isKeypointVisibleWithMargin</a> (const Eigen::MatrixBase&lt; DerivedKeyPoint &gt; &amp;keypoint, typename DerivedKeyPoint::Scalar margin) const</td></tr>\n<tr class=\"separator:ab9a288afa8d7571c4f30f8b071d982ce inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">setMask</a> (const cv::Mat &amp;mask)</td></tr>\n<tr class=\"separator:a2031ea3fb1b1bcbf61c82c1dfcbcdd57 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae80baaad39fc665e8042a7e9eb0a84e0\"></a>\nconst cv::Mat &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">getMask</a> () const</td></tr>\n<tr class=\"memdesc:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the mask. <br /></td></tr>\n<tr class=\"separator:ae80baaad39fc665e8042a7e9eb0a84e0 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47408e0e4133a22f37eb406f07f552ed\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">clearMask</a> ()</td></tr>\n<tr class=\"memdesc:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clear the mask. <br /></td></tr>\n<tr class=\"separator:a47408e0e4133a22f37eb406f07f552ed inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2444ecb4b20bfe69d6372a38c94d3f16\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">hasMask</a> () const</td></tr>\n<tr class=\"memdesc:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Does the camera have a mask? <br /></td></tr>\n<tr class=\"separator:a2444ecb4b20bfe69d6372a38c94d3f16 inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0215932e0f6f88923069368f2ba16bfc\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">loadMask</a> (const std::string &amp;mask_file)</td></tr>\n<tr class=\"memdesc:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">load from file <br /></td></tr>\n<tr class=\"separator:a0215932e0f6f88923069368f2ba16bfc inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af75364888adf0cb4e4f907cf58833f8a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">isMasked</a> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint) const</td></tr>\n<tr class=\"memdesc:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check if the keypoint is masked. <br /></td></tr>\n<tr class=\"separator:af75364888adf0cb4e4f907cf58833f8a inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7c4b95b4978f697ade3c088ee2d4371f\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">createRandomKeypoint</a> () const</td></tr>\n<tr class=\"memdesc:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a random non-masked keypoint. <br /></td></tr>\n<tr class=\"separator:a7c4b95b4978f697ade3c088ee2d4371f inherit pub_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a69c502fc4d819ede97404f16dcaee343\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a69c502fc4d819ede97404f16dcaee343\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW static constexpr size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kParamNum</b> = 24</td></tr>\n<tr class=\"separator:a69c502fc4d819ede97404f16dcaee343\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-static-attribs\"></a>\nStatic Private Attributes</h2></td></tr>\n<tr class=\"memitem:a3616335b9b24d1b308b23d109a446594\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3616335b9b24d1b308b23d109a446594\"></a>\nstatic const Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kDontMask</b> = Eigen::Vector2d::Zero()</td></tr>\n<tr class=\"separator:a3616335b9b24d1b308b23d109a446594\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46979a570250f4767b7053245a97902e\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b> { <b>kPinhole</b> = 0, \n<b>kUnifiedProjection</b> = 1, \n<b>kOmni</b> = 2, \n<b>kEqFisheye</b> = 3\n }</td></tr>\n<tr class=\"separator:a46979a570250f4767b7053245a97902e inherit pub_types_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td></tr>\n<tr class=\"memitem:af68b582b8c7d5e1d2d9be6b35284fd73 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af68b582b8c7d5e1d2d9be6b35284fd73\"></a>\nstatic std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createTestCamera</b> ()</td></tr>\n<tr class=\"separator:af68b582b8c7d5e1d2d9be6b35284fd73 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab342b2a8ed0212d5608b38fdab62a858\"></a>\nstatic Ptr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">loadFromYaml</a> (const std::string &amp;yaml_file)</td></tr>\n<tr class=\"memdesc:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. <br /></td></tr>\n<tr class=\"separator:ab342b2a8ed0212d5608b38fdab62a858 inherit pub_static_methods_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_classvk_1_1cameras_1_1CameraGeometry')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td></tr>\n<tr class=\"memitem:a4f39838f905877fc3c8289e5ff432f3c inherit pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4f39838f905877fc3c8289e5ff432f3c\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>projection_t</b></td></tr>\n<tr class=\"separator:a4f39838f905877fc3c8289e5ff432f3c inherit pub_attribs_classvk_1_1cameras_1_1CameraGeometry\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"memitem:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8a77296a13fab3dffbce403ed0bbc23a\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>width_</b></td></tr>\n<tr class=\"separator:a8a77296a13fab3dffbce403ed0bbc23a inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5604f13058ecade259c9256e9fd1f75b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>height_</b></td></tr>\n<tr class=\"separator:a5604f13058ecade259c9256e9fd1f75b inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34af063d84c1f6bfe75a97c4c45af2e5\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>label_</b></td></tr>\n<tr class=\"separator:a34af063d84c1f6bfe75a97c4c45af2e5 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace98090e43a8c019bc5754b20cbfa185\"></a>\nType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_type_</b></td></tr>\n<tr class=\"separator:ace98090e43a8c019bc5754b20cbfa185 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aecb1fc6fddd8b8f7e7bcd5524fa54c87\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mask_</b></td></tr>\n<tr class=\"separator:aecb1fc6fddd8b8f7e7bcd5524fa54c87 inherit pro_attribs_classvk_1_1cameras_1_1CameraGeometryBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"omni__geometry_8h_source.html\">omni_geometry.h</a></li>\n<li>svo_vikit/vikit_cameras/src/omni_geometry.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniGeometry__coll__graph.md5",
    "content": "3456b5e86b76b49229379ea3ba3d51a3"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniGeometry__inherit__graph.md5",
    "content": "2f317c0b2524c7a429ef6cd0b288b441"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniProjection-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::OmniProjection Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>affine_correction_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>affine_correction_inverse_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backProject3</b>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_bearing_vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cam_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>errorMultiplier</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getIntrinsicParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>IntrinsicParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>inverse_polynomial_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kInversePolynomialOrder</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPolinomial0</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPolinomial1</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPolinomial2</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPolinomial3</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPolinomial4</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPrincipalPointX</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPrincipalPointY</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>OmniProjection</b>(const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, kInversePolynomialOrder, 1 &gt; &amp;inverse_polynomial) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>polynomial_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>principal_point_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>project3</b>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1OmniProjection.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::OmniProjection Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1OmniProjection-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::OmniProjection Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ae8820bd7f8b7fbc15cfa054670476b19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae8820bd7f8b7fbc15cfa054670476b19\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>IntrinsicParameters</b> { <br />\n&#160;&#160;<b>kPolinomial0</b>, \n<b>kPolinomial1</b>, \n<b>kPolinomial2</b>, \n<b>kPolinomial3</b>, \n<br />\n&#160;&#160;<b>kPolinomial4</b>, \n<b>kPrincipalPointX</b>, \n<b>kPrincipalPointY</b>\n<br />\n }</td></tr>\n<tr class=\"separator:ae8820bd7f8b7fbc15cfa054670476b19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a819a602a9b9d1e0f96b67e13da60bc7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a819a602a9b9d1e0f96b67e13da60bc7b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>OmniProjection</b> (const Eigen::Matrix&lt; double, 5, 1 &gt; &amp;polynomial, const Eigen::Vector2d &amp;principal_point, const Eigen::Vector3d &amp;distortion, const Eigen::Matrix&lt; double, kInversePolynomialOrder, 1 &gt; &amp;inverse_polynomial)</td></tr>\n<tr class=\"separator:a819a602a9b9d1e0f96b67e13da60bc7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eb7572f47d2dc153b2b12f5dbd93d76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1eb7572f47d2dc153b2b12f5dbd93d76\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backProject3</b> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_bearing_vector) const</td></tr>\n<tr class=\"separator:a1eb7572f47d2dc153b2b12f5dbd93d76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad416acf9acf96983c7d2df97b83a6825\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad416acf9acf96983c7d2df97b83a6825\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>project3</b> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const</td></tr>\n<tr class=\"separator:ad416acf9acf96983c7d2df97b83a6825\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f4ef56f01401f4554a5d48bb9142745\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2f4ef56f01401f4554a5d48bb9142745\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>errorMultiplier</b> () const</td></tr>\n<tr class=\"separator:a2f4ef56f01401f4554a5d48bb9142745\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5325978a7ba05d10956a4d31e813dbc4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5325978a7ba05d10956a4d31e813dbc4\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const</td></tr>\n<tr class=\"separator:a5325978a7ba05d10956a4d31e813dbc4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cc53653cfe7fde9ef85bd197da50992\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7cc53653cfe7fde9ef85bd197da50992\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:a7cc53653cfe7fde9ef85bd197da50992\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18a722153794ff74dd02367193ee32ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a18a722153794ff74dd02367193ee32ac\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getIntrinsicParameters</b> () const</td></tr>\n<tr class=\"separator:a18a722153794ff74dd02367193ee32ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8519892696e9f4e78b7001bcf0d948c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8519892696e9f4e78b7001bcf0d948c3\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:a8519892696e9f4e78b7001bcf0d948c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a1324be09cd126ea0b2ac5981407d6de4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1324be09cd126ea0b2ac5981407d6de4\"></a>\nconst CameraGeometryBase::Type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_type_</b> = CameraGeometryBase::Type::kOmni</td></tr>\n<tr class=\"separator:a1324be09cd126ea0b2ac5981407d6de4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a8731105d60a7980898c44b635facab15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8731105d60a7980898c44b635facab15\"></a>\nstatic EIGEN_MAKE_ALIGNED_OPERATOR_NEW constexpr int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kInversePolynomialOrder</b> = 12</td></tr>\n<tr class=\"separator:a8731105d60a7980898c44b635facab15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ad8befe7e1e30830119df6a10e2a940e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad8befe7e1e30830119df6a10e2a940e6\"></a>\nconst Eigen::Matrix&lt; double, 5, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>polynomial_</b></td></tr>\n<tr class=\"separator:ad8befe7e1e30830119df6a10e2a940e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1409178f54e67666d7051cc8cd787b28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1409178f54e67666d7051cc8cd787b28\"></a>\nconst Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>principal_point_</b></td></tr>\n<tr class=\"separator:a1409178f54e67666d7051cc8cd787b28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1382b51199284e415d08671a42b2d77c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1382b51199284e415d08671a42b2d77c\"></a>\nconst Eigen::Matrix&lt; double, 12, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>inverse_polynomial_</b></td></tr>\n<tr class=\"separator:a1382b51199284e415d08671a42b2d77c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2eac0dce3f01f6a23365a012ba1266d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2eac0dce3f01f6a23365a012ba1266d6\"></a>\nconst Eigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_correction_</b></td></tr>\n<tr class=\"separator:a2eac0dce3f01f6a23365a012ba1266d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e4cc8801c90cf9837f5209c15ce27c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e4cc8801c90cf9837f5209c15ce27c8\"></a>\nconst Eigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_correction_inverse_</b></td></tr>\n<tr class=\"separator:a9e4cc8801c90cf9837f5209c15ce27c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"omni__projection_8h_source.html\">omni_projection.h</a></li>\n<li>svo_vikit/vikit_cameras/src/omni_projection.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1PinholeProjection-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::PinholeProjection&lt; Distortion &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>backProject3</b>(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cam_type_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>createTestProjection</b>(const size_t image_width, const size_t image_height) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>cx_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cy_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distortion</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>distortion_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distortion_t</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>errorMultiplier</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>fx_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>fx_inv_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>fy_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>fy_inv_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getAngleError</b>(double img_err) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getIntrinsicParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>IntrinsicParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kFocalLengthX</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kFocalLengthY</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kPricipalPointX</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kPrincipalPointY</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PinholeProjection</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>PinholeProjection</b>(double fx, double fy, double cx, double cy, distortion_t distortion) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PinholeProjection</b>(const Eigen::VectorXd &amp;intrinsics, distortion_t distortion) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>project3</b>(const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~PinholeProjection</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1PinholeProjection.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::PinholeProjection&lt; Distortion &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1PinholeProjection-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::PinholeProjection&lt; Distortion &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a5a484e92ae10435a6fe7e5633cb124dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5a484e92ae10435a6fe7e5633cb124dd\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>IntrinsicParameters</b> { <b>kFocalLengthX</b>, \n<b>kFocalLengthY</b>, \n<b>kPricipalPointX</b>, \n<b>kPrincipalPointY</b>\n }</td></tr>\n<tr class=\"separator:a5a484e92ae10435a6fe7e5633cb124dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac58c7a959e6fe5ec84460187c3387ea1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac58c7a959e6fe5ec84460187c3387ea1\"></a>\ntypedef Distortion&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distortion_t</b></td></tr>\n<tr class=\"separator:ac58c7a959e6fe5ec84460187c3387ea1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae4173cb432458c62d60963be103c0a15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae4173cb432458c62d60963be103c0a15\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PinholeProjection</b> (double fx, double fy, double cx, double cy, distortion_t distortion)</td></tr>\n<tr class=\"separator:ae4173cb432458c62d60963be103c0a15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd0a31adb43ca79e55f7835efd66a79b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd0a31adb43ca79e55f7835efd66a79b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PinholeProjection</b> (const Eigen::VectorXd &amp;intrinsics, distortion_t distortion)</td></tr>\n<tr class=\"separator:abd0a31adb43ca79e55f7835efd66a79b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad52d12a51345b94f090d21594d8d8e4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad52d12a51345b94f090d21594d8d8e4a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>backProject3</b> (const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const</td></tr>\n<tr class=\"separator:ad52d12a51345b94f090d21594d8d8e4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a929bb9a24b24635d3b63c38721ac4e63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a929bb9a24b24635d3b63c38721ac4e63\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>project3</b> (const Eigen::Ref&lt; const Eigen::Vector3d &gt; &amp;point_3d, Eigen::Vector2d *out_keypoint, Eigen::Matrix&lt; double, 2, 3 &gt; *out_jacobian_point) const</td></tr>\n<tr class=\"separator:a929bb9a24b24635d3b63c38721ac4e63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a215990e03d044839c1aa19577839ba58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a215990e03d044839c1aa19577839ba58\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>errorMultiplier</b> () const</td></tr>\n<tr class=\"separator:a215990e03d044839c1aa19577839ba58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a823793bd123a796210b65db1ebe1b784\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a823793bd123a796210b65db1ebe1b784\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getAngleError</b> (double img_err) const</td></tr>\n<tr class=\"separator:a823793bd123a796210b65db1ebe1b784\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01bb9538ebad9869bb851900abfe5c17\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a01bb9538ebad9869bb851900abfe5c17\"></a>\ntemplate&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a01bb9538ebad9869bb851900abfe5c17\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">const T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>distortion</b> () const</td></tr>\n<tr class=\"separator:a01bb9538ebad9869bb851900abfe5c17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3466c79ec8a8dc8f6c891f0c81668a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac3466c79ec8a8dc8f6c891f0c81668a8\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:ac3466c79ec8a8dc8f6c891f0c81668a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0212ef361cd14a858f073b304a1cbe3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0212ef361cd14a858f073b304a1cbe3c\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getIntrinsicParameters</b> () const</td></tr>\n<tr class=\"separator:a0212ef361cd14a858f073b304a1cbe3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f054f708c03de6d1c6331d6df809498\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f054f708c03de6d1c6331d6df809498\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:a3f054f708c03de6d1c6331d6df809498\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a2d3cd1b7009744bc8788d7196bf981b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d3cd1b7009744bc8788d7196bf981b7\"></a>\nstatic <a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a>&lt; Distortion &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createTestProjection</b> (const size_t image_width, const size_t image_height)</td></tr>\n<tr class=\"separator:a2d3cd1b7009744bc8788d7196bf981b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a834bc7c8511a500b297cef60eced76bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a834bc7c8511a500b297cef60eced76bf\"></a>\nconst CameraGeometryBase::Type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cam_type_</b> = CameraGeometryBase::Type::kPinhole</td></tr>\n<tr class=\"separator:a834bc7c8511a500b297cef60eced76bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a803faa45895dd80b4943b832057b3b0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a803faa45895dd80b4943b832057b3b0b\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fx_</b> = 1</td></tr>\n<tr class=\"separator:a803faa45895dd80b4943b832057b3b0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33a2b102f66e5f57cb88e848fe4bf574\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a33a2b102f66e5f57cb88e848fe4bf574\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fy_</b> = 1</td></tr>\n<tr class=\"separator:a33a2b102f66e5f57cb88e848fe4bf574\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a722c9e18e414c8c406fd3b8d2e4b9d87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a722c9e18e414c8c406fd3b8d2e4b9d87\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fx_inv_</b> = 1</td></tr>\n<tr class=\"separator:a722c9e18e414c8c406fd3b8d2e4b9d87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a258a291b75e15ffc28770b982c5ffd48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a258a291b75e15ffc28770b982c5ffd48\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>fy_inv_</b> = 1</td></tr>\n<tr class=\"separator:a258a291b75e15ffc28770b982c5ffd48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a382f091f322fb5100ae8fe7c0b248f4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a382f091f322fb5100ae8fe7c0b248f4c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cx_</b> = 0</td></tr>\n<tr class=\"separator:a382f091f322fb5100ae8fe7c0b248f4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe94a944549b4d9da77a3bced03a6622\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe94a944549b4d9da77a3bced03a6622\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cy_</b> = 0</td></tr>\n<tr class=\"separator:afe94a944549b4d9da77a3bced03a6622\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e88ab5dfc0df33ff88a513e1afe2d25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7e88ab5dfc0df33ff88a513e1afe2d25\"></a>\ndistortion_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distortion_</b></td></tr>\n<tr class=\"separator:a7e88ab5dfc0df33ff88a513e1afe2d25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"pinhole__projection_8h_source.html\">pinhole_projection.h</a></li>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/implementation/<a class=\"el\" href=\"pinhole__projection_8hpp_source.html\">pinhole_projection.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1RadialTangentialDistortion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::RadialTangentialDistortion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>distort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>distort</b>(const Eigen::Vector2d &amp;vector) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>DistortionParameters</b> enum name (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getDistortionParameters</b>() const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">jacobian</a>(const Eigen::Vector2d &amp;px_distorted) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>k1_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>k2_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kRadialDistortionFactor1</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kRadialDistortionFactor2</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kTangentialDistortionFactor1</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kTangentialDistortionFactor2</b> enum value (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>p1_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>p2_</b> (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>print</b>(std::ostream &amp;out) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>RadialTangentialDistortion</b>(const double &amp;k1, const double &amp;k2, const double &amp;p1, const double &amp;p2) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>RadialTangentialDistortion</b>(const Eigen::VectorXd &amp;parameters) (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>undistort</b>(double &amp;x, double &amp;y) const (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~RadialTangentialDistortion</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1cameras_1_1RadialTangentialDistortion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::RadialTangentialDistortion Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classvk_1_1cameras_1_1RadialTangentialDistortion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::RadialTangentialDistortion Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ab964fb68017c2c232635a30b179138d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab964fb68017c2c232635a30b179138d3\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DistortionParameters</b> { <b>kRadialDistortionFactor1</b>, \n<b>kRadialDistortionFactor2</b>, \n<b>kTangentialDistortionFactor1</b>, \n<b>kTangentialDistortionFactor2</b>\n }</td></tr>\n<tr class=\"separator:ab964fb68017c2c232635a30b179138d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6ab8a4391e5ffd62fa7287a30fd855ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6ab8a4391e5ffd62fa7287a30fd855ae\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RadialTangentialDistortion</b> (const double &amp;k1, const double &amp;k2, const double &amp;p1, const double &amp;p2)</td></tr>\n<tr class=\"separator:a6ab8a4391e5ffd62fa7287a30fd855ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac59780c9aff9e1a53dd4458c9858304c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac59780c9aff9e1a53dd4458c9858304c\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RadialTangentialDistortion</b> (const Eigen::VectorXd &amp;parameters)</td></tr>\n<tr class=\"separator:ac59780c9aff9e1a53dd4458c9858304c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30d36497e0a8713e35508937b3a92b1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a30d36497e0a8713e35508937b3a92b1d\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:a30d36497e0a8713e35508937b3a92b1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e33c18a86f7111ed06fae89322b4e76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4e33c18a86f7111ed06fae89322b4e76\"></a>\nEigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>distort</b> (const Eigen::Vector2d &amp;vector) const</td></tr>\n<tr class=\"separator:a4e33c18a86f7111ed06fae89322b4e76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a239ba60ce8eacb1a8beacef30ac912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4a239ba60ce8eacb1a8beacef30ac912\"></a>\nEigen::Matrix2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">jacobian</a> (const Eigen::Vector2d &amp;px_distorted) const</td></tr>\n<tr class=\"memdesc:a4a239ba60ce8eacb1a8beacef30ac912\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Input must be already distorted px vector. <br /></td></tr>\n<tr class=\"separator:a4a239ba60ce8eacb1a8beacef30ac912\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae90e43dbedbe8150420001e12a483f85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae90e43dbedbe8150420001e12a483f85\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>undistort</b> (double &amp;x, double &amp;y) const</td></tr>\n<tr class=\"separator:ae90e43dbedbe8150420001e12a483f85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a184561dc9302dc8e446698dd8e2db448\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a184561dc9302dc8e446698dd8e2db448\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>print</b> (std::ostream &amp;out) const</td></tr>\n<tr class=\"separator:a184561dc9302dc8e446698dd8e2db448\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2981e050ec49f7d8fb36551ffff5c6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2981e050ec49f7d8fb36551ffff5c6c\"></a>\nEigen::VectorXd&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getDistortionParameters</b> () const</td></tr>\n<tr class=\"separator:af2981e050ec49f7d8fb36551ffff5c6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a7958afa8e694530f44744ab121328a68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7958afa8e694530f44744ab121328a68\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k1_</b> = 0</td></tr>\n<tr class=\"separator:a7958afa8e694530f44744ab121328a68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ae1d473b86e8f5a6208ef9228a4665a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ae1d473b86e8f5a6208ef9228a4665a\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k2_</b> = 0</td></tr>\n<tr class=\"separator:a2ae1d473b86e8f5a6208ef9228a4665a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b17f96e68f734f444a44181dc3131e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0b17f96e68f734f444a44181dc3131e8\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>p1_</b> = 0</td></tr>\n<tr class=\"separator:a0b17f96e68f734f444a44181dc3131e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a526d1f30fa3e1910f94a477a8375b150\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a526d1f30fa3e1910f94a477a8375b150\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>p2_</b> = 0</td></tr>\n<tr class=\"separator:a526d1f30fa3e1910f94a477a8375b150\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"radial__tangential__distortion_8h_source.html\">radial_tangential_distortion.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1HuberWeightFunction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::HuberWeightFunction Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HuberWeightFunction</b>(const float k=1.345f) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>k_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight</b>(const float &amp;error) const (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~HuberWeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1HuberWeightFunction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::HuberWeightFunction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1solver_1_1HuberWeightFunction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::HuberWeightFunction Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::HuberWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1HuberWeightFunction__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1HuberWeightFunction_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1HuberWeightFunction_inherit__map\" id=\"vk_1_1solver_1_1HuberWeightFunction_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"23,5,201,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::HuberWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1HuberWeightFunction__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1HuberWeightFunction_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1HuberWeightFunction_coll__map\" id=\"vk_1_1solver_1_1HuberWeightFunction_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"23,5,201,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a38fa88cd605f0ab5aebba42cf1f1e7db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a38fa88cd605f0ab5aebba42cf1f1e7db\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HuberWeightFunction</b> (const float k=1.345f)</td></tr>\n<tr class=\"separator:a38fa88cd605f0ab5aebba42cf1f1e7db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8092b9a42cbe14dd96052f76e419665d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8092b9a42cbe14dd96052f76e419665d\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight</b> (const float &amp;error) const</td></tr>\n<tr class=\"separator:a8092b9a42cbe14dd96052f76e419665d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:aa00a9280472f9dff6f0d6c94c0ff98f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa00a9280472f9dff6f0d6c94c0ff98f6\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>k_</b></td></tr>\n<tr class=\"separator:aa00a9280472f9dff6f0d6c94c0ff98f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1HuberWeightFunction__coll__graph.md5",
    "content": "54ff57f0fd923be1578b833748df738a"
  },
  {
    "path": "docs/classvk_1_1solver_1_1HuberWeightFunction__inherit__graph.md5",
    "content": "30fb3e2cf930d75e7a0b15195f57a885"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MADScaleEstimator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">MADScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MADScaleEstimator Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4\">compute</a>(std::vector&lt; float &gt; &amp;errors) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MADScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~ScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MADScaleEstimator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::MADScaleEstimator Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">MADScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1MADScaleEstimator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MADScaleEstimator Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::MADScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1MADScaleEstimator__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1MADScaleEstimator_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1MADScaleEstimator_inherit__map\" id=\"vk_1_1solver_1_1MADScaleEstimator_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"21,5,197,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::MADScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1MADScaleEstimator__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1MADScaleEstimator_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1MADScaleEstimator_coll__map\" id=\"vk_1_1solver_1_1MADScaleEstimator_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"21,5,197,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a750e4635d4e79debf50a9b478b9b59e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a750e4635d4e79debf50a9b478b9b59e4\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4\">compute</a> (std::vector&lt; float &gt; &amp;errors) const</td></tr>\n<tr class=\"memdesc:a750e4635d4e79debf50a9b478b9b59e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Errors must be absolute values! <br /></td></tr>\n<tr class=\"separator:a750e4635d4e79debf50a9b478b9b59e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MADScaleEstimator__coll__graph.md5",
    "content": "81483526fb4cc7d0527e2bb8e3d2de34"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MADScaleEstimator__inherit__graph.md5",
    "content": "ee25414e56068f8293ea3c5c0acb0c89"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MiniLeastSquaresSolver-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>applyPrior</b>(const State &amp;current_model) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a>(const State &amp;state, HessianMatrix *H, GradientVector *g)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>finishIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>finishTrial</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>GradientVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>have_prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>HessianMatrix</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>impl</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MiniLeastSquaresSolver</b>(const MiniLeastSquaresSolverOptions &amp;options) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a>(State &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>prior_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a>(const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460\">solveDefaultImpl</a>(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>solver_options_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>startIteration</b>() (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>State</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a></td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a>(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UpdateVector</b> typedef (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MiniLeastSquaresSolver</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MiniLeastSquaresSolver.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pri-methods\">Private Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt; Class Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"mini__least__squares__solver_8h_source.html\">mini_least_squares_solver.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1MiniLeastSquaresSolver__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4_coll__map\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"172,78,363,119\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a4286951065f5431a24f3f06925dbdaa1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4286951065f5431a24f3f06925dbdaa1\"></a>\ntypedef Matrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>HessianMatrix</b></td></tr>\n<tr class=\"separator:a4286951065f5431a24f3f06925dbdaa1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf8f56856e7ee380a2edd6f3a8fea23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcf8f56856e7ee380a2edd6f3a8fea23\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b></td></tr>\n<tr class=\"separator:abcf8f56856e7ee380a2edd6f3a8fea23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34dc0cc9716249c4160e28941b11e957\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34dc0cc9716249c4160e28941b11e957\"></a>\ntypedef Matrix&lt; double, D, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateVector</b></td></tr>\n<tr class=\"separator:a34dc0cc9716249c4160e28941b11e957\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a81d74724b7fd40ce911336ddd5bbd4e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a81d74724b7fd40ce911336ddd5bbd4e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">optimize</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a81d74724b7fd40ce911336ddd5bbd4e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Calls the GaussNewton or LevenbergMarquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a81d74724b7fd40ce911336ddd5bbd4e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a192d7bf3f30934b909a917c3eefe01ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a192d7bf3f30934b909a917c3eefe01ea\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">optimizeGaussNewton</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a192d7bf3f30934b909a917c3eefe01ea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gauss Newton optimization strategy. <br /></td></tr>\n<tr class=\"separator:a192d7bf3f30934b909a917c3eefe01ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370c67fedf34421d201799dff3c2b712\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a370c67fedf34421d201799dff3c2b712\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">optimizeLevenbergMarquardt</a> (State &amp;state)</td></tr>\n<tr class=\"memdesc:a370c67fedf34421d201799dff3c2b712\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Levenberg Marquardt optimization strategy. <br /></td></tr>\n<tr class=\"separator:a370c67fedf34421d201799dff3c2b712\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3493823769f52255d70f04f6745740a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3493823769f52255d70f04f6745740a3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">setPrior</a> (const State &amp;prior, const Matrix&lt; double, D, D &gt; &amp;Information)</td></tr>\n<tr class=\"memdesc:a3493823769f52255d70f04f6745740a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Add prior to optimization. <br /></td></tr>\n<tr class=\"separator:a3493823769f52255d70f04f6745740a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70b0b6d9dc8b0c69fcf81ffe05b4913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab70b0b6d9dc8b0c69fcf81ffe05b4913\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">reset</a> ()</td></tr>\n<tr class=\"memdesc:ab70b0b6d9dc8b0c69fcf81ffe05b4913\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reset all parameters to restart the optimization. <br /></td></tr>\n<tr class=\"separator:ab70b0b6d9dc8b0c69fcf81ffe05b4913\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af986b394da42f7d6087c6d985297a01d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af986b394da42f7d6087c6d985297a01d\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a> () const</td></tr>\n<tr class=\"memdesc:af986b394da42f7d6087c6d985297a01d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the squared error. <br /></td></tr>\n<tr class=\"separator:af986b394da42f7d6087c6d985297a01d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad50865303e978ba18160bd2afa46e3cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad50865303e978ba18160bd2afa46e3cb\"></a>\nconst Matrix&lt; double, D, D &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a> () const</td></tr>\n<tr class=\"memdesc:ad50865303e978ba18160bd2afa46e3cb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The the Hessian matrix (Information Matrix). <br /></td></tr>\n<tr class=\"separator:ad50865303e978ba18160bd2afa46e3cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acdc9dc6d901752013f69e74394575c37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acdc9dc6d901752013f69e74394575c37\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>State</b></td></tr>\n<tr class=\"separator:acdc9dc6d901752013f69e74394575c37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fed447f6c8289e9606a5062f7fdd864\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fed447f6c8289e9606a5062f7fdd864\"></a>\n<a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>solver_options_</b></td></tr>\n<tr class=\"separator:a5fed447f6c8289e9606a5062f7fdd864\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a7b8c30307af6619d88c611584f814c24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b8c30307af6619d88c611584f814c24\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MiniLeastSquaresSolver</b> (const <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> &amp;options)</td></tr>\n<tr class=\"separator:a7b8c30307af6619d88c611584f814c24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ca3f83001372253e225b2907a54b23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43ca3f83001372253e225b2907a54b23\"></a>\nImplementation &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>impl</b> ()</td></tr>\n<tr class=\"separator:a43ca3f83001372253e225b2907a54b23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4eb26c1b59bb797ef04f3eb3849edf86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a> (const State &amp;state, HessianMatrix *H, GradientVector *g)</td></tr>\n<tr class=\"separator:a4eb26c1b59bb797ef04f3eb3849edf86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c12d49477a7f5253e9b6f492caf438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a10c12d49477a7f5253e9b6f492caf438\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a10c12d49477a7f5253e9b6f492caf438\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a10c12d49477a7f5253e9b6f492caf438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a856e362b745dac5b193302bd906b619f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a856e362b745dac5b193302bd906b619f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a> (const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</td></tr>\n<tr class=\"memdesc:a856e362b745dac5b193302bd906b619f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Apply the perturbation dx to the state. <br /></td></tr>\n<tr class=\"separator:a856e362b745dac5b193302bd906b619f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed068400fb43b95a519bf60c6772b5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aaed068400fb43b95a519bf60c6772b5f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>applyPrior</b> (const State &amp;current_model)</td></tr>\n<tr class=\"separator:aaed068400fb43b95a519bf60c6772b5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a387d05b5ac4e2645e21ffb61b5d705b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a387d05b5ac4e2645e21ffb61b5d705b6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>startIteration</b> ()</td></tr>\n<tr class=\"separator:a387d05b5ac4e2645e21ffb61b5d705b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bdb66192933f65d6bfed8a80e6ca8bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5bdb66192933f65d6bfed8a80e6ca8bb\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishIteration</b> ()</td></tr>\n<tr class=\"separator:a5bdb66192933f65d6bfed8a80e6ca8bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ecd18484ab2faba15f9d548bc7edeb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7ecd18484ab2faba15f9d548bc7edeb4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>finishTrial</b> ()</td></tr>\n<tr class=\"separator:a7ecd18484ab2faba15f9d548bc7edeb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a3b69a83876010cb3f9a37f886aa519bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b69a83876010cb3f9a37f886aa519bf\"></a>\nHessianMatrix&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a></td></tr>\n<tr class=\"memdesc:a3b69a83876010cb3f9a37f886aa519bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Hessian or approximation Jacobian*Jacobian^T. <br /></td></tr>\n<tr class=\"separator:a3b69a83876010cb3f9a37f886aa519bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a904b6520e51dd46c43b95fbbedbeafea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a904b6520e51dd46c43b95fbbedbeafea\"></a>\nGradientVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a></td></tr>\n<tr class=\"memdesc:a904b6520e51dd46c43b95fbbedbeafea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian*residual. <br /></td></tr>\n<tr class=\"separator:a904b6520e51dd46c43b95fbbedbeafea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcfeb71948d1620404981525e494e32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dcfeb71948d1620404981525e494e32\"></a>\nUpdateVector&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a></td></tr>\n<tr class=\"memdesc:a7dcfeb71948d1620404981525e494e32\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update step. <br /></td></tr>\n<tr class=\"separator:a7dcfeb71948d1620404981525e494e32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31313a23ddb91bb85ea1f209346879e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31313a23ddb91bb85ea1f209346879e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>have_prior_</b> = false</td></tr>\n<tr class=\"separator:a31313a23ddb91bb85ea1f209346879e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade5f632491262f8f043da0b079d5e76f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ade5f632491262f8f043da0b079d5e76f\"></a>\nState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>prior_</b></td></tr>\n<tr class=\"separator:ade5f632491262f8f043da0b079d5e76f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c5c9560e3169719421d10f0062bef92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0c5c9560e3169719421d10f0062bef92\"></a>\nMatrix&lt; double, D, D &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a></td></tr>\n<tr class=\"memdesc:a0c5c9560e3169719421d10f0062bef92\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Prior information matrix (inverse covariance) <br /></td></tr>\n<tr class=\"separator:a0c5c9560e3169719421d10f0062bef92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b8e23ebfc84111a5c62656c7637be3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31b8e23ebfc84111a5c62656c7637be3\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">chi2_</a> = 0.0</td></tr>\n<tr class=\"memdesc:a31b8e23ebfc84111a5c62656c7637be3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2. <br /></td></tr>\n<tr class=\"separator:a31b8e23ebfc84111a5c62656c7637be3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa42970c6659ffbd5483c9c041642f9f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa42970c6659ffbd5483c9c041642f9f2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">rho_</a> = 0.0</td></tr>\n<tr class=\"memdesc:aa42970c6659ffbd5483c9c041642f9f2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Error reduction: chi2-new_chi2. <br /></td></tr>\n<tr class=\"separator:aa42970c6659ffbd5483c9c041642f9f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e15cfacd7c24453502296c2078887e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20e15cfacd7c24453502296c2078887e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">mu_</a> = 0.01</td></tr>\n<tr class=\"memdesc:a20e15cfacd7c24453502296c2078887e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Damping parameter. <br /></td></tr>\n<tr class=\"separator:a20e15cfacd7c24453502296c2078887e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e39cc2bab8234da3b719936cb94d39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e39cc2bab8234da3b719936cb94d39\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">nu_</a> = 2.0</td></tr>\n<tr class=\"memdesc:aa8e39cc2bab8234da3b719936cb94d39\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factor that specifies how much we increase mu at every trial. <br /></td></tr>\n<tr class=\"separator:aa8e39cc2bab8234da3b719936cb94d39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ebef71a9bf1b774c990e5478c045fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80ebef71a9bf1b774c990e5478c045fc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">n_meas_</a> = 0</td></tr>\n<tr class=\"memdesc:a80ebef71a9bf1b774c990e5478c045fc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of measurements. <br /></td></tr>\n<tr class=\"separator:a80ebef71a9bf1b774c990e5478c045fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a858e23e3a958664ddddab82ccfb449e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a858e23e3a958664ddddab82ccfb449e2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">stop_</a> = false</td></tr>\n<tr class=\"memdesc:a858e23e3a958664ddddab82ccfb449e2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop flag. <br /></td></tr>\n<tr class=\"separator:a858e23e3a958664ddddab82ccfb449e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742ca0d12cf87a33a8d5960e194f4a47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a742ca0d12cf87a33a8d5960e194f4a47\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a> = 0</td></tr>\n<tr class=\"memdesc:a742ca0d12cf87a33a8d5960e194f4a47\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current Iteration. <br /></td></tr>\n<tr class=\"separator:a742ca0d12cf87a33a8d5960e194f4a47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e85febfe2a215ceb37e0245d35965b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af0e85febfe2a215ceb37e0245d35965b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">trials_</a> = 0</td></tr>\n<tr class=\"memdesc:af0e85febfe2a215ceb37e0245d35965b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Current number of trials. <br /></td></tr>\n<tr class=\"separator:af0e85febfe2a215ceb37e0245d35965b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-methods\"></a>\nPrivate Member Functions</h2></td></tr>\n<tr class=\"memitem:a4bbe2766d5e7f8826ed55f4465291460\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4bbe2766d5e7f8826ed55f4465291460\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460\">solveDefaultImpl</a> (const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</td></tr>\n<tr class=\"memdesc:a4bbe2766d5e7f8826ed55f4465291460\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default implementation to solve the linear system H*dx = g to obtain optimal perturbation dx. <br /></td></tr>\n<tr class=\"separator:a4bbe2766d5e7f8826ed55f4465291460\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><h3>template&lt;int D, typename T, typename Implementation&gt;<br />\nclass vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</h3>\n\n<p>Abstract Class for solving nonlinear least-squares (NLLS) problems. Template Parameters: D : dimension of the residual, T: type of the model e.g. SE2, SE3 </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a4eb26c1b59bb797ef04f3eb3849edf86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4eb26c1b59bb797ef04f3eb3849edf86\">&#9670;&nbsp;</a></span>evaluateError()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;int D, typename T, typename Implementation&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a>&lt; D, T, Implementation &gt;::evaluateError </td>\n          <td>(</td>\n          <td class=\"paramtype\">const State &amp;&#160;</td>\n          <td class=\"paramname\"><em>state</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">HessianMatrix *&#160;</td>\n          <td class=\"paramname\"><em>H</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">GradientVector *&#160;</td>\n          <td class=\"paramname\"><em>g</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>Evaluates the error at provided state. Optional return variables are the Hessian matrix and the gradient vector (Jacobian * residual). If these parameters are requested, the system is linearized at the current state. </p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"mini__least__squares__solver_8h_source.html\">mini_least_squares_solver.h</a></li>\n<li>svo_vikit/vikit_solver/include/vikit/solver/implementation/<a class=\"el\" href=\"mini__least__squares__solver_8hpp_source.html\">mini_least_squares_solver.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1MiniLeastSquaresSolver__coll__graph.md5",
    "content": "42328145294a32049d89711415cbb62a"
  },
  {
    "path": "docs/classvk_1_1solver_1_1NormalDistributionScaleEstimator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">NormalDistributionScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::NormalDistributionScaleEstimator Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">vk::solver::NormalDistributionScaleEstimator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115\">compute</a>(std::vector&lt; float &gt; &amp;errors) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">vk::solver::NormalDistributionScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~NormalDistributionScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">vk::solver::NormalDistributionScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">vk::solver::NormalDistributionScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~ScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1NormalDistributionScaleEstimator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::NormalDistributionScaleEstimator Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">NormalDistributionScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::NormalDistributionScaleEstimator Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::NormalDistributionScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1NormalDistributionScaleEstimator_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1NormalDistributionScaleEstimator_inherit__map\" id=\"vk_1_1solver_1_1NormalDistributionScaleEstimator_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"15,5,191,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::NormalDistributionScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1NormalDistributionScaleEstimator_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1NormalDistributionScaleEstimator_coll__map\" id=\"vk_1_1solver_1_1NormalDistributionScaleEstimator_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"15,5,191,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ada1d614a1fe877f9a2809c1907c39115\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ada1d614a1fe877f9a2809c1907c39115\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115\">compute</a> (std::vector&lt; float &gt; &amp;errors) const</td></tr>\n<tr class=\"memdesc:ada1d614a1fe877f9a2809c1907c39115\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Errors must be absolute values! <br /></td></tr>\n<tr class=\"separator:ada1d614a1fe877f9a2809c1907c39115\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1NormalDistributionScaleEstimator__coll__graph.md5",
    "content": "07df6177ef92c4708b89f70c249035f5"
  },
  {
    "path": "docs/classvk_1_1solver_1_1NormalDistributionScaleEstimator__inherit__graph.md5",
    "content": "32dfdf0363f073df238508636d963700"
  },
  {
    "path": "docs/classvk_1_1solver_1_1ScaleEstimator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::ScaleEstimator Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a>(std::vector&lt; float &gt; &amp;errors) const =0</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1ScaleEstimator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::ScaleEstimator Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1ScaleEstimator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::ScaleEstimator Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Scale Estimators to estimate standard deviation of a distribution of errors.  \n <a href=\"classvk_1_1solver_1_1ScaleEstimator.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::ScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1ScaleEstimator__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1ScaleEstimator_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1ScaleEstimator_inherit__map\" id=\"vk_1_1solver_1_1ScaleEstimator_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\" title=\"vk::solver::MADScaleEstimator\" alt=\"\" coords=\"229,5,436,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\" title=\"vk::solver::NormalDistribution\\lScaleEstimator\" alt=\"\" coords=\"235,57,430,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\" title=\"vk::solver::UnitScaleEstimator\" alt=\"\" coords=\"233,123,433,149\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a46df7fb6f1b86cbf61d855ec143a9e41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a46df7fb6f1b86cbf61d855ec143a9e41\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a> (std::vector&lt; float &gt; &amp;errors) const =0</td></tr>\n<tr class=\"memdesc:a46df7fb6f1b86cbf61d855ec143a9e41\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Errors must be absolute values! <br /></td></tr>\n<tr class=\"separator:a46df7fb6f1b86cbf61d855ec143a9e41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Scale Estimators to estimate standard deviation of a distribution of errors. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1ScaleEstimator__inherit__graph.md5",
    "content": "d4f4ac5f3f18c6e1a679092e42576028"
  },
  {
    "path": "docs/classvk_1_1solver_1_1TukeyWeightFunction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::TukeyWeightFunction Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>b_square_</b> (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>TukeyWeightFunction</b>(const float b=4.6851f) (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight</b>(const float &amp;error) const (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~TukeyWeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1TukeyWeightFunction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::TukeyWeightFunction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"classvk_1_1solver_1_1TukeyWeightFunction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::TukeyWeightFunction Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::TukeyWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1TukeyWeightFunction__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1TukeyWeightFunction_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1TukeyWeightFunction_inherit__map\" id=\"vk_1_1solver_1_1TukeyWeightFunction_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"23,5,202,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::TukeyWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1TukeyWeightFunction__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1TukeyWeightFunction_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1TukeyWeightFunction_coll__map\" id=\"vk_1_1solver_1_1TukeyWeightFunction_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"23,5,202,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6afe780205bf788feacbb53e0ee64af2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6afe780205bf788feacbb53e0ee64af2\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>TukeyWeightFunction</b> (const float b=4.6851f)</td></tr>\n<tr class=\"separator:a6afe780205bf788feacbb53e0ee64af2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28621b2a38be78f82d515b6d64b03f59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a28621b2a38be78f82d515b6d64b03f59\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight</b> (const float &amp;error) const</td></tr>\n<tr class=\"separator:a28621b2a38be78f82d515b6d64b03f59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:ad462eb6d82167a1e623aedf5ad070254\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad462eb6d82167a1e623aedf5ad070254\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>b_square_</b></td></tr>\n<tr class=\"separator:ad462eb6d82167a1e623aedf5ad070254\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1TukeyWeightFunction__coll__graph.md5",
    "content": "26cd9afc82db5428c7f8a6ed81cf6c04"
  },
  {
    "path": "docs/classvk_1_1solver_1_1TukeyWeightFunction__inherit__graph.md5",
    "content": "7adc88d0bb63fa209ee5d61c78048d17"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitScaleEstimator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">UnitScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::UnitScaleEstimator Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">vk::solver::UnitScaleEstimator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398\">compute</a>(std::vector&lt; float &gt; &amp;errors) const</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">vk::solver::UnitScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~UnitScaleEstimator</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">vk::solver::UnitScaleEstimator</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">vk::solver::UnitScaleEstimator</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitScaleEstimator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::UnitScaleEstimator Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">UnitScaleEstimator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1UnitScaleEstimator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::UnitScaleEstimator Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::UnitScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1UnitScaleEstimator__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1UnitScaleEstimator_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1UnitScaleEstimator_inherit__map\" id=\"vk_1_1solver_1_1UnitScaleEstimator_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"17,5,193,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::UnitScaleEstimator:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1UnitScaleEstimator__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1UnitScaleEstimator_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1UnitScaleEstimator_coll__map\" id=\"vk_1_1solver_1_1UnitScaleEstimator_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"17,5,193,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a579cfb988f7d96008cedd05099808398\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a579cfb988f7d96008cedd05099808398\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398\">compute</a> (std::vector&lt; float &gt; &amp;errors) const</td></tr>\n<tr class=\"memdesc:a579cfb988f7d96008cedd05099808398\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Errors must be absolute values! <br /></td></tr>\n<tr class=\"separator:a579cfb988f7d96008cedd05099808398\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitScaleEstimator__coll__graph.md5",
    "content": "a359629867f47b01f80f5b0b9c45ebb6"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitScaleEstimator__inherit__graph.md5",
    "content": "447b4857d5a0622821e77d713603aace"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitWeightFunction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">UnitWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::UnitWeightFunction Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight</b>(const float &amp;error) const (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~UnitWeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitWeightFunction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::UnitWeightFunction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">UnitWeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1UnitWeightFunction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::UnitWeightFunction Class Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::UnitWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1UnitWeightFunction__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1UnitWeightFunction_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1UnitWeightFunction_inherit__map\" id=\"vk_1_1solver_1_1UnitWeightFunction_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"17,5,196,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::UnitWeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1UnitWeightFunction__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1UnitWeightFunction_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"vk_1_1solver_1_1UnitWeightFunction_coll__map\" id=\"vk_1_1solver_1_1UnitWeightFunction_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"17,5,196,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad0f2b5149816b0705be2e0a957687837\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0f2b5149816b0705be2e0a957687837\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight</b> (const float &amp;error) const</td></tr>\n<tr class=\"separator:ad0f2b5149816b0705be2e0a957687837\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n<li>svo_vikit/vikit_solver/src/robust_cost.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitWeightFunction__coll__graph.md5",
    "content": "cab4aae3b2ccf283cc4e7cb1277fd93c"
  },
  {
    "path": "docs/classvk_1_1solver_1_1UnitWeightFunction__inherit__graph.md5",
    "content": "18e4374dbf6db30c716f4d61af496399"
  },
  {
    "path": "docs/classvk_1_1solver_1_1WeightFunction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::WeightFunction Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight</b>(const float &amp;error) const =0 (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~WeightFunction</b>()=default (defined in <a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a>)</td><td class=\"entry\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1WeightFunction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::WeightFunction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classvk_1_1solver_1_1WeightFunction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::WeightFunction Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for vk::solver::WeightFunction:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"classvk_1_1solver_1_1WeightFunction__inherit__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1WeightFunction_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"vk_1_1solver_1_1WeightFunction_inherit__map\" id=\"vk_1_1solver_1_1WeightFunction_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\" title=\"vk::solver::HuberWeightFunction\" alt=\"\" coords=\"233,5,446,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\" title=\"vk::solver::TukeyWeightFunction\" alt=\"\" coords=\"232,56,447,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\" title=\"vk::solver::UnitWeightFunction\" alt=\"\" coords=\"238,107,441,133\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a77762963fd2957f649e379d93a2072cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77762963fd2957f649e379d93a2072cb\"></a>\nvirtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight</b> (const float &amp;error) const =0</td></tr>\n<tr class=\"separator:a77762963fd2957f649e379d93a2072cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Weight-Functions for M-Estimators <a href=\"http://research.microsoft.com/en-us/um/people/zhang/inria/publis/tutorial-estim/node24.html\">http://research.microsoft.com/en-us/um/people/zhang/inria/publis/tutorial-estim/node24.html</a> </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"robust__cost_8h_source.html\">robust_cost.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/classvk_1_1solver_1_1WeightFunction__inherit__graph.md5",
    "content": "77cd082b7bd97f8e38c87b46d49afd0c"
  },
  {
    "path": "docs/config_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/config.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">config.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">/* #undef SVO_WITH_CUDA */</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">/* #undef SVO_WITH_PANGOLIN */</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/container__helpers_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/container_helpers.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">container_helpers.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span>common {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span>container_helpers {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> Type&gt;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keywordtype\">void</span> eraseIndicesFromVector(<span class=\"keyword\">const</span> std::vector&lt;size_t&gt;&amp; sorted_indices_to_remove,</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;                            std::vector&lt;Type&gt;* vector)</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;{</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  CHECK_NOTNULL(vector);</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  std::vector&lt;Type&gt; to_swap;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  to_swap.reserve(vector-&gt;size() - sorted_indices_to_remove.size());</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keywordtype\">size_t</span> in_begin = 0u;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">auto</span> copy_until_and_skip = [&amp;](<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> end_index) {</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    CHECK_GE(end_index, in_begin) &lt;&lt; <span class=\"stringliteral\">&quot;Indices to remove must be sorted!&quot;</span>;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"comment\">// TODO(tcies) Potential optimization: Use move iterators. Can&#39;t use memcpy</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"comment\">// because that will e.g. fail on shared pointers.</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    to_swap.insert(to_swap.end(), vector-&gt;begin() + in_begin,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;                   vector-&gt;begin() + end_index);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    in_begin = end_index + 1;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  };</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"comment\">// Copy blocks before indices to remove.</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> index_to_remove : sorted_indices_to_remove)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    copy_until_and_skip(index_to_remove);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  }</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"comment\">// Copy block after last index to remove.</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  copy_until_and_skip(vector-&gt;size());</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  vector-&gt;swap(to_swap);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;}</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"comment\">// Solution from:</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"comment\">// http://stackoverflow.com/questions/7571937/how-to-delete-items-from-a-stdvector-given-a-list-of-indices</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> ElementType, <span class=\"keyword\">typename</span> Allocator&gt;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"keyword\">inline</span> std::vector&lt;ElementType, Allocator&gt; eraseIndicesFromVector_DEPRECATED(</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;ElementType, Allocator&gt;&amp; data,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;size_t&gt;&amp; indices_to_delete) {</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordflow\">if</span> (indices_to_delete.empty()) {</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keywordflow\">return</span> data;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  }</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  std::vector&lt;size_t&gt; mutable_indices_to_delete = indices_to_delete;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  std::sort(mutable_indices_to_delete.begin(), mutable_indices_to_delete.end());</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  CHECK_LT(mutable_indices_to_delete.back(), data.size());</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  std::vector&lt;ElementType, Allocator&gt; reduced_vector;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  CHECK_GE(data.size(), mutable_indices_to_delete.size());</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  reduced_vector.reserve(data.size() - mutable_indices_to_delete.size());</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"comment\">// Copy blocks from the input vector to the output vector.</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">typename</span> std::vector&lt;ElementType, Allocator&gt;::const_iterator it_block_begin = data.begin();</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keyword\">typename</span> std::vector&lt;size_t&gt;::const_iterator it = mutable_indices_to_delete.begin();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      it != mutable_indices_to_delete.end(); ++it) {</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keyword\">typename</span> std::vector&lt;ElementType, Allocator&gt;::const_iterator it_block_end = data.begin() + *it;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    <span class=\"keywordflow\">if</span> (it_block_begin != it_block_end) {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      std::copy(it_block_begin, it_block_end, std::back_inserter(reduced_vector));</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    it_block_begin = it_block_end + 1;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  }</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"comment\">// Copy the last block.</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordflow\">if</span> (it_block_begin != data.end()) {</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    std::copy(it_block_begin, data.end(), std::back_inserter(reduced_vector));</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  }</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keywordflow\">return</span> reduced_vector;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;}</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;}  <span class=\"comment\">// namespace container_helpers</span></div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;}  <span class=\"comment\">// namespace common</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;}  <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/conversions_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/conversions.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">conversions.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span>common {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>conversions {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;constexpr <span class=\"keywordtype\">double</span> kDegToRad = M_PI / 180.;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;constexpr <span class=\"keywordtype\">size_t</span> kMilliSecondsToNanoSeconds = 1e6;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;constexpr <span class=\"keywordtype\">double</span> kNanoSecondsToSeconds = 1e-9;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;}  <span class=\"comment\">// namespace conversions</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;}  <span class=\"comment\">// namespace common</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;}  <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/csv__dataset__reader_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/csv_dataset_reader.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">csv_dataset_reader.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;map&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/macros.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/highgui/highgui.hpp&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span>dataset {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">enum class</span> MeasurementType {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  kImu,</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  kCamera,</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  kFeatureTrack,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;};</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">   21</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;{</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>(int64_t timestamp_nanoseconds, MeasurementType type)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    : timestamp_nanoseconds(timestamp_nanoseconds)</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    , measurement_type(type)</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  {}</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">const</span> MeasurementType measurement_type;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;};</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">   37</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;{</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a>);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a>(</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      int64_t timestamp_nanoseconds,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 1&gt;&amp; acc_gyro_measurement)</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    : <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>(timestamp_nanoseconds, MeasurementType::kImu)</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    , acc_gyro_measurement(acc_gyro_measurement)</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  {}</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 1&gt; acc_gyro_measurement;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;};</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">   54</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;{</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a>);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a>(</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;      int64_t timestamp_nanoseconds</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;      , <span class=\"keywordtype\">size_t</span> camera_index</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;      , <span class=\"keyword\">const</span> std::string&amp; image_path_filename)</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    : <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>(timestamp_nanoseconds, MeasurementType::kCamera)</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    , camera_index(camera_index)</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    , image_path_filename(image_path_filename)</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  {}</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  cv::Mat getImage()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    cv::Mat image = cv::imread(image_path_filename, CV_LOAD_IMAGE_GRAYSCALE);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    CHECK_NOTNULL(image.data);</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keywordflow\">return</span> image;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  }</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> camera_index;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">const</span> std::string image_path_filename;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;};</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">   81</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;{</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a>);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <a class=\"code\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a>(</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      int64_t timestamp_nanoseconds,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keywordtype\">size_t</span> camera_index,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      <span class=\"keywordtype\">int</span> track_id,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector2d&amp; keypoint_measurement,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      <span class=\"keywordtype\">double</span> keypoint_std_dev)</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    : <a class=\"code\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>(timestamp_nanoseconds, MeasurementType::kFeatureTrack)</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    , camera_index(camera_index)</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    , track_id(track_id)</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    , keypoint_measurement(keypoint_measurement)</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    , keypoint_std_dev(keypoint_std_dev)</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  {}</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> camera_index;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> track_id;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector2d keypoint_measurement;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> keypoint_std_dev;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;};</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;} <span class=\"comment\">// namespace dataset</span></div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1CsvDatasetReader.html\">  109</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a></div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;{</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"keyword\">typedef</span> std::pair&lt;int64_t, std::shared_ptr&lt;dataset::MeasurementBase&gt;&gt; StampMeasurementPair;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keyword\">typedef</span> std::multimap&lt;int64_t, std::shared_ptr&lt;dataset::MeasurementBase&gt;&gt; DataBuffer;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a>);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <a class=\"code\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a>(</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      <span class=\"keyword\">const</span> std::string&amp; csv_directory,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;size_t&gt; imu_indices,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;size_t&gt; camera_indices,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;size_t&gt; track_indices);</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  <span class=\"comment\">// Make class iterable:</span></div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keyword\">typedef</span> DataBuffer::value_type value_type;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keyword\">typedef</span> DataBuffer::const_iterator const_iterator;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  DataBuffer::const_iterator begin()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> buffer_.begin(); }</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  DataBuffer::const_iterator end()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> buffer_.end(); }</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  <span class=\"keywordtype\">void</span> loadImuData(</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> std::string data_dir,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;      <span class=\"keyword\">const</span> int64_t playback_delay);</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;  <span class=\"keywordtype\">void</span> loadCameraData(</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      <span class=\"keyword\">const</span> std::string&amp; data_dir,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> camera_index,</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;      int64_t playback_delay);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">void</span> loadFeatureTracksData(</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      <span class=\"keyword\">const</span> std::string&amp; data_dir,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> camera_index,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      int64_t playback_delay);</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">  149</a></span>&#160;  DataBuffer <a class=\"code\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">buffer_</a>;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;};</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1CsvDatasetReader_html_aa7c59c03c6a85f330423ebd32dac799f\"><div class=\"ttname\"><a href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">svo::CsvDatasetReader::buffer_</a></div><div class=\"ttdeci\">DataBuffer buffer_</div><div class=\"ttdoc\">Buffer to chronologically sort the data. </div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:149</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1CsvDatasetReader_html\"><div class=\"ttname\"><a href=\"classsvo_1_1CsvDatasetReader.html\">svo::CsvDatasetReader</a></div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:109</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement_html\"><div class=\"ttname\"><a href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:81</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1dataset_1_1CameraMeasurement_html\"><div class=\"ttname\"><a href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:54</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1dataset_1_1MeasurementBase_html\"><div class=\"ttname\"><a href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:21</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1dataset_1_1ImuMeasurement_html\"><div class=\"ttname\"><a href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> csv_dataset_reader.h:37</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/csv__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/csv_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">csv_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// TODO(cfo): These functions are from Thomas Schneider&#39;s dataset_tools</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">//            We should move to that dataset provider as soon as it is ready!</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span> </div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Geometry&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/position.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/rotation-quaternion.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::QuatTransformation Transformation;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::RotationQuaternion Quaternion;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::AngleAxis AngleAxis;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::Position Position3D;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> removeAnyEndOfLineCharacter(std::string* line)</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;{</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  CHECK_NOTNULL(line);</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordflow\">for</span> (std::string::iterator it = line-&gt;begin(); it != line-&gt;end(); ) {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keywordflow\">if</span> ((*it == <span class=\"charliteral\">&#39;\\r&#39;</span>) || (*it == <span class=\"charliteral\">&#39;\\n&#39;</span>)) {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      it = line-&gt;erase(it);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      ++it;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  }</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;}</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> readNextLine(</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> num_fields_per_line,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    std::ifstream&amp; csv_file_stream,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    std::vector&lt;std::string&gt;* fields)</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;{</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  CHECK_NOTNULL(fields)-&gt;clear();</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"comment\">// Read the line.</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  std::string line;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordflow\">if</span> (!std::getline(csv_file_stream, line)) {</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  }</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"comment\">// Treat empty lines as end-of-file (hopefully at the end of the file).</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  removeAnyEndOfLineCharacter(&amp;line);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keywordflow\">if</span> (line.empty()) {</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  }</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"comment\">// Split fields of the read line.</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> field_delimiter = <span class=\"charliteral\">&#39;,&#39;</span>;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  fields-&gt;resize(num_fields_per_line);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  std::stringstream line_stream(line);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> idx = 0u; idx &lt; num_fields_per_line; ++idx) {</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    CHECK(!line_stream.eof());</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    std::getline(line_stream, (*fields)[idx], field_delimiter);</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    CHECK(!(*fields)[idx].empty()) &lt;&lt; <span class=\"stringliteral\">&quot;Too few fields per line.&quot;</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;          &lt;&lt; <span class=\"stringliteral\">&quot; Found &quot;</span> &lt;&lt; idx + 1 &lt;&lt; <span class=\"stringliteral\">&quot; fields but expected &quot;</span> &lt;&lt; num_fields_per_line &lt;&lt; <span class=\"stringliteral\">&quot;.&quot;</span>;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  }</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;}</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> convertStringToDouble(<span class=\"keyword\">const</span> std::string&amp; number_as_string) {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  CHECK(!number_as_string.empty());</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keywordtype\">double</span> number_as_double = 0;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    number_as_double = std::stod(number_as_string);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::invalid_argument&amp; invalid_argument_exception) {</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Invalid argument exception. Could not convert &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;        <span class=\"stringliteral\">&quot;&#39; to a double. &quot;</span> &lt;&lt; invalid_argument_exception.what();</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::out_of_range&amp; out_of_range_exception) {</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Out of range exception. The given number &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;        <span class=\"stringliteral\">&quot;&#39; does not seem to fit into a double! &quot;</span> &lt;&lt; out_of_range_exception.what();</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::exception&amp; exception) {</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Conversion of the given number &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;            <span class=\"stringliteral\">&quot;&#39; to a double failed. &quot;</span> &lt;&lt; exception.what();</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  }</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keywordflow\">return</span> number_as_double;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;}</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">inline</span> Eigen::Vector3d convertStringsToEigenVector3d(<span class=\"keyword\">const</span> std::string&amp; string_x,</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;                                                     <span class=\"keyword\">const</span> std::string&amp; string_y,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;                                                     <span class=\"keyword\">const</span> std::string&amp; string_z) {</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  CHECK(!string_x.empty());</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  CHECK(!string_y.empty());</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  CHECK(!string_z.empty());</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  Eigen::Vector3d vector;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  vector.setZero();</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    vector &lt;&lt; std::stod(string_x), std::stod(string_y), std::stod(string_z);</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::invalid_argument&amp; invalid_argument_exception) {</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Invalid argument exception. Could not convert &#39;(&quot;</span> &lt;&lt; string_x &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;               &lt;&lt; string_y &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; string_z &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; to Eigen::Vector3d.&quot;</span></div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;               &lt;&lt; invalid_argument_exception.what();</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::out_of_range&amp; out_of_range_exception) {</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Out of range exception. The given tuple &#39;(&quot;</span> &lt;&lt; string_x &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;               &lt;&lt; string_y &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; string_z &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; does not seem to fit into a &quot;</span></div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;               &lt;&lt; <span class=\"stringliteral\">&quot;three-dimensional double vector!&quot;</span> &lt;&lt; out_of_range_exception.what();</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::exception&amp; exception) {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Conversion of the given tuple &#39;(&quot;</span> &lt;&lt; string_x &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;               &lt;&lt; string_y &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; string_z &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; to three-dimensional &quot;</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;               &lt;&lt; <span class=\"stringliteral\">&quot;double vector failed. &quot;</span> &lt;&lt; exception.what();</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  }</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <span class=\"keywordflow\">return</span> vector;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;}</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;<span class=\"keyword\">inline</span> Quaternion convertStringsToQuaternion(</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; qw, <span class=\"keyword\">const</span> std::string&amp; qx, <span class=\"keyword\">const</span> std::string&amp; qy, <span class=\"keyword\">const</span> std::string&amp; qz) {</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  CHECK(!qw.empty());</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  CHECK(!qx.empty());</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  CHECK(!qy.empty());</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  CHECK(!qz.empty());</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  Quaternion quaternion;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  quaternion.setIdentity();</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;    constexpr <span class=\"keywordtype\">double</span> kNormTolerance = 1e-3;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    Eigen::Vector4d quat_coeffs(std::stod(qw), std::stod(qx), std::stod(qy), std::stod(qz));</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    LOG_IF(FATAL, std::fabs(1.0 - quat_coeffs.norm()) &gt; kNormTolerance)</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      &lt;&lt; <span class=\"stringliteral\">&quot;Invalid quaternion with norm: &quot;</span> &lt;&lt; quat_coeffs.norm();</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    quat_coeffs.normalize();</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    quaternion = Quaternion(quat_coeffs(0), quat_coeffs(1),</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;                            quat_coeffs(2), quat_coeffs(3));</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::invalid_argument&amp; invalid_argument_exception) {</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Invalid argument exception. Could not convert &#39;(&quot;</span> &lt;&lt; qw &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;               &lt;&lt; qx &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qy &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qz &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; to aslam::Quaternion.&quot;</span></div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;               &lt;&lt; invalid_argument_exception.what();</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::out_of_range&amp; out_of_range_exception) {</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Out of range exception. The given tuple &#39;(&quot;</span> &lt;&lt; qw &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;               &lt;&lt; qx &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qy &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qz &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; does not seem to fit the definition &quot;</span></div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;               &lt;&lt; <span class=\"stringliteral\">&quot;of an aslam::Quaternion!&quot;</span> &lt;&lt; out_of_range_exception.what();</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::exception&amp; exception) {</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Conversion of the given tuple &#39;(&quot;</span> &lt;&lt; qw &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span></div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;               &lt;&lt; qx &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qy &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; qz &lt;&lt; <span class=\"stringliteral\">&quot;)&#39; to aslam::Quaternion &quot;</span></div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;               &lt;&lt; <span class=\"stringliteral\">&quot;failed. &quot;</span> &lt;&lt; exception.what();</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;  }</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordflow\">return</span> quaternion;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;}</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;<span class=\"keyword\">inline</span> int64_t convertStringToLongLong(<span class=\"keyword\">const</span> std::string&amp; number_as_string) {</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;  CHECK(!number_as_string.empty());</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  int64_t number_as_longlong = 0;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;  <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    number_as_longlong = std::stoll(number_as_string);</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::invalid_argument&amp; invalid_argument_exception) {</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Invalid argument exception. Could not convert &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;        <span class=\"stringliteral\">&quot;&#39; to a longlong. &quot;</span> &lt;&lt; invalid_argument_exception.what();</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::out_of_range&amp; out_of_range_exception) {</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Out of range exception. The given number &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;        <span class=\"stringliteral\">&quot;&#39; does not seem to fit into a longlong! &quot;</span> &lt;&lt; out_of_range_exception.what();</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> std::exception&amp; exception) {</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Conversion of the given number &#39;&quot;</span> &lt;&lt; number_as_string &lt;&lt;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;            <span class=\"stringliteral\">&quot;&#39; to a longlong failed. &quot;</span> &lt;&lt; exception.what();</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;  }</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  <span class=\"keywordflow\">return</span> number_as_longlong;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;}</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/deprecated.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Deprecated List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Deprecated List </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><dl class=\"reflist\">\n<dt><a class=\"anchor\" id=\"_deprecated000001\"></a>Member <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">svo::FrameHandlerMono::addImage</a>  (const cv::Mat &amp;img, const uint64_t timestamp)</dt>\n<dd>. use addImageBundle(). </dd>\n</dl>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/depth__defocus__node_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/include/dvs_depth_from_defocus/depth_defocus_node.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_aed134eeebc665a9f98c953e86ef8771.html\">dvs_depth_from_defocus</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_defocus_node.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;geometry_msgs/PoseStamped.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_types.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;pcl_ros/point_cloud.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/CameraInfo.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/Bool.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/String.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tf.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tfMessage.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_datatypes.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;tf_conversions/tf_eigen.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;boost/multi_array.hpp&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_depth_from_defocus/depth_vector.hpp&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_msgs/Event.h&quot;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_msgs/EventArray.h&quot;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">#include &quot;evo_utils/camera.hpp&quot;</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#include &quot;evo_utils/geometry.hpp&quot;</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">// #define MAPPING_PERF  ///&lt; to easily measure code for time of execution</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a> {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">typedef</span> pcl::PointXYZI PointType;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">typedef</span> pcl::PointCloud&lt;PointType&gt; PointCloud;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">float</span> Vote;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"keyword\">enum</span> MapperState { IDLE, MAPPING };</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">   58</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a> {</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">DepthFromDefocusNode</a>(<span class=\"keyword\">const</span> ros::NodeHandle &amp;nh, <span class=\"keyword\">const</span> ros::NodeHandle &amp;pnh,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;                         <span class=\"keyword\">const</span> image_geometry::PinholeCameraModel &amp;cam);</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">~DepthFromDefocusNode</a>();</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">processEventArray</a>(<span class=\"keyword\">const</span> dvs_msgs::EventArray::ConstPtr &amp;event_array);</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">tfCallback</a>(<span class=\"keyword\">const</span> tf::tfMessage::ConstPtr &amp;tf_msg);</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">remoteKeyCallback</a>(<span class=\"keyword\">const</span> std_msgs::String::ConstPtr &amp;msg);</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">cameraInfoCallback</a>(<span class=\"keyword\">const</span> sensor_msgs::CameraInfo::ConstPtr &amp;msg);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">copilotCallback</a>(<span class=\"keyword\">const</span> std_msgs::Bool &amp;msg);</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">resetMapper</a>();</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">projectEventsToVoxelGrid</a>(<span class=\"keyword\">const</span> std::vector&lt;Eigen::Vector4f&gt; &amp;events,</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;                                  <span class=\"keyword\">const</span> std::vector&lt;Eigen::Vector3f&gt; &amp;centers);</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">resetVoxelGrid</a>();</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">processEventQueue</a>(<span class=\"keywordtype\">bool</span> reset = <span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">getPoseAt</a>(<span class=\"keyword\">const</span> ros::Time &amp;t, evo_utils::geometry::Transformation &amp;T);</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">setupVoxelGrid</a>();</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">  227</a></span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">voteForCell</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x_f, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y_f, Vote *grid) {</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> x = (int)(x_f + 0.5), y = (int)(y_f + 0.5);</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;        <span class=\"keywordflow\">if</span> (x &gt;= 0 &amp;&amp; x &lt; virtual_width_ &amp;&amp; y &gt;= 0 &amp;&amp; y &lt; <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a>) {</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;            grid[x + y * <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a>] += 1.f;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;        }</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;    }</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">  249</a></span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">voteForCellBilinear</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x_f, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y_f, Vote *grid) {</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;        <span class=\"keywordflow\">if</span> (x_f &gt;= 0.f &amp;&amp; y_f &gt;= 0.f) {</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;            <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> x = x_f, y = y_f;</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;            <span class=\"keywordflow\">if</span> (x + 1 &lt; <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a> &amp;&amp; y + 1 &lt; <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a>) {</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;                Vote *g = grid + x + y * <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a>;</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;                <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> fx = x_f - x, fy = y_f - y, fx1 = 1.f - fx,</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;                            fy1 = 1.f - fy;</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;                g[0] += fx1 * fy1;</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;                g[1] += fx * fy1;</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;                g[<a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a>] += fx1 * fy;</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;                g[virtual_width_ + 1] += fx * fy;</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;            }</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;        }</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;    }</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">precomputeRectifiedPoints</a>();</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">synthesizeAndPublishDepth</a>();</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;</div><div class=\"line\"><a name=\"l00295\"></a><span class=\"lineno\">  295</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">synthesizePointCloudFromVoxelGrid</a>(cv::Mat &amp;depth, cv::Mat &amp;confidence);</div><div class=\"line\"><a name=\"l00296\"></a><span class=\"lineno\">  296</span>&#160;</div><div class=\"line\"><a name=\"l00309\"></a><span class=\"lineno\">  309</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">synthesizePointCloudFromVoxelGridLinf</a>(cv::Mat &amp;depth_cell_indices,</div><div class=\"line\"><a name=\"l00310\"></a><span class=\"lineno\">  310</span>&#160;                                               cv::Mat &amp;confidence);</div><div class=\"line\"><a name=\"l00311\"></a><span class=\"lineno\">  311</span>&#160;</div><div class=\"line\"><a name=\"l00329\"></a><span class=\"lineno\">  329</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">synthesizePointCloudFromVoxelGridContrast</a>(cv::Mat &amp;depth_cell_indices,</div><div class=\"line\"><a name=\"l00330\"></a><span class=\"lineno\">  330</span>&#160;                                                   cv::Mat &amp;confidence);</div><div class=\"line\"><a name=\"l00331\"></a><span class=\"lineno\">  331</span>&#160;</div><div class=\"line\"><a name=\"l00350\"></a><span class=\"lineno\">  350</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">synthesizePointCloudFromVoxelGridGradMag</a>(cv::Mat &amp;depth_cell_indices,</div><div class=\"line\"><a name=\"l00351\"></a><span class=\"lineno\">  351</span>&#160;                                                  cv::Mat &amp;confidence);</div><div class=\"line\"><a name=\"l00352\"></a><span class=\"lineno\">  352</span>&#160;</div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\">  372</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">accumulatePointcloud</a>(<span class=\"keyword\">const</span> cv::Mat &amp;depth, <span class=\"keyword\">const</span> cv::Mat &amp;mask,</div><div class=\"line\"><a name=\"l00373\"></a><span class=\"lineno\">  373</span>&#160;                              <span class=\"keyword\">const</span> cv::Mat &amp;confidence,</div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\">  374</span>&#160;                              <span class=\"keyword\">const</span> Eigen::Matrix3d R_world_ref,</div><div class=\"line\"><a name=\"l00375\"></a><span class=\"lineno\">  375</span>&#160;                              <span class=\"keyword\">const</span> Eigen::Vector3d t_world_ref,</div><div class=\"line\"><a name=\"l00376\"></a><span class=\"lineno\">  376</span>&#160;                              <span class=\"keyword\">const</span> ros::Time &amp;timestamp);</div><div class=\"line\"><a name=\"l00377\"></a><span class=\"lineno\">  377</span>&#160;</div><div class=\"line\"><a name=\"l00385\"></a><span class=\"lineno\">  385</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">publishVoxelGrid</a>(</div><div class=\"line\"><a name=\"l00386\"></a><span class=\"lineno\">  386</span>&#160;        <span class=\"keyword\">const</span> evo_utils::geometry::Transformation &amp;T_w_ref) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00387\"></a><span class=\"lineno\">  387</span>&#160;</div><div class=\"line\"><a name=\"l00400\"></a><span class=\"lineno\">  400</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">publishDepthmap</a>(<span class=\"keyword\">const</span> cv::Mat &amp;depth, <span class=\"keyword\">const</span> cv::Mat &amp;mask);</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;</div><div class=\"line\"><a name=\"l00412\"></a><span class=\"lineno\">  412</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">publishGlobalMap</a>();</div><div class=\"line\"><a name=\"l00413\"></a><span class=\"lineno\">  413</span>&#160;</div><div class=\"line\"><a name=\"l00418\"></a><span class=\"lineno\">  418</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">clearEventQueue</a>();</div><div class=\"line\"><a name=\"l00419\"></a><span class=\"lineno\">  419</span>&#160;</div><div class=\"line\"><a name=\"l00428\"></a><span class=\"lineno\">  428</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">postCameraLoaded</a>();</div><div class=\"line\"><a name=\"l00429\"></a><span class=\"lineno\">  429</span>&#160;</div><div class=\"line\"><a name=\"l00440\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">  440</a></span>&#160;    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Vote &amp;<a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">voxelGridAt</a>(<span class=\"keyword\">const</span> std::vector&lt;Vote&gt; &amp;grid, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y,</div><div class=\"line\"><a name=\"l00441\"></a><span class=\"lineno\">  441</span>&#160;                                   <span class=\"keywordtype\">size_t</span> z)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00442\"></a><span class=\"lineno\">  442</span>&#160;        <span class=\"keywordflow\">return</span> grid[x + <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a> * (y + z * <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a>)];</div><div class=\"line\"><a name=\"l00443\"></a><span class=\"lineno\">  443</span>&#160;    }</div><div class=\"line\"><a name=\"l00444\"></a><span class=\"lineno\">  444</span>&#160;</div><div class=\"line\"><a name=\"l00455\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">  455</a></span>&#160;    <span class=\"keyword\">inline</span> Vote &amp;<a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">voxelGridAt</a>(std::vector&lt;Vote&gt; &amp;grid, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">size_t</span> z) {</div><div class=\"line\"><a name=\"l00456\"></a><span class=\"lineno\">  456</span>&#160;        <span class=\"keywordflow\">return</span> grid[x + <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a> * (y + z * <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a>)];</div><div class=\"line\"><a name=\"l00457\"></a><span class=\"lineno\">  457</span>&#160;    }</div><div class=\"line\"><a name=\"l00458\"></a><span class=\"lineno\">  458</span>&#160;</div><div class=\"line\"><a name=\"l00465\"></a><span class=\"lineno\">  465</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">update</a>();</div><div class=\"line\"><a name=\"l00466\"></a><span class=\"lineno\">  466</span>&#160;</div><div class=\"line\"><a name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">  468</a></span>&#160;    ros::NodeHandle <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">nh_</a>;</div><div class=\"line\"><a name=\"l00469\"></a><span class=\"lineno\">  469</span>&#160;    ros::NodeHandle pnh_;</div><div class=\"line\"><a name=\"l00470\"></a><span class=\"lineno\">  470</span>&#160;    image_transport::ImageTransport it_;</div><div class=\"line\"><a name=\"l00471\"></a><span class=\"lineno\">  471</span>&#160;</div><div class=\"line\"><a name=\"l00472\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">  472</a></span>&#160;    ros::Publisher <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">pub_pc_</a>;          </div><div class=\"line\"><a name=\"l00473\"></a><span class=\"lineno\">  473</span>&#160;    ros::Publisher <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">pub_pc_global_</a>;   </div><div class=\"line\"><a name=\"l00475\"></a><span class=\"lineno\">  475</span>&#160;    ros::Publisher <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">pub_voxel_grid_</a>;  </div><div class=\"line\"><a name=\"l00477\"></a><span class=\"lineno\">  477</span>&#160;</div><div class=\"line\"><a name=\"l00479\"></a><span class=\"lineno\">  479</span>&#160;    image_transport::Publisher</div><div class=\"line\"><a name=\"l00480\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">  480</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">pub_depth_map_</a>;  </div><div class=\"line\"><a name=\"l00481\"></a><span class=\"lineno\">  481</span>&#160;</div><div class=\"line\"><a name=\"l00483\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">  483</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">event_sub_</a>;        </div><div class=\"line\"><a name=\"l00484\"></a><span class=\"lineno\">  484</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">tf_sub_</a>;           </div><div class=\"line\"><a name=\"l00486\"></a><span class=\"lineno\">  486</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">remote_key_</a>;       </div><div class=\"line\"><a name=\"l00488\"></a><span class=\"lineno\">  488</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">camera_info_sub_</a>;  </div><div class=\"line\"><a name=\"l00490\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">  490</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">copilot_sub_</a>;      </div><div class=\"line\"><a name=\"l00491\"></a><span class=\"lineno\">  491</span>&#160;</div><div class=\"line\"><a name=\"l00492\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">  492</a></span>&#160;    MapperState <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">state_</a>;  </div><div class=\"line\"><a name=\"l00493\"></a><span class=\"lineno\">  493</span>&#160;</div><div class=\"line\"><a name=\"l00494\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">  494</a></span>&#160;    std::string <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">world_frame_id_</a>;  </div><div class=\"line\"><a name=\"l00495\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">  495</a></span>&#160;    std::string <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">frame_id_</a>;        </div><div class=\"line\"><a name=\"l00496\"></a><span class=\"lineno\">  496</span>&#160;    std::string</div><div class=\"line\"><a name=\"l00497\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">  497</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">regular_frame_id_</a>;  </div><div class=\"line\"><a name=\"l00498\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">  498</a></span>&#160;    std::string <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">bootstrap_frame_id_</a>;  </div><div class=\"line\"><a name=\"l00499\"></a><span class=\"lineno\">  499</span>&#160;    std::shared_ptr&lt;tf::Transformer&gt; tf_;</div><div class=\"line\"><a name=\"l00500\"></a><span class=\"lineno\">  500</span>&#160;</div><div class=\"line\"><a name=\"l00501\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">  501</a></span>&#160;    evo_utils::geometry::Transformation <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">T_ref_w_</a>;  </div><div class=\"line\"><a name=\"l00502\"></a><span class=\"lineno\">  502</span>&#160;</div><div class=\"line\"><a name=\"l00503\"></a><span class=\"lineno\">  503</span>&#160;    image_geometry::PinholeCameraModel</div><div class=\"line\"><a name=\"l00504\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">  504</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">dvs_cam_</a>;  </div><div class=\"line\"><a name=\"l00505\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">  505</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">width_</a>;    </div><div class=\"line\"><a name=\"l00506\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">  506</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">height_</a>;   </div><div class=\"line\"><a name=\"l00507\"></a><span class=\"lineno\">  507</span>&#160;</div><div class=\"line\"><a name=\"l00508\"></a><span class=\"lineno\">  508</span>&#160;    <a class=\"code\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></div><div class=\"line\"><a name=\"l00509\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">  509</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">virtual_cam_</a>;  </div><div class=\"line\"><a name=\"l00510\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">  510</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">virtual_width_</a>;   </div><div class=\"line\"><a name=\"l00511\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">  511</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">virtual_height_</a>;  </div><div class=\"line\"><a name=\"l00512\"></a><span class=\"lineno\">  512</span>&#160;</div><div class=\"line\"><a name=\"l00513\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">  513</a></span>&#160;    Eigen::Matrix3f <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">K_</a>;  </div><div class=\"line\"><a name=\"l00514\"></a><span class=\"lineno\">  514</span>&#160;</div><div class=\"line\"><a name=\"l00515\"></a><span class=\"lineno\">  515</span>&#160;    <span class=\"comment\">// Ref voxel grid parameters</span></div><div class=\"line\"><a name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">  517</a></span>&#160;<span class=\"comment\"></span>    std::vector&lt;Vote&gt; <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">ref_voxel_grid_</a>;  </div><div class=\"line\"><a name=\"l00518\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">  518</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">confidence_mask_</a>;           </div><div class=\"line\"><a name=\"l00519\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">  519</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">voxel_filter_leaf_size_</a>;      </div><div class=\"line\"><a name=\"l00520\"></a><span class=\"lineno\">  520</span>&#160;    <span class=\"keywordtype\">size_t</span></div><div class=\"line\"><a name=\"l00522\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">  522</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">events_to_recreate_kf_</a>;  </div><div class=\"line\"><a name=\"l00523\"></a><span class=\"lineno\">  523</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">type_focus_measure_</a>;     </div><div class=\"line\"><a name=\"l00527\"></a><span class=\"lineno\">  527</span>&#160;</div><div class=\"line\"><a name=\"l00528\"></a><span class=\"lineno\">  528</span>&#160;    Eigen::Matrix2Xf</div><div class=\"line\"><a name=\"l00529\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">  529</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">precomputed_rectified_points_</a>;  </div><div class=\"line\"><a name=\"l00530\"></a><span class=\"lineno\">  530</span>&#160;</div><div class=\"line\"><a name=\"l00532\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">  532</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">current_event_</a>;         </div><div class=\"line\"><a name=\"l00533\"></a><span class=\"lineno\">  533</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">newest_tracked_event_</a>;  </div><div class=\"line\"><a name=\"l00535\"></a><span class=\"lineno\">  535</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">last_kf_update_event_</a>;  </div><div class=\"line\"><a name=\"l00537\"></a><span class=\"lineno\">  537</span>&#160;    std::deque&lt;dvs_msgs::Event&gt; event_queue_;</div><div class=\"line\"><a name=\"l00539\"></a><span class=\"lineno\">  539</span>&#160;</div><div class=\"line\"><a name=\"l00540\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">  540</a></span>&#160;    PointCloud::Ptr <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">pc_</a>;         </div><div class=\"line\"><a name=\"l00541\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">  541</a></span>&#160;    PointCloud::Ptr <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">pc_global_</a>;  </div><div class=\"line\"><a name=\"l00542\"></a><span class=\"lineno\">  542</span>&#160;</div><div class=\"line\"><a name=\"l00544\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">  544</a></span>&#160;    evo_utils::geometry::Depth <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">min_depth_</a>;  </div><div class=\"line\"><a name=\"l00545\"></a><span class=\"lineno\">  545</span>&#160;    evo_utils::geometry::Depth <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">max_depth_</a>;  </div><div class=\"line\"><a name=\"l00547\"></a><span class=\"lineno\">  547</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">num_depth_cells_</a>;                </div><div class=\"line\"><a name=\"l00549\"></a><span class=\"lineno\">  549</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a></div><div class=\"line\"><a name=\"l00551\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">  551</a></span>&#160;        <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depths_vec_</a>;  </div><div class=\"line\"><a name=\"l00552\"></a><span class=\"lineno\">  552</span>&#160;    <span class=\"comment\">//  LinearDepthVector depths_vec_;</span></div><div class=\"line\"><a name=\"l00553\"></a><span class=\"lineno\">  553</span>&#160;    std::vector&lt;float&gt; raw_depths_vec_;</div><div class=\"line\"><a name=\"l00554\"></a><span class=\"lineno\">  554</span>&#160;</div><div class=\"line\"><a name=\"l00555\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">  555</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">radius_search_</a>;     </div><div class=\"line\"><a name=\"l00556\"></a><span class=\"lineno\">  556</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">min_num_neighbors_</a>;   </div><div class=\"line\"><a name=\"l00558\"></a><span class=\"lineno\">  558</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">median_filter_size_</a>;  </div><div class=\"line\"><a name=\"l00561\"></a><span class=\"lineno\">  561</span>&#160;</div><div class=\"line\"><a name=\"l00564\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">  564</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">adaptive_threshold_kernel_size_</a>;  </div><div class=\"line\"><a name=\"l00565\"></a><span class=\"lineno\">  565</span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">adaptive_threshold_c_</a>;  </div><div class=\"line\"><a name=\"l00569\"></a><span class=\"lineno\">  569</span>&#160;</div><div class=\"line\"><a name=\"l00573\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">  573</a></span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">auto_trigger_</a>;  </div><div class=\"line\"><a name=\"l00574\"></a><span class=\"lineno\">  574</span>&#160;};</div><div class=\"line\"><a name=\"l00575\"></a><span class=\"lineno\">  575</span>&#160;</div><div class=\"line\"><a name=\"l00576\"></a><span class=\"lineno\">  576</span>&#160;}  <span class=\"comment\">// namespace depth_from_defocus</span></div><div class=\"ttc\" id=\"classdepth__from__defocus_1_1InverseDepthVector_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:148</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ac65d0e128be514ed1a396e4ff1b38daf\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">depth_from_defocus::DepthFromDefocusNode::max_depth_</a></div><div class=\"ttdeci\">evo_utils::geometry::Depth max_depth_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:546</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_afa040d5d769ec0fe374456e5bab56ed4\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">depth_from_defocus::DepthFromDefocusNode::~DepthFromDefocusNode</a></div><div class=\"ttdeci\">~DepthFromDefocusNode()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:447</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a22cd4237f65478939011561af75e326c\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">depth_from_defocus::DepthFromDefocusNode::virtual_width_</a></div><div class=\"ttdeci\">int virtual_width_</div><div class=\"ttdoc\">virtual width </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:510</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a39e537b8e2385d06156df91dc1f2e190\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">depth_from_defocus::DepthFromDefocusNode::remote_key_</a></div><div class=\"ttdeci\">ros::Subscriber remote_key_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:487</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a35a3692d84034741bce050cfbf1858cd\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">depth_from_defocus::DepthFromDefocusNode::camera_info_sub_</a></div><div class=\"ttdeci\">ros::Subscriber camera_info_sub_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:489</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_afdae5a3c5364f7134a6db87b291d4c2b\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">depth_from_defocus::DepthFromDefocusNode::voteForCell</a></div><div class=\"ttdeci\">void voteForCell(const float x_f, const float y_f, Vote *grid)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:227</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ae6cc30aaa1c12a87e22cb23762b1d29f\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridLinf</a></div><div class=\"ttdeci\">void synthesizePointCloudFromVoxelGridLinf(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:697</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a2144912eab70d469e16448ae24f71a7d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">depth_from_defocus::DepthFromDefocusNode::pc_global_</a></div><div class=\"ttdeci\">PointCloud::Ptr pc_global_</div><div class=\"ttdoc\">Global map,. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:541</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9947eae416456401f19a6191ca5f7ea7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">depth_from_defocus::DepthFromDefocusNode::remoteKeyCallback</a></div><div class=\"ttdeci\">void remoteKeyCallback(const std_msgs::String::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:202</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a66af9d6f400f5ba558891c3e96ccefc8\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">depth_from_defocus::DepthFromDefocusNode::processEventArray</a></div><div class=\"ttdeci\">void processEventArray(const dvs_msgs::EventArray::ConstPtr &amp;event_array)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:485</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ac1d09c207960dc16c44ab095b0b0c012\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">depth_from_defocus::DepthFromDefocusNode::setupVoxelGrid</a></div><div class=\"ttdeci\">void setupVoxelGrid()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:452</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a077406511ce2fe2dafcc318bb02bc518\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">depth_from_defocus::DepthFromDefocusNode::synthesizeAndPublishDepth</a></div><div class=\"ttdeci\">void synthesizeAndPublishDepth()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:520</div></div>\n<div class=\"ttc\" id=\"namespacedepth__from__defocus_html\"><div class=\"ttname\"><a href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a></div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:27</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_af60735b8c6cde0dcdeb5e083807479cc\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">depth_from_defocus::DepthFromDefocusNode::adaptive_threshold_c_</a></div><div class=\"ttdeci\">int adaptive_threshold_c_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:568</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a20e387f433c5952219e29ea75aa539c7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridGradMag</a></div><div class=\"ttdeci\">void synthesizePointCloudFromVoxelGridGradMag(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:652</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a2b8f9a445431a5432f2a30c4f0bcc302\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">depth_from_defocus::DepthFromDefocusNode::frame_id_</a></div><div class=\"ttdeci\">std::string frame_id_</div><div class=\"ttdoc\">currently used frame id </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:495</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a6c3e65bb3ddb235e484574d851a08c48\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">depth_from_defocus::DepthFromDefocusNode::resetVoxelGrid</a></div><div class=\"ttdeci\">void resetVoxelGrid()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:426</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:58</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a67c78059b53cd51fb551418970f76572\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">depth_from_defocus::DepthFromDefocusNode::copilot_sub_</a></div><div class=\"ttdeci\">ros::Subscriber copilot_sub_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:490</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a1623778e6e3a6879c7a96919943ebb32\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">depth_from_defocus::DepthFromDefocusNode::accumulatePointcloud</a></div><div class=\"ttdeci\">void accumulatePointcloud(const cv::Mat &amp;depth, const cv::Mat &amp;mask, const cv::Mat &amp;confidence, const Eigen::Matrix3d R_world_ref, const Eigen::Vector3d t_world_ref, const ros::Time &amp;timestamp)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:801</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a971d6b1bf08a82afa9f6457a3efd0252\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">depth_from_defocus::DepthFromDefocusNode::events_to_recreate_kf_</a></div><div class=\"ttdeci\">size_t events_to_recreate_kf_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:522</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_abb6a055c5cd4515fe7eb5818911b7d50\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">depth_from_defocus::DepthFromDefocusNode::pub_pc_</a></div><div class=\"ttdeci\">ros::Publisher pub_pc_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:472</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a489a220948a3742cb67c3f3ee9c17ab7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">depth_from_defocus::DepthFromDefocusNode::pub_depth_map_</a></div><div class=\"ttdeci\">image_transport::Publisher pub_depth_map_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:480</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_acf8dc50f440375fdf193e512a73409a5\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">depth_from_defocus::DepthFromDefocusNode::processEventQueue</a></div><div class=\"ttdeci\">void processEventQueue(bool reset=false)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:247</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a34a786d7ed8c846f3d10e6c4ea44ca1c\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">depth_from_defocus::DepthFromDefocusNode::DepthFromDefocusNode</a></div><div class=\"ttdeci\">DepthFromDefocusNode(const ros::NodeHandle &amp;nh, const ros::NodeHandle &amp;pnh, const image_geometry::PinholeCameraModel &amp;cam)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:76</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a35190fd60fd5e8bb7ff5b8979a4a8a70\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">depth_from_defocus::DepthFromDefocusNode::voxelGridAt</a></div><div class=\"ttdeci\">Vote &amp; voxelGridAt(std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:455</div></div>\n<div class=\"ttc\" id=\"classevo__utils_1_1camera_1_1PinholeCamera_html\"><div class=\"ttname\"><a href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\">evo_utils::camera::PinholeCamera</a></div><div class=\"ttdef\"><b>Definition:</b> camera.hpp:47</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_afddf16f4d9c8139a54eee1941743d751\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depth_from_defocus::DepthFromDefocusNode::depths_vec_</a></div><div class=\"ttdeci\">InverseDepthVector depths_vec_</div><div class=\"ttdoc\">precomputed vector of num_depth_cells_ inverse depths </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:551</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a8e50df3e30a2cb737f9ebba7abf309f7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">depth_from_defocus::DepthFromDefocusNode::copilotCallback</a></div><div class=\"ttdeci\">void copilotCallback(const std_msgs::Bool &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:131</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ace0ad5d9ed7f95e6478803c2340a1a30\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">depth_from_defocus::DepthFromDefocusNode::newest_tracked_event_</a></div><div class=\"ttdeci\">size_t newest_tracked_event_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:534</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a94b54fd9870f48adb1e52e88975cdc45\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">depth_from_defocus::DepthFromDefocusNode::publishGlobalMap</a></div><div class=\"ttdeci\">void publishGlobalMap()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:944</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a5aff4f76d8c1697d12a9eaf3b1a25f67\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">depth_from_defocus::DepthFromDefocusNode::pub_voxel_grid_</a></div><div class=\"ttdeci\">ros::Publisher pub_voxel_grid_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:476</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a726d1f1162353f1caecdebf2278a015d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">depth_from_defocus::DepthFromDefocusNode::width_</a></div><div class=\"ttdeci\">int width_</div><div class=\"ttdoc\">camera width </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:505</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_acff32750da61643c9d76f3de42afcc56\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">depth_from_defocus::DepthFromDefocusNode::voxel_filter_leaf_size_</a></div><div class=\"ttdeci\">float voxel_filter_leaf_size_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:519</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_aae99eca2579b25fc757930b5540adc54\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">depth_from_defocus::DepthFromDefocusNode::world_frame_id_</a></div><div class=\"ttdeci\">std::string world_frame_id_</div><div class=\"ttdoc\">The root frame id of the tf system. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:494</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ad9bbd8fd1f19afcb05609eb8390ed203\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">depth_from_defocus::DepthFromDefocusNode::current_event_</a></div><div class=\"ttdeci\">size_t current_event_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:532</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a38737d443d893b1a30d423e13563ec9d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">depth_from_defocus::DepthFromDefocusNode::publishDepthmap</a></div><div class=\"ttdeci\">void publishDepthmap(const cv::Mat &amp;depth, const cv::Mat &amp;mask)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:868</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a63265d395f08ffcc3754dfbd8fddcf9a\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">depth_from_defocus::DepthFromDefocusNode::publishVoxelGrid</a></div><div class=\"ttdeci\">void publishVoxelGrid(const evo_utils::geometry::Transformation &amp;T_w_ref) const</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:892</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9789403c30791c6e1c5a8a2cb2dc7f81\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGrid</a></div><div class=\"ttdeci\">void synthesizePointCloudFromVoxelGrid(cv::Mat &amp;depth, cv::Mat &amp;confidence)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:725</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a4a5d1f3d4b60664b3dbedfd93672f89d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">depth_from_defocus::DepthFromDefocusNode::num_depth_cells_</a></div><div class=\"ttdeci\">size_t num_depth_cells_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:548</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a6d0ad9955f82c132884ac72ec2265002\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">depth_from_defocus::DepthFromDefocusNode::ref_voxel_grid_</a></div><div class=\"ttdeci\">std::vector&lt; Vote &gt; ref_voxel_grid_</div><div class=\"ttdoc\">Voxel grid vote counters. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:517</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_afdfd142fd0150cdf4db973a7e4cf2446\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">depth_from_defocus::DepthFromDefocusNode::projectEventsToVoxelGrid</a></div><div class=\"ttdeci\">void projectEventsToVoxelGrid(const std::vector&lt; Eigen::Vector4f &gt; &amp;events, const std::vector&lt; Eigen::Vector3f &gt; &amp;centers)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:381</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a8090033f289e75e5c8848d8d607776fa\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">depth_from_defocus::DepthFromDefocusNode::dvs_cam_</a></div><div class=\"ttdeci\">image_geometry::PinholeCameraModel dvs_cam_</div><div class=\"ttdoc\">dvs sensor model retrieved from configuration file </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:504</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9c537264ea3455e4924ef8a3a5833d21\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">depth_from_defocus::DepthFromDefocusNode::auto_trigger_</a></div><div class=\"ttdeci\">bool auto_trigger_</div><div class=\"ttdoc\">whether to start on first pose received </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:573</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ae83baae63ad0f9e266e3a1e323d01b4f\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">depth_from_defocus::DepthFromDefocusNode::pub_pc_global_</a></div><div class=\"ttdeci\">ros::Publisher pub_pc_global_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:474</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a782327cddbfd08861a32365a63f993b3\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">depth_from_defocus::DepthFromDefocusNode::synthesizePointCloudFromVoxelGridContrast</a></div><div class=\"ttdeci\">void synthesizePointCloudFromVoxelGridContrast(cv::Mat &amp;depth_cell_indices, cv::Mat &amp;confidence)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:603</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a4c4fa8b85060c7bad51a26e77d7cb532\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">depth_from_defocus::DepthFromDefocusNode::bootstrap_frame_id_</a></div><div class=\"ttdeci\">std::string bootstrap_frame_id_</div><div class=\"ttdoc\">frame id to use during bootstrapping </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:498</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a0d17eba64b62fb1b3e9ce82ae067f3e7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">depth_from_defocus::DepthFromDefocusNode::postCameraLoaded</a></div><div class=\"ttdeci\">void postCameraLoaded()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:41</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_aabf95d4de38430266604af8ada0dc552\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">depth_from_defocus::DepthFromDefocusNode::precomputeRectifiedPoints</a></div><div class=\"ttdeci\">void precomputeRectifiedPoints()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:552</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a313454c2e14b5d530145cdea7cb353d8\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">depth_from_defocus::DepthFromDefocusNode::T_ref_w_</a></div><div class=\"ttdeci\">evo_utils::geometry::Transformation T_ref_w_</div><div class=\"ttdoc\">camera pose </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:501</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ad015324f82f688def03d52386161e706\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">depth_from_defocus::DepthFromDefocusNode::getPoseAt</a></div><div class=\"ttdeci\">bool getPoseAt(const ros::Time &amp;t, evo_utils::geometry::Transformation &amp;T)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:536</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a08b55e09a6c2e7bc1714c06cf9f847c4\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">depth_from_defocus::DepthFromDefocusNode::update</a></div><div class=\"ttdeci\">void update()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:182</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a8b8c08338af40686a2584e8454f98f53\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">depth_from_defocus::DepthFromDefocusNode::clearEventQueue</a></div><div class=\"ttdeci\">void clearEventQueue()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:504</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a981fb5f234a53aa96aa24c93da86f423\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">depth_from_defocus::DepthFromDefocusNode::median_filter_size_</a></div><div class=\"ttdeci\">int median_filter_size_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:560</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a635b56c3ef2453da9e5881c920eb0059\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">depth_from_defocus::DepthFromDefocusNode::min_depth_</a></div><div class=\"ttdeci\">evo_utils::geometry::Depth min_depth_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:544</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a63f8adce923276393dc12edaad4c4d66\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">depth_from_defocus::DepthFromDefocusNode::pc_</a></div><div class=\"ttdeci\">PointCloud::Ptr pc_</div><div class=\"ttdoc\">Local map. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:540</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a3e2c40e443e860ce9cd1cd9ec0278005\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">depth_from_defocus::DepthFromDefocusNode::confidence_mask_</a></div><div class=\"ttdeci\">cv::Mat confidence_mask_</div><div class=\"ttdoc\">Confidence associated to each voxel. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:518</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a0b4316dd5d3f7a0f9f9022fa7cb062e7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">depth_from_defocus::DepthFromDefocusNode::resetMapper</a></div><div class=\"ttdeci\">void resetMapper()</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:192</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a632c50ae671224d4fdb90d04649eed3d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">depth_from_defocus::DepthFromDefocusNode::K_</a></div><div class=\"ttdeci\">Eigen::Matrix3f K_</div><div class=\"ttdoc\">intrinsic matrix </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:513</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a98c7bb325b87b98a5246f5413bdfccda\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">depth_from_defocus::DepthFromDefocusNode::cameraInfoCallback</a></div><div class=\"ttdeci\">void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:27</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a1746a5424d4c6fb08c07415d00cb8561\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">depth_from_defocus::DepthFromDefocusNode::height_</a></div><div class=\"ttdeci\">int height_</div><div class=\"ttdoc\">camera height </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:506</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_aaece6ded781928540cf7b3b848d0833d\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">depth_from_defocus::DepthFromDefocusNode::voxelGridAt</a></div><div class=\"ttdeci\">const Vote &amp; voxelGridAt(const std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z) const</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:440</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9be7fc72e0cc3fed64e4e84136c3f8d7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">depth_from_defocus::DepthFromDefocusNode::voteForCellBilinear</a></div><div class=\"ttdeci\">void voteForCellBilinear(const float x_f, const float y_f, Vote *grid)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:249</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ae7870dbb15d8db5b442bc8ae80333c62\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">depth_from_defocus::DepthFromDefocusNode::virtual_height_</a></div><div class=\"ttdeci\">int virtual_height_</div><div class=\"ttdoc\">virtual height </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:511</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a68691a0697108ba82a6cd0a674d84ae3\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">depth_from_defocus::DepthFromDefocusNode::virtual_cam_</a></div><div class=\"ttdeci\">evo_utils::camera::PinholeCamera virtual_cam_</div><div class=\"ttdoc\">To extend the functionalities of PinholeCameraModel. </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:509</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_af1033e661af53d8d1f162830f13ef0db\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">depth_from_defocus::DepthFromDefocusNode::radius_search_</a></div><div class=\"ttdeci\">float radius_search_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:555</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_aefbd42bbebb0de0bbd7282ce67afc0c6\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">depth_from_defocus::DepthFromDefocusNode::tf_sub_</a></div><div class=\"ttdeci\">ros::Subscriber tf_sub_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:485</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a410d73cc0f5560fd523f00611bd6d662\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">depth_from_defocus::DepthFromDefocusNode::tfCallback</a></div><div class=\"ttdeci\">void tfCallback(const tf::tfMessage::ConstPtr &amp;tf_msg)</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.cpp:136</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9fc0bac204374e6d8f001bccc91f42f9\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">depth_from_defocus::DepthFromDefocusNode::type_focus_measure_</a></div><div class=\"ttdeci\">int type_focus_measure_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:526</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a332088b877233c941a41edeed681a57e\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">depth_from_defocus::DepthFromDefocusNode::nh_</a></div><div class=\"ttdeci\">ros::NodeHandle nh_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:468</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ace0e5758c89defe7c49b6116203e77e2\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">depth_from_defocus::DepthFromDefocusNode::last_kf_update_event_</a></div><div class=\"ttdeci\">size_t last_kf_update_event_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:536</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a9b632eb6d82e259230d3cb2bda830539\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">depth_from_defocus::DepthFromDefocusNode::regular_frame_id_</a></div><div class=\"ttdeci\">std::string regular_frame_id_</div><div class=\"ttdoc\">frame id to use during regular operation </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:497</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_afb731a5a3862a81d979ddfba21c0e81a\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">depth_from_defocus::DepthFromDefocusNode::precomputed_rectified_points_</a></div><div class=\"ttdeci\">Eigen::Matrix2Xf precomputed_rectified_points_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:529</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ace24950e40764734e448abb9abbb65dd\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">depth_from_defocus::DepthFromDefocusNode::min_num_neighbors_</a></div><div class=\"ttdeci\">int min_num_neighbors_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:557</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_ab80ebeb058562a6834726a1781c569c5\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">depth_from_defocus::DepthFromDefocusNode::event_sub_</a></div><div class=\"ttdeci\">ros::Subscriber event_sub_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:483</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a40b8f1fcd91c8f9917660cdd22297475\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">depth_from_defocus::DepthFromDefocusNode::adaptive_threshold_kernel_size_</a></div><div class=\"ttdeci\">int adaptive_threshold_kernel_size_</div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:564</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html_a0dd83f7db94b2615d40a03892dcdcbe0\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">depth_from_defocus::DepthFromDefocusNode::state_</a></div><div class=\"ttdeci\">MapperState state_</div><div class=\"ttdoc\">state of the mapper, </div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:492</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/depth__estimation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/depth_estimation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_estimation.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/mini_least_squares_solver.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1DepthEstimator.html\">   20</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a>&lt;1, double, DepthEstimator&gt;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;{</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> = <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keyword\">using</span> DepthEstimatorState = double;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kPatchHalfsize = 4;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kPatchSize = 2*kPatchHalfsize;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kPatchArea = kPatchSize*kPatchSize;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kMaxLevel = 4;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kMinLevel = 0;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <a class=\"code\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a>(<span class=\"keyword\">const</span> SolverOptions&amp; solver_options);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">static</span> SolverOptions getDefaultSolverOptions();</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">void</span> run(</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; cur_frame,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; ref_frame,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> ref_feature_id);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keywordtype\">double</span> evaluateError(</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      <span class=\"keyword\">const</span> State&amp; params,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      GradientVector* g);</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordtype\">void</span> update(</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;      <span class=\"keyword\">const</span> State&amp; param_old,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;      State&amp; param_new);</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keywordtype\">bool</span> solve(</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      <span class=\"keyword\">const</span> HessianMatrix&amp; H,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keyword\">const</span> GradientVector&amp; g,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      UpdateVector&amp; dx);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  FramePtr cur_frame_;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  FramePtr ref_frame_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  BearingVector f_ref_;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  Keypoint px_ref_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  Transformation T_cur_ref_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  uint8_t ref_patch_[kPatchSize*kPatchSize] __attribute__ ((aligned (16)));</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  uint8_t ref_patch_with_border_[(kPatchSize+2)*(kPatchSize+2)] __attribute__ ((aligned (16)));</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"keywordtype\">int</span> level_ = 0;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;};</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1DepthEstimator_html\"><div class=\"ttname\"><a href=\"classsvo_1_1DepthEstimator.html\">svo::DepthEstimator</a></div><div class=\"ttdoc\">Depth estimation by minimizing photometric error. </div><div class=\"ttdef\"><b>Definition:</b> depth_estimation.h:20</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/depth__filter_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/depth_filter.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_filter.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;queue&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span> <span class=\"comment\">// std::shared_ptr</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;condition_variable&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/direct/matcher.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">class </span>AbstractDetector;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">typedef</span> std::shared_ptr&lt;AbstractDetector&gt; DetectorPtr;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">struct </span>DetectorOptions;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html\">   27</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;{</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">   33</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">seed_convergence_sigma2_thresh</a> = 200.0;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">   38</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">use_inverse_depth</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">   42</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">max_search_level</a> = 2;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">   45</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">verbose</a> = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">   48</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">use_threaded_depthfilter</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">   51</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">update_3d_point</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">   54</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">scan_epi_unit_sphere</a> = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">   57</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">max_n_seeds_per_frame</a> = 200;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">   60</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">affine_est_offset</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keywordtype\">bool</span> affine_est_gain = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;};</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1DepthFilter.html\">   67</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;{</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">   73</a></span>&#160;  <span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  {</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">enum</span> Type { UPDATE, SEED_INIT } type;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    FramePtr cur_frame;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    FramePtr ref_frame;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    <span class=\"keywordtype\">size_t</span> ref_frame_seed_index;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    <span class=\"keywordtype\">double</span> min_depth, max_depth, mean_depth;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6\">   82</a></span>&#160;    <a class=\"code\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6\">Job</a>()</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      : cur_frame(nullptr), ref_frame(nullptr)</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    {}</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699\">   87</a></span>&#160;    <a class=\"code\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699\">Job</a>(<span class=\"keyword\">const</span> FramePtr&amp; _cur_frame, <span class=\"keyword\">const</span> FramePtr&amp; _ref_frame, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> _ref_index)</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      : type(UPDATE)</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      , cur_frame(_cur_frame)</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      , ref_frame(_ref_frame)</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      , ref_frame_seed_index(_ref_index)</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    {}</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">   95</a></span>&#160;    <a class=\"code\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">Job</a>(<span class=\"keyword\">const</span> FramePtr&amp; f, <span class=\"keywordtype\">double</span> min_d, <span class=\"keywordtype\">double</span> max_d, <span class=\"keywordtype\">double</span> mean_d)</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;      : type(SEED_INIT), cur_frame(f), ref_frame(nullptr)</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      , min_depth(min_d), max_depth(max_d), mean_depth(mean_d)</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    {}</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  };</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;DepthFilter&gt; Ptr;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  <span class=\"keyword\">typedef</span> std::mutex mutex_t;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_lock&lt;mutex_t&gt; ulock_t;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keyword\">typedef</span> std::queue&lt;Job&gt; JobQueue;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a> options_;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <a class=\"code\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a>(</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      <span class=\"keyword\">const</span> std::shared_ptr&lt;CameraBundle&gt;&amp; cams);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <a class=\"code\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a>(</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; options);</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a>();</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keywordtype\">void</span> startThread();</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keywordtype\">void</span> stopThread();</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keywordtype\">void</span> addKeyframe(</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_mean,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_min,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_max);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;  <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">  141</a></span>&#160;  <a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a>&amp; <a class=\"code\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">getMatcher</a>() { <span class=\"keywordflow\">return</span> *matcher_; }</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;  <span class=\"keywordtype\">size_t</span> updateSeeds(</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; frames_with_seeds,</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; new_frame);</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  <span class=\"comment\">// need public access to set grid occupancy</span></div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;  mutex_t feature_detector_mut_;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;  DetectorPtr feature_detector_;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  mutex_t jobs_mut_;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;  JobQueue jobs_;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  std::condition_variable jobs_condvar_;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;  std::unique_ptr&lt;std::thread&gt; thread_;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;  <span class=\"keywordtype\">bool</span> quit_thread_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;  Matcher::Ptr matcher_;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;  <span class=\"keywordtype\">void</span> updateSeedsLoop();</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;};</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;<span class=\"keyword\">namespace </span>depth_filter_utils {</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;<span class=\"keywordtype\">void</span> initializeSeeds(</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;    <span class=\"keyword\">const</span> DetectorPtr&amp; feature_detector,</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_seeds,</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> min_depth,</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> max_depth,</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> mean_depth);</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;<span class=\"keywordtype\">bool</span> updateSeed(</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; cur_frame,</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;    <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span>&amp; seed_index,</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    <a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a>&amp; matcher,</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;    <span class=\"keyword\">const</span> FloatType sigma2_convergence_threshold,</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> check_visibility = <span class=\"keyword\">true</span>,</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> check_convergence = <span class=\"keyword\">false</span>,</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> use_vogiatzis_update = <span class=\"keyword\">true</span>);</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;<span class=\"keywordtype\">bool</span> updateFilterVogiatzis(</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;    <span class=\"keyword\">const</span> FloatType z,</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;    <span class=\"keyword\">const</span> FloatType tau2,</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;    <span class=\"keyword\">const</span> FloatType z_range,</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;    Eigen::Ref&lt;SeedState&gt;&amp; seed);</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;<span class=\"keywordtype\">bool</span> updateFilterGaussian(</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;    <span class=\"keyword\">const</span> FloatType z,</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;    <span class=\"keyword\">const</span> FloatType tau2,</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;    Eigen::Ref&lt;SeedState&gt;&amp; seed);</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;<span class=\"keywordtype\">double</span> computeTau(</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_ref_cur,</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;    <span class=\"keyword\">const</span> BearingVector&amp; f,</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;    <span class=\"keyword\">const</span> FloatType z,</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;    <span class=\"keyword\">const</span> FloatType px_error_angle);</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;<span class=\"keywordtype\">double</span> computeEpiGradAngle(</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;    <span class=\"keyword\">const</span> BearingVector&amp; f_ref,</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;    <span class=\"keyword\">const</span> GradientVector&amp; grad,</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;    <span class=\"keyword\">const</span> FloatType depth_estimate);</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;<span class=\"preprocessor\">#ifdef SVO_USE_PHOTOMETRIC_DISPARITY_ERROR</span></div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;<span class=\"keywordtype\">bool</span> setSeedCovariance(</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size,</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> image_noise2,</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;    SeedImplementation::Ptr seed);</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;<span class=\"keywordtype\">double</span> getSeedDisparityUncertainty(</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;    <span class=\"keyword\">const</span> SeedImplementation::Ptr&amp; seed,</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref);</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;} <span class=\"comment\">// namespace depth_filter_utils</span></div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_afc8be405bd4cfdcceb2440b43326def4\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">svo::DepthFilterOptions::use_inverse_depth</a></div><div class=\"ttdeci\">bool use_inverse_depth</div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:38</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a51a0cbc8693e980d84264c6298570337\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">svo::DepthFilterOptions::max_search_level</a></div><div class=\"ttdeci\">size_t max_search_level</div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:42</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilter_1_1Job_html_a5902f79873da4ddf6a638fed7c34a9f6\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6\">svo::DepthFilter::Job::Job</a></div><div class=\"ttdeci\">Job()</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:82</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1DepthFilter_html\"><div class=\"ttname\"><a href=\"classsvo_1_1DepthFilter.html\">svo::DepthFilter</a></div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:67</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilter_1_1Job_html_a3e542adbf7fec7df6af28988909217bb\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">svo::DepthFilter::Job::Job</a></div><div class=\"ttdeci\">Job(const FramePtr &amp;f, double min_d, double max_d, double mean_d)</div><div class=\"ttdoc\">Constructor for seed initialization. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:95</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></div><div class=\"ttdoc\">Patch-matcher for reprojection-matching and epipolar search in triangulation. </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:28</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a36f3376df5ebfc95465e68e3a1933143\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">svo::DepthFilterOptions::max_n_seeds_per_frame</a></div><div class=\"ttdeci\">size_t max_n_seeds_per_frame</div><div class=\"ttdoc\">Restrict number of features per frame. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:57</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a8dea7a60bbe1a6aa589e15f127307df4\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">svo::DepthFilterOptions::verbose</a></div><div class=\"ttdeci\">bool verbose</div><div class=\"ttdoc\">Show additional debug output. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:45</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_ae7f876587424af58ecc1ea2d935f78d9\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">svo::DepthFilterOptions::scan_epi_unit_sphere</a></div><div class=\"ttdeci\">bool scan_epi_unit_sphere</div><div class=\"ttdoc\">Do epipolar search on unit sphere. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:54</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_ae19ef1b91c4e38450f56890a5ecb0b3d\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">svo::DepthFilterOptions::update_3d_point</a></div><div class=\"ttdeci\">bool update_3d_point</div><div class=\"ttdoc\">Update the 3D point linked by the feature in the seed (false for REMODE-CPU) </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:51</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilter_1_1Job_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:73</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1DepthFilter_html_a0db4f6b729df873df7e49f94e21054d3\"><div class=\"ttname\"><a href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">svo::DepthFilter::getMatcher</a></div><div class=\"ttdeci\">Matcher &amp; getMatcher()</div><div class=\"ttdoc\">test </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:141</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></div><div class=\"ttdoc\">Depth-filter config parameters. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:27</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a9c1cf2b2b0a553f5ff749d009075ec78\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">svo::DepthFilterOptions::affine_est_offset</a></div><div class=\"ttdeci\">bool affine_est_offset</div><div class=\"ttdoc\">use affine model to compensate for brightness change </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:60</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a2782b22ddf8c8bec2ca9c233f3a4b8ee\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">svo::DepthFilterOptions::use_threaded_depthfilter</a></div><div class=\"ttdeci\">bool use_threaded_depthfilter</div><div class=\"ttdoc\">Start separate thread for seed updates. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:48</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html_a594f7085ecee05fdeaa42bcf85dec61c\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">svo::DepthFilterOptions::seed_convergence_sigma2_thresh</a></div><div class=\"ttdeci\">double seed_convergence_sigma2_thresh</div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:33</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilter_1_1Job_html_a95f7afc832efee32c7111f9e8d057699\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699\">svo::DepthFilter::Job::Job</a></div><div class=\"ttdeci\">Job(const FramePtr &amp;_cur_frame, const FramePtr &amp;_ref_frame, const size_t _ref_index)</div><div class=\"ttdoc\">Constructor for seed update. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:87</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/depth__vector_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/include/dvs_depth_from_defocus/depth_vector.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_aed134eeebc665a9f98c953e86ef8771.html\">dvs_depth_from_defocus</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">depth_vector.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#include &quot;evo_utils/geometry.hpp&quot;</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a> {</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">// Stores a set of data associations index &lt;-&gt; depth</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// Used to abstract how the depth is sampled</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// Uses the &quot;Curiously Recursive Template Pattern&quot; to allow static polymorphism</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// for performance (since these functions will be called very often)</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// TODO: scope the actual benefit of using this pattern compared to inheritance</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// (no polymorphism needed..)</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> DerivedDepthVector&gt;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html\">   19</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    DerivedDepthVector&amp; derived() {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span>DerivedDepthVector&amp;<span class=\"keyword\">&gt;</span>(*this);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    }</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>() {}</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">   39</a></span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">DepthVector</a>(<span class=\"keywordtype\">float</span> min_depth, <span class=\"keywordtype\">float</span> max_depth, <span class=\"keywordtype\">size_t</span> num_depth_cells) {</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;        CHECK_GT(min_depth, 0.0);</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;        CHECK_GT(max_depth, 0.0);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;        CHECK_GE(num_depth_cells, 1u);</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;        num_depth_cells_ = num_depth_cells;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;        min_depth_ = min_depth;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;        max_depth_ = max_depth;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;        <span class=\"keywordflow\">if</span> (min_depth_ &gt; max_depth_) std::swap(min_depth_, max_depth_);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;        derived().init();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    }</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">   57</a></span>&#160;    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">size</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> vec_.size(); }</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">   68</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a>(<span class=\"keywordtype\">size_t</span> i) { <span class=\"keywordflow\">return</span> derived().cellIndexToDepth(i); }</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">   79</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a>(<span class=\"keywordtype\">float</span> depth) {</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;        <span class=\"keywordflow\">return</span> derived().depthToCellIndex(depth);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    }</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">   90</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a>(<span class=\"keywordtype\">float</span> depth) { <span class=\"keywordflow\">return</span> derived().depthToCell(depth); }</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">   97</a></span>&#160;    std::vector&lt;float&gt; <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">getDepthVector</a>() {</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;        std::vector&lt;float&gt; out;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> i = 0; i &lt; num_depth_cells_; ++i) {</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;            out.push_back(<a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a>(i));</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;        }</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;        <span class=\"keywordflow\">return</span> out;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    }</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    std::vector&lt;float&gt; vec_;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keywordtype\">size_t</span> num_depth_cells_;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keywordtype\">float</span> min_depth_;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keywordtype\">float</span> max_depth_;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keywordtype\">float</span> depth_to_cell_idx_multiplier_;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;};</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">  116</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>&lt;LinearDepthVector&gt; {</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a>() : <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>() {}</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">LinearDepthVector</a>(<span class=\"keywordtype\">float</span> min_depth, <span class=\"keywordtype\">float</span> max_depth, <span class=\"keywordtype\">size_t</span> num_depth_cells)</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;        : <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>(min_depth, max_depth, num_depth_cells) {}</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    <span class=\"keywordtype\">void</span> init() {</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;        depth_to_cell_idx_multiplier_ =</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;            (float)((num_depth_cells_ - 1) / (max_depth_ - min_depth_));</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;        vec_.resize(num_depth_cells_);</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> i = 0; i &lt; num_depth_cells_; ++i) {</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;            vec_[i] = min_depth_ + (float)i / depth_to_cell_idx_multiplier_;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;        }</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    }</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a>(<span class=\"keywordtype\">size_t</span> i) { <span class=\"keywordflow\">return</span> vec_[i]; }</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a>(<span class=\"keywordtype\">float</span> depth) {</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">size_t</span>)((depth - min_depth_) * depth_to_cell_idx_multiplier_ +</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;                        0.5);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    }</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a>(<span class=\"keywordtype\">float</span> depth) {</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;        <span class=\"keywordflow\">return</span> (depth - min_depth_) * depth_to_cell_idx_multiplier_;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    }</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;};</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">  148</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>&lt;InverseDepthVector&gt; {</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a>() : <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>() {}</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;    <a class=\"code\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">InverseDepthVector</a>(<span class=\"keywordtype\">float</span> min_depth, <span class=\"keywordtype\">float</span> max_depth, <span class=\"keywordtype\">size_t</span> num_depth_cells)</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;        : <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html\">DepthVector</a>(min_depth, max_depth, num_depth_cells) {}</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"keywordtype\">void</span> init() {</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;        inv_min_depth_ = 1.f / min_depth_;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;        inv_max_depth_ = 1.f / max_depth_;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;        depth_to_cell_idx_multiplier_ =</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;            (float)((num_depth_cells_ - 1) / (inv_min_depth_ - inv_max_depth_));</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;        vec_.resize(num_depth_cells_);</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> i = 0; i &lt; num_depth_cells_; ++i) {</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;            vec_[i] = inv_max_depth_ + (float)i / depth_to_cell_idx_multiplier_;</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;        }</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;    }</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">cellIndexToDepth</a>(<span class=\"keywordtype\">size_t</span> i) { <span class=\"keywordflow\">return</span> 1.f / vec_[i]; }</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depthToCellIndex</a>(<span class=\"keywordtype\">float</span> depth) {</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">size_t</span>)((1.f / depth - inv_max_depth_) *</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;                            depth_to_cell_idx_multiplier_ +</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;                        0.5);</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;    }</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depthToCell</a>(<span class=\"keywordtype\">float</span> depth) {</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;        <span class=\"keywordflow\">return</span> (1.f / depth - inv_max_depth_) * depth_to_cell_idx_multiplier_;</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;    }</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;    <span class=\"keywordtype\">float</span> inv_min_depth_;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    <span class=\"keywordtype\">float</span> inv_max_depth_;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;};</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;}  <span class=\"comment\">// namespace depth_from_defocus</span></div><div class=\"ttc\" id=\"classdepth__from__defocus_1_1InverseDepthVector_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1InverseDepthVector.html\">depth_from_defocus::InverseDepthVector</a></div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:148</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1LinearDepthVector_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1LinearDepthVector.html\">depth_from_defocus::LinearDepthVector</a></div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:116</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_a82088f77d80e09f2292c613cc33b6b8b\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depth_from_defocus::DepthVector::depthToCell</a></div><div class=\"ttdeci\">float depthToCell(float depth)</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:90</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_aba9d68160a167d073a7ee98721015dd7\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">depth_from_defocus::DepthVector::DepthVector</a></div><div class=\"ttdeci\">DepthVector(float min_depth, float max_depth, size_t num_depth_cells)</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:39</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_aa2870a5fa611c5e8bd81e2355714167a\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">depth_from_defocus::DepthVector::cellIndexToDepth</a></div><div class=\"ttdeci\">float cellIndexToDepth(size_t i)</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:68</div></div>\n<div class=\"ttc\" id=\"namespacedepth__from__defocus_html\"><div class=\"ttname\"><a href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a></div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:27</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_a486e355df4bb77541f70a8b454212fb0\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depth_from_defocus::DepthVector::depthToCellIndex</a></div><div class=\"ttdeci\">size_t depthToCellIndex(float depth)</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:79</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_a731508f6ba2d90aa2432da004c10fc1a\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">depth_from_defocus::DepthVector::getDepthVector</a></div><div class=\"ttdeci\">std::vector&lt; float &gt; getDepthVector()</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:97</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html\">depth_from_defocus::DepthVector</a></div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:19</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthVector_html_aff41ef5fbcb0af35781db96d68359242\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">depth_from_defocus::DepthVector::size</a></div><div class=\"ttdeci\">size_t size() const</div><div class=\"ttdef\"><b>Definition:</b> depth_vector.hpp:57</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_00bccb38bb6b7fdff7dd02fa42f449ef.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit/solver Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\">solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">solver Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_01bba9aace411f414470092dbe8a8df0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01bba9aace411f414470092dbe8a8df0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_0522c7746e0ceef7b3c0b43ca7537b32.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0522c7746e0ceef7b3c0b43ca7537b32.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_054b5b29f13da08c38c280177936499d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/rpg_common_ros Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_054b5b29f13da08c38c280177936499d.html\">rpg_common_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common_ros Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_08e725bfe20e07dda02b556f17c6ee86.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_evo/src/rqt_evo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_aa8ce86781faf51067abaa50d870017f.html\">rqt_evo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_49a653f56d064b26e19e994a6f933c5f.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_08e725bfe20e07dda02b556f17c6ee86.html\">rqt_evo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_090a70428d2d57d74b0729d005431577.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">backend Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_0c8cdf13dfedcfa43b275f2634fde742.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_1031d3994392a9f3ed0ed15ef4f28b8b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_135e35ac0bac6dfe4cb773674dae4da2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include/dvs_bootstrapping Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_135e35ac0bac6dfe4cb773674dae4da2.html\">dvs_bootstrapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_169217caa56e152ba10678380c01ab08.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_1800fe653041b2911d1d15a9dffaa82f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1800fe653041b2911d1d15a9dffaa82f.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_1f4f0b46fbeb608ac8c8b3bfac8754a6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1f4f0b46fbeb608ac8c8b3bfac8754a6.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_2132e6eb658a67cbcea5d6a82f185c34.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/include/dvs_reconstruction Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2132e6eb658a67cbcea5d6a82f185c34.html\">dvs_reconstruction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_reconstruction Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_21473b55bfd263bee22b451aafd2cda8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_21473b55bfd263bee22b451aafd2cda8.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_23210b07bafb6842e50e879bc7dbe909.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_common Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_4cb6f11201fe59b5f8b217064e02e7bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_264bf4888946048f3cf6ecb954e22abd.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_264bf4888946048f3cf6ecb954e22abd.html\">rqt_svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_28589ab415476537c03231845d7ed67a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_solver Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_d7c3d79efbbb5a2dfc1734ad2347fdcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_2b883add7b135c9e5e3bfc8f505b3884.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_direct Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_8f491c12e2a100af2306a4d4f8aa2ecb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_2ff6cdea7b8bbaa0dd52696e21837862.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_32a6d7527d2420ce0acc44dffffe9047.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/test Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_32a6d7527d2420ce0acc44dffffe9047.html\">test</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">test Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_335842f7c982f3e34f14feece7eea990.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/include/dvs_reconstruction/poisson_solver Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2132e6eb658a67cbcea5d6a82f185c34.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_335842f7c982f3e34f14feece7eea990.html\">poisson_solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">poisson_solver Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_35a308418869f453df6bdc9dae9af9de.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_5662785bbd659b100e1cfd445838d4ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_3945d27750f345dea71137962ee2d0a6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/test Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3945d27750f345dea71137962ee2d0a6.html\">test</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">test Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_bc48aea3166a38dedd5eb54f9bd953e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_3f2bc8ef94161df31aa0fa998a8e5031.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_44460e86fcc33327db83e6af68aa23dd.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_b598d949dc25b12c5aec33e1cc17b644\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_45f0b20d46831437f833c1c1b580a596.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_img_align Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_4fbcc3d3dbbfa94ed8f578780a01afc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_45f325fa12ea395cdf75aae7be29edb2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45f325fa12ea395cdf75aae7be29edb2.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_49a653f56d064b26e19e994a6f933c5f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_evo/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_aa8ce86781faf51067abaa50d870017f.html\">rqt_evo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_49a653f56d064b26e19e994a6f933c5f.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_4cb6f11201fe59b5f8b217064e02e7bb.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_516a7f4e30cbe24e1a7beeb3c3044b88.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_bootstrapping Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_55a428bb46f2406223b0af80b16b4378.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/test Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_55a428bb46f2406223b0af80b16b4378.html\">test</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">test Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_5662785bbd659b100e1cfd445838d4ba.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_58945af6a59344c178157a5fc5bc4e91.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_vikit Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_b7f658749c111965b15dc773c6251486\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_b1fc6689c0c87725dabec16410c0aa59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_9b2859c3cc702bea7061d419fab589ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:dir_28589ab415476537c03231845d7ed67a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_61c8c8ab006fd333bddc787db24b76b5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_66c71803981d78474d9bf8919fdb7ee3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_67894f11b58af1c3e86e30d6cd3b3055.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_py/src/vikit_py Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_df757cdcac57c54e21dfdd2610d1d82b.html\">vikit_py</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9737aa21ba9518170fcfb577d1916604.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_67894f11b58af1c3e86e30d6cd3b3055.html\">vikit_py</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_6a3a4a0c2d596983518dbc013b7736f3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a3a4a0c2d596983518dbc013b7736f3.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">img_align Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_6c587c20a3a519c188b3d1694c38db1f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_72b9375287706546ae7be5ce14c47d9b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_svo/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_264bf4888946048f3cf6ecb954e22abd.html\">rqt_svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72b9375287706546ae7be5ce14c47d9b.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_765e0684aa6ba346986289c4d3dcff4a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/src/poisson_solver Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1800fe653041b2911d1d15a9dffaa82f.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_765e0684aa6ba346986289c4d3dcff4a.html\">poisson_solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">poisson_solver Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_76c80e76d40115c0ad9ee95ad75bb811.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include/dvs_tracking Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_tracking Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_7745d19526f06578835c01082350e8c2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7745d19526f06578835c01082350e8c2.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_77d0aaa9b1a808cb652b0b7308189d7e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_7c14fa4ee89d00dfd52aec81c0d799b7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_7dcab72c99aa3a738c3fb8bef8ff1fdc.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dcab72c99aa3a738c3fb8bef8ff1fdc.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_7ff8565bef8b7c8538e2983a187f6202.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">common Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_8b40cbfecbfd65db1084212127da3a21.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cameras Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_8cdd923d87a6be48658e7bd05d68f366.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rpg_common Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_8f1b1de06a10ceb7346648638cfa78d3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f1b1de06a10ceb7346648638cfa78d3.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_8f491c12e2a100af2306a4d4f8aa2ecb.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_94cf7cecc057ddaeac3dd116c524767b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit/solver/implementation Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\">solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_94cf7cecc057ddaeac3dd116c524767b.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">implementation Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_9737aa21ba9518170fcfb577d1916604.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_py/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_df757cdcac57c54e21dfdd2610d1d82b.html\">vikit_py</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9737aa21ba9518170fcfb577d1916604.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_9b2859c3cc702bea7061d419fab589ba.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_ros Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_3f2bc8ef94161df31aa0fa998a8e5031\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_9f4824430b8c331aa9def5e4e9d9348a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_backend Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_169217caa56e152ba10678380c01ab08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_a206b88f6fff06f8985dc5261e376510.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/evo_utils Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_a5c9c0f87da09cf30452a0e93583eab8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a5c9c0f87da09cf30452a0e93583eab8.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_aa8ce86781faf51067abaa50d870017f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_evo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_aa8ce86781faf51067abaa50d870017f.html\">rqt_evo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_evo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ab54f8f0af1c0da3c45427edfd19be8d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_reconstruction Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_1031d3994392a9f3ed0ed15ef4f28b8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_acb962b3dae11f9b93c8652ea011ee88.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acb962b3dae11f9b93c8652ea011ee88.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_acbe4d1a2cc998b711b62a692f7e8428.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ad997d48941325ba506a317fee6c5d1a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_mapping Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_c8744c9302c531d173f9da8f492215a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ae34ae330844859b9e534674f347263f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/src/evo_utils Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dcab72c99aa3a738c3fb8bef8ff1fdc.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ae34ae330844859b9e534674f347263f.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">evo_utils Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_aed134eeebc665a9f98c953e86ef8771.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/include/dvs_depth_from_defocus Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_aed134eeebc665a9f98c953e86ef8771.html\">dvs_depth_from_defocus</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_depth_from_defocus Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_afd080127a8e68ee8c1a48146acfcb26.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_afd080127a8e68ee8c1a48146acfcb26.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_b1fc6689c0c87725dabec16410c0aa59.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_common Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_44460e86fcc33327db83e6af68aa23dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_b52211d97cb29aa6c603e5e675788789.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/yaml Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b52211d97cb29aa6c603e5e675788789.html\">yaml</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">yaml Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_b598d949dc25b12c5aec33e1cc17b644.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_b7f658749c111965b15dc773c6251486.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_cameras Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_0c8cdf13dfedcfa43b275f2634fde742\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_b81a846affbde9dec926dff04880a132.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_tracking Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_6c587c20a3a519c188b3d1694c38db1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_bc48aea3166a38dedd5eb54f9bd953e2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_bdf1c342ef2ad1b49358e606779f2a0d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo/tracker Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\">tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">tracker Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_be044225ce3721f38f90ce22572be618.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">direct Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_be791e848177ba57ad909d6369eab067.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_ros Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_c8744c9302c531d173f9da8f492215a5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_cb8abb0607e575903425528419f1c044.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">common Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_cecfcbe2e200602c07f926c3ce010d4e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: rqt_svo/src/rqt_svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_264bf4888946048f3cf6ecb954e22abd.html\">rqt_svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72b9375287706546ae7be5ce14c47d9b.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cecfcbe2e200602c07f926c3ce010d4e.html\">rqt_svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">rqt_svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_cecfdde874a5fd435c34b7d3c386dfd0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/include/vikit Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cecfdde874a5fd435c34b7d3c386dfd0.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_d269052296156f872f6655a97b6d44f0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d269052296156f872f6655a97b6d44f0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_d384eab21aaa23c4b65ee34b4c32ed1c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/implementation Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d384eab21aaa23c4b65ee34b4c32ed1c.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">implementation Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">include Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_d9d3c50dad25936e4cdae23cc15ff37b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_dc094115e9d0468308a8571c6218a725.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dc094115e9d0468308a8571c6218a725.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_dde38ef9573bb931f8f0cd681e345b93.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_df757cdcac57c54e21dfdd2610d1d82b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_py Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_df757cdcac57c54e21dfdd2610d1d82b.html\">vikit_py</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit_py Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_e0a052dcd0ac477d85c7eb4498e5864c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_ros Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_7c14fa4ee89d00dfd52aec81c0d799b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ebe0fced1784d1ab9a6de846e2b4455d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ee9fe11dde20c6b12dc04a2afc36bd07.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_tracker Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:dir_66c71803981d78474d9bf8919fdb7ee3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_f5bad920d3b42ab48c3bc48cccbc378a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vikit Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dir_ff6cf60add6ca546af6fb14882689851.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ff6cf60add6ca546af6fb14882689851.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">src Directory Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/doxygen.css",
    "content": "/* The standard CSS for doxygen 1.8.13 */\n\nbody, table, div, p, dl {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\np.reference, p.definition {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\n/* @group Heading Levels */\n\nh1.groupheader {\n\tfont-size: 150%;\n}\n\n.title {\n\tfont: 400 14px/28px Roboto,sans-serif;\n\tfont-size: 150%;\n\tfont-weight: bold;\n\tmargin: 10px 2px;\n}\n\nh2.groupheader {\n\tborder-bottom: 1px solid #879ECB;\n\tcolor: #354C7B;\n\tfont-size: 150%;\n\tfont-weight: normal;\n\tmargin-top: 1.75em;\n\tpadding-top: 8px;\n\tpadding-bottom: 4px;\n\twidth: 100%;\n}\n\nh3.groupheader {\n\tfont-size: 100%;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\t-webkit-transition: text-shadow 0.5s linear;\n\t-moz-transition: text-shadow 0.5s linear;\n\t-ms-transition: text-shadow 0.5s linear;\n\t-o-transition: text-shadow 0.5s linear;\n\ttransition: text-shadow 0.5s linear;\n\tmargin-right: 15px;\n}\n\nh1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n\ttext-shadow: 0 0 15px cyan;\n}\n\ndt {\n\tfont-weight: bold;\n}\n\ndiv.multicol {\n\t-moz-column-gap: 1em;\n\t-webkit-column-gap: 1em;\n\t-moz-column-count: 3;\n\t-webkit-column-count: 3;\n}\n\np.startli, p.startdd {\n\tmargin-top: 2px;\n}\n\np.starttd {\n\tmargin-top: 0px;\n}\n\np.endli {\n\tmargin-bottom: 0px;\n}\n\np.enddd {\n\tmargin-bottom: 4px;\n}\n\np.endtd {\n\tmargin-bottom: 2px;\n}\n\n/* @end */\n\ncaption {\n\tfont-weight: bold;\n}\n\nspan.legend {\n        font-size: 70%;\n        text-align: center;\n}\n\nh3.version {\n        font-size: 90%;\n        text-align: center;\n}\n\ndiv.qindex, div.navtab{\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n}\n\ndiv.qindex, div.navpath {\n\twidth: 100%;\n\tline-height: 140%;\n}\n\ndiv.navtab {\n\tmargin-right: 15px;\n}\n\n/* @group Link Styling */\n\na {\n\tcolor: #3D578C;\n\tfont-weight: normal;\n\ttext-decoration: none;\n}\n\n.contents a:visited {\n\tcolor: #4665A2;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\na.qindex {\n\tfont-weight: bold;\n}\n\na.qindexHL {\n\tfont-weight: bold;\n\tbackground-color: #9CAFD4;\n\tcolor: #ffffff;\n\tborder: 1px double #869DCA;\n}\n\n.contents a.qindexHL:visited {\n        color: #ffffff;\n}\n\na.el {\n\tfont-weight: bold;\n}\n\na.elRef {\n}\n\na.code, a.code:visited, a.line, a.line:visited {\n\tcolor: #4665A2; \n}\n\na.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {\n\tcolor: #4665A2; \n}\n\n/* @end */\n\ndl.el {\n\tmargin-left: -1cm;\n}\n\npre.fragment {\n        border: 1px solid #C4CFE5;\n        background-color: #FBFCFD;\n        padding: 4px 6px;\n        margin: 4px 8px 4px 2px;\n        overflow: auto;\n        word-wrap: break-word;\n        font-size:  9pt;\n        line-height: 125%;\n        font-family: monospace, fixed;\n        font-size: 105%;\n}\n\ndiv.fragment {\n        padding: 0px;\n        margin: 4px 8px 4px 2px;\n\tbackground-color: #FBFCFD;\n\tborder: 1px solid #C4CFE5;\n}\n\ndiv.line {\n\tfont-family: monospace, fixed;\n        font-size: 13px;\n\tmin-height: 13px;\n\tline-height: 1.0;\n\ttext-wrap: unrestricted;\n\twhite-space: -moz-pre-wrap; /* Moz */\n\twhite-space: -pre-wrap;     /* Opera 4-6 */\n\twhite-space: -o-pre-wrap;   /* Opera 7 */\n\twhite-space: pre-wrap;      /* CSS3  */\n\tword-wrap: break-word;      /* IE 5.5+ */\n\ttext-indent: -53px;\n\tpadding-left: 53px;\n\tpadding-bottom: 0px;\n\tmargin: 0px;\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\ndiv.line:after {\n    content:\"\\000A\";\n    white-space: pre;\n}\n\ndiv.line.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 10px cyan;\n}\n\n\nspan.lineno {\n\tpadding-right: 4px;\n\ttext-align: right;\n\tborder-right: 2px solid #0F0;\n\tbackground-color: #E8E8E8;\n        white-space: pre;\n}\nspan.lineno a {\n\tbackground-color: #D8D8D8;\n}\n\nspan.lineno a:hover {\n\tbackground-color: #C8C8C8;\n}\n\n.lineno {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\ndiv.ah, span.ah {\n\tbackground-color: black;\n\tfont-weight: bold;\n\tcolor: #ffffff;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\tpadding: 0.2em;\n\tborder: solid thin #333;\n\tborder-radius: 0.5em;\n\t-webkit-border-radius: .5em;\n\t-moz-border-radius: .5em;\n\tbox-shadow: 2px 2px 3px #999;\n\t-webkit-box-shadow: 2px 2px 3px #999;\n\t-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n\tbackground-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n\tbackground-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);\n}\n\ndiv.classindex ul {\n        list-style: none;\n        padding-left: 0;\n}\n\ndiv.classindex span.ai {\n        display: inline-block;\n}\n\ndiv.groupHeader {\n\tmargin-left: 16px;\n\tmargin-top: 12px;\n\tfont-weight: bold;\n}\n\ndiv.groupText {\n\tmargin-left: 16px;\n\tfont-style: italic;\n}\n\nbody {\n\tbackground-color: white;\n\tcolor: black;\n        margin: 0;\n}\n\ndiv.contents {\n\tmargin-top: 10px;\n\tmargin-left: 12px;\n\tmargin-right: 8px;\n}\n\ntd.indexkey {\n\tbackground-color: #EBEFF6;\n\tfont-weight: bold;\n\tborder: 1px solid #C4CFE5;\n\tmargin: 2px 0px 2px 0;\n\tpadding: 2px 10px;\n        white-space: nowrap;\n        vertical-align: top;\n}\n\ntd.indexvalue {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #C4CFE5;\n\tpadding: 2px 10px;\n\tmargin: 2px 0px;\n}\n\ntr.memlist {\n\tbackground-color: #EEF1F7;\n}\n\np.formulaDsp {\n\ttext-align: center;\n}\n\nimg.formulaDsp {\n\t\n}\n\nimg.formulaInl {\n\tvertical-align: middle;\n}\n\ndiv.center {\n\ttext-align: center;\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding: 0px;\n}\n\ndiv.center img {\n\tborder: 0px;\n}\n\naddress.footer {\n\ttext-align: right;\n\tpadding-right: 12px;\n}\n\nimg.footer {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n\n/* @group Code Colorization */\n\nspan.keyword {\n\tcolor: #008000\n}\n\nspan.keywordtype {\n\tcolor: #604020\n}\n\nspan.keywordflow {\n\tcolor: #e08000\n}\n\nspan.comment {\n\tcolor: #800000\n}\n\nspan.preprocessor {\n\tcolor: #806020\n}\n\nspan.stringliteral {\n\tcolor: #002080\n}\n\nspan.charliteral {\n\tcolor: #008080\n}\n\nspan.vhdldigit { \n\tcolor: #ff00ff \n}\n\nspan.vhdlchar { \n\tcolor: #000000 \n}\n\nspan.vhdlkeyword { \n\tcolor: #700070 \n}\n\nspan.vhdllogic { \n\tcolor: #ff0000 \n}\n\nblockquote {\n        background-color: #F7F8FB;\n        border-left: 2px solid #9CAFD4;\n        margin: 0 24px 0 4px;\n        padding: 0 12px 0 16px;\n}\n\n/* @end */\n\n/*\n.search {\n\tcolor: #003399;\n\tfont-weight: bold;\n}\n\nform.search {\n\tmargin-bottom: 0px;\n\tmargin-top: 0px;\n}\n\ninput.search {\n\tfont-size: 75%;\n\tcolor: #000080;\n\tfont-weight: normal;\n\tbackground-color: #e8eef2;\n}\n*/\n\ntd.tiny {\n\tfont-size: 75%;\n}\n\n.dirtab {\n\tpadding: 4px;\n\tborder-collapse: collapse;\n\tborder: 1px solid #A3B4D7;\n}\n\nth.dirtab {\n\tbackground: #EBEFF6;\n\tfont-weight: bold;\n}\n\nhr {\n\theight: 0px;\n\tborder: none;\n\tborder-top: 1px solid #4A6AAA;\n}\n\nhr.footer {\n\theight: 1px;\n}\n\n/* @group Member Descriptions */\n\ntable.memberdecls {\n\tborder-spacing: 0px;\n\tpadding: 0px;\n}\n\n.memberdecls td, .fieldtable tr {\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\n.memberdecls td.glow, .fieldtable tr.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 15px cyan;\n}\n\n.mdescLeft, .mdescRight,\n.memItemLeft, .memItemRight,\n.memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n\tbackground-color: #F9FAFC;\n\tborder: none;\n\tmargin: 4px;\n\tpadding: 1px 0 0 8px;\n}\n\n.mdescLeft, .mdescRight {\n\tpadding: 0px 8px 4px 8px;\n\tcolor: #555;\n}\n\n.memSeparator {\n        border-bottom: 1px solid #DEE4F0;\n        line-height: 1px;\n        margin: 0px;\n        padding: 0px;\n}\n\n.memItemLeft, .memTemplItemLeft {\n        white-space: nowrap;\n}\n\n.memItemRight {\n\twidth: 100%;\n}\n\n.memTemplParams {\n\tcolor: #4665A2;\n        white-space: nowrap;\n\tfont-size: 80%;\n}\n\n/* @end */\n\n/* @group Member Details */\n\n/* Styles for detailed member documentation */\n\n.memtitle {\n\tpadding: 8px;\n\tborder-top: 1px solid #A8B8D9;\n\tborder-left: 1px solid #A8B8D9;\n\tborder-right: 1px solid #A8B8D9;\n\tborder-top-right-radius: 4px;\n\tborder-top-left-radius: 4px;\n\tmargin-bottom: -1px;\n\tbackground-image: url('nav_f.png');\n\tbackground-repeat: repeat-x;\n\tbackground-color: #E2E8F2;\n\tline-height: 1.25;\n\tfont-weight: 300;\n\tfloat:left;\n}\n\n.permalink\n{\n        font-size: 65%;\n        display: inline-block;\n        vertical-align: middle;\n}\n\n.memtemplate {\n\tfont-size: 80%;\n\tcolor: #4665A2;\n\tfont-weight: normal;\n\tmargin-left: 9px;\n}\n\n.memnav {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n\tmargin: 2px;\n\tmargin-right: 15px;\n\tpadding: 2px;\n}\n\n.mempage {\n\twidth: 100%;\n}\n\n.memitem {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tmargin-right: 5px;\n        -webkit-transition: box-shadow 0.5s linear;\n        -moz-transition: box-shadow 0.5s linear;\n        -ms-transition: box-shadow 0.5s linear;\n        -o-transition: box-shadow 0.5s linear;\n        transition: box-shadow 0.5s linear;\n        display: table !important;\n        width: 100%;\n}\n\n.memitem.glow {\n         box-shadow: 0 0 15px cyan;\n}\n\n.memname {\n        font-weight: 400;\n        margin-left: 6px;\n}\n\n.memname td {\n\tvertical-align: bottom;\n}\n\n.memproto, dl.reflist dt {\n        border-top: 1px solid #A8B8D9;\n        border-left: 1px solid #A8B8D9;\n        border-right: 1px solid #A8B8D9;\n        padding: 6px 0px 6px 0px;\n        color: #253555;\n        font-weight: bold;\n        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n        background-color: #DFE5F1;\n        /* opera specific markup */\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        border-top-right-radius: 4px;\n        /* firefox specific markup */\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        -moz-border-radius-topright: 4px;\n        /* webkit specific markup */\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        -webkit-border-top-right-radius: 4px;\n\n}\n\n.overload {\n        font-family: \"courier new\",courier,monospace;\n\tfont-size: 65%;\n}\n\n.memdoc, dl.reflist dd {\n        border-bottom: 1px solid #A8B8D9;      \n        border-left: 1px solid #A8B8D9;      \n        border-right: 1px solid #A8B8D9; \n        padding: 6px 10px 2px 10px;\n        background-color: #FBFCFD;\n        border-top-width: 0;\n        background-image:url('nav_g.png');\n        background-repeat:repeat-x;\n        background-color: #FFFFFF;\n        /* opera specific markup */\n        border-bottom-left-radius: 4px;\n        border-bottom-right-radius: 4px;\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        /* firefox specific markup */\n        -moz-border-radius-bottomleft: 4px;\n        -moz-border-radius-bottomright: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        /* webkit specific markup */\n        -webkit-border-bottom-left-radius: 4px;\n        -webkit-border-bottom-right-radius: 4px;\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\ndl.reflist dt {\n        padding: 5px;\n}\n\ndl.reflist dd {\n        margin: 0px 0px 10px 0px;\n        padding: 5px;\n}\n\n.paramkey {\n\ttext-align: right;\n}\n\n.paramtype {\n\twhite-space: nowrap;\n}\n\n.paramname {\n\tcolor: #602020;\n\twhite-space: nowrap;\n}\n.paramname em {\n\tfont-style: normal;\n}\n.paramname code {\n        line-height: 14px;\n}\n\n.params, .retval, .exception, .tparams {\n        margin-left: 0px;\n        padding-left: 0px;\n}       \n\n.params .paramname, .retval .paramname {\n        font-weight: bold;\n        vertical-align: top;\n}\n        \n.params .paramtype {\n        font-style: italic;\n        vertical-align: top;\n}       \n        \n.params .paramdir {\n        font-family: \"courier new\",courier,monospace;\n        vertical-align: top;\n}\n\ntable.mlabels {\n\tborder-spacing: 0px;\n}\n\ntd.mlabels-left {\n\twidth: 100%;\n\tpadding: 0px;\n}\n\ntd.mlabels-right {\n\tvertical-align: bottom;\n\tpadding: 0px;\n\twhite-space: nowrap;\n}\n\nspan.mlabels {\n        margin-left: 8px;\n}\n\nspan.mlabel {\n        background-color: #728DC1;\n        border-top:1px solid #5373B4;\n        border-left:1px solid #5373B4;\n        border-right:1px solid #C4CFE5;\n        border-bottom:1px solid #C4CFE5;\n\ttext-shadow: none;\n\tcolor: white;\n\tmargin-right: 4px;\n\tpadding: 2px 3px;\n\tborder-radius: 3px;\n\tfont-size: 7pt;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n}\n\n\n\n/* @end */\n\n/* these are for tree view inside a (index) page */\n\ndiv.directory {\n        margin: 10px 0px;\n        border-top: 1px solid #9CAFD4;\n        border-bottom: 1px solid #9CAFD4;\n        width: 100%;\n}\n\n.directory table {\n        border-collapse:collapse;\n}\n\n.directory td {\n        margin: 0px;\n        padding: 0px;\n\tvertical-align: top;\n}\n\n.directory td.entry {\n        white-space: nowrap;\n        padding-right: 6px;\n\tpadding-top: 3px;\n}\n\n.directory td.entry a {\n        outline:none;\n}\n\n.directory td.entry a img {\n        border: none;\n}\n\n.directory td.desc {\n        width: 100%;\n        padding-left: 6px;\n\tpadding-right: 6px;\n\tpadding-top: 3px;\n\tborder-left: 1px solid rgba(0,0,0,0.05);\n}\n\n.directory tr.even {\n\tpadding-left: 6px;\n\tbackground-color: #F7F8FB;\n}\n\n.directory img {\n\tvertical-align: -30%;\n}\n\n.directory .levels {\n        white-space: nowrap;\n        width: 100%;\n        text-align: right;\n        font-size: 9pt;\n}\n\n.directory .levels span {\n        cursor: pointer;\n        padding-left: 2px;\n        padding-right: 2px;\n\tcolor: #3D578C;\n}\n\n.arrow {\n    color: #9CAFD4;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    cursor: pointer;\n    font-size: 80%;\n    display: inline-block;\n    width: 16px;\n    height: 22px;\n}\n\n.icon {\n    font-family: Arial, Helvetica;\n    font-weight: bold;\n    font-size: 12px;\n    height: 14px;\n    width: 16px;\n    display: inline-block;\n    background-color: #728DC1;\n    color: white;\n    text-align: center;\n    border-radius: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\n.icona {\n    width: 24px;\n    height: 22px;\n    display: inline-block;\n}\n\n.iconfopen {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderopen.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.iconfclosed {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderclosed.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.icondoc {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('doc.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\ntable.directory {\n    font: 400 14px Roboto,sans-serif;\n}\n\n/* @end */\n\ndiv.dynheader {\n        margin-top: 8px;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\naddress {\n\tfont-style: normal;\n\tcolor: #2A3D61;\n}\n\ntable.doxtable caption {\n\tcaption-side: top;\n}\n\ntable.doxtable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.doxtable td, table.doxtable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.doxtable th {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\ntable.fieldtable {\n        /*width: 100%;*/\n        margin-bottom: 10px;\n        border: 1px solid #A8B8D9;\n        border-spacing: 0px;\n        -moz-border-radius: 4px;\n        -webkit-border-radius: 4px;\n        border-radius: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n}\n\n.fieldtable td, .fieldtable th {\n        padding: 3px 7px 2px;\n}\n\n.fieldtable td.fieldtype, .fieldtable td.fieldname {\n        white-space: nowrap;\n        border-right: 1px solid #A8B8D9;\n        border-bottom: 1px solid #A8B8D9;\n        vertical-align: top;\n}\n\n.fieldtable td.fieldname {\n        padding-top: 3px;\n}\n\n.fieldtable td.fielddoc {\n        border-bottom: 1px solid #A8B8D9;\n        /*width: 100%;*/\n}\n\n.fieldtable td.fielddoc p:first-child {\n        margin-top: 0px;\n}       \n        \n.fieldtable td.fielddoc p:last-child {\n        margin-bottom: 2px;\n}\n\n.fieldtable tr:last-child td {\n        border-bottom: none;\n}\n\n.fieldtable th {\n        background-image:url('nav_f.png');\n        background-repeat:repeat-x;\n        background-color: #E2E8F2;\n        font-size: 90%;\n        color: #253555;\n        padding-bottom: 4px;\n        padding-top: 5px;\n        text-align:left;\n        font-weight: 400;\n        -moz-border-radius-topleft: 4px;\n        -moz-border-radius-topright: 4px;\n        -webkit-border-top-left-radius: 4px;\n        -webkit-border-top-right-radius: 4px;\n        border-top-left-radius: 4px;\n        border-top-right-radius: 4px;\n        border-bottom: 1px solid #A8B8D9;\n}\n\n\n.tabsearch {\n\ttop: 0px;\n\tleft: 10px;\n\theight: 36px;\n\tbackground-image: url('tab_b.png');\n\tz-index: 101;\n\toverflow: hidden;\n\tfont-size: 13px;\n}\n\n.navpath ul\n{\n\tfont-size: 11px;\n\tbackground-image:url('tab_b.png');\n\tbackground-repeat:repeat-x;\n\tbackground-position: 0 -5px;\n\theight:30px;\n\tline-height:30px;\n\tcolor:#8AA0CC;\n\tborder:solid 1px #C2CDE4;\n\toverflow:hidden;\n\tmargin:0px;\n\tpadding:0px;\n}\n\n.navpath li\n{\n\tlist-style-type:none;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:15px;\n\tbackground-image:url('bc_s.png');\n\tbackground-repeat:no-repeat;\n\tbackground-position:right;\n\tcolor:#364D7C;\n}\n\n.navpath li.navelem a\n{\n\theight:32px;\n\tdisplay:block;\n\ttext-decoration: none;\n\toutline: none;\n\tcolor: #283A5D;\n\tfont-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n\ttext-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n\ttext-decoration: none;        \n}\n\n.navpath li.navelem a:hover\n{\n\tcolor:#6884BD;\n}\n\n.navpath li.footer\n{\n        list-style-type:none;\n        float:right;\n        padding-left:10px;\n        padding-right:15px;\n        background-image:none;\n        background-repeat:no-repeat;\n        background-position:right;\n        color:#364D7C;\n        font-size: 8pt;\n}\n\n\ndiv.summary\n{\n\tfloat: right;\n\tfont-size: 8pt;\n\tpadding-right: 5px;\n\twidth: 50%;\n\ttext-align: right;\n}       \n\ndiv.summary a\n{\n\twhite-space: nowrap;\n}\n\ntable.classindex\n{\n        margin: 10px;\n        white-space: nowrap;\n        margin-left: 3%;\n        margin-right: 3%;\n        width: 94%;\n        border: 0;\n        border-spacing: 0; \n        padding: 0;\n}\n\ndiv.ingroups\n{\n\tfont-size: 8pt;\n\twidth: 50%;\n\ttext-align: left;\n}\n\ndiv.ingroups a\n{\n\twhite-space: nowrap;\n}\n\ndiv.header\n{\n        background-image:url('nav_h.png');\n        background-repeat:repeat-x;\n\tbackground-color: #F9FAFC;\n\tmargin:  0px;\n\tborder-bottom: 1px solid #C4CFE5;\n}\n\ndiv.headertitle\n{\n\tpadding: 5px 5px 5px 10px;\n}\n\ndl\n{\n        padding: 0 0 0 10px;\n}\n\n/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */\ndl.section\n{\n\tmargin-left: 0px;\n\tpadding-left: 0px;\n}\n\ndl.note\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #D0C000;\n}\n\ndl.warning, dl.attention\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #FF0000;\n}\n\ndl.pre, dl.post, dl.invariant\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00D000;\n}\n\ndl.deprecated\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #505050;\n}\n\ndl.todo\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #00C0E0;\n}\n\ndl.test\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #3030E0;\n}\n\ndl.bug\n{\n        margin-left:-7px;\n        padding-left: 3px;\n        border-left:4px solid;\n        border-color: #C08050;\n}\n\ndl.section dd {\n\tmargin-bottom: 6px;\n}\n\n\n#projectlogo\n{\n\ttext-align: center;\n\tvertical-align: bottom;\n\tborder-collapse: separate;\n}\n \n#projectlogo img\n{ \n\tborder: 0px none;\n}\n \n#projectalign\n{\n        vertical-align: middle;\n}\n\n#projectname\n{\n\tfont: 300% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 2px 0px;\n}\n    \n#projectbrief\n{\n\tfont: 120% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#projectnumber\n{\n\tfont: 50% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#titlearea\n{\n\tpadding: 0px;\n\tmargin: 0px;\n\twidth: 100%;\n\tborder-bottom: 1px solid #5373B4;\n}\n\n.image\n{\n        text-align: center;\n}\n\n.dotgraph\n{\n        text-align: center;\n}\n\n.mscgraph\n{\n        text-align: center;\n}\n\n.plantumlgraph\n{\n        text-align: center;\n}\n\n.diagraph\n{\n        text-align: center;\n}\n\n.caption\n{\n\tfont-weight: bold;\n}\n\ndiv.zoom\n{\n\tborder: 1px solid #90A5CE;\n}\n\ndl.citelist {\n        margin-bottom:50px;\n}\n\ndl.citelist dt {\n        color:#334975;\n        float:left;\n        font-weight:bold;\n        margin-right:10px;\n        padding:5px;\n}\n\ndl.citelist dd {\n        margin:2px 0;\n        padding:5px 0;\n}\n\ndiv.toc {\n        padding: 14px 25px;\n        background-color: #F4F6FA;\n        border: 1px solid #D8DFEE;\n        border-radius: 7px 7px 7px 7px;\n        float: right;\n        height: auto;\n        margin: 0 8px 10px 10px;\n        width: 200px;\n}\n\ndiv.toc li {\n        background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n        margin-top: 5px;\n        padding-left: 10px;\n        padding-top: 2px;\n}\n\ndiv.toc h3 {\n        font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n\tcolor: #4665A2;\n        border-bottom: 0 none;\n        margin: 0;\n}\n\ndiv.toc ul {\n        list-style: none outside none;\n        border: medium none;\n        padding: 0px;\n}       \n\ndiv.toc li.level1 {\n        margin-left: 0px;\n}\n\ndiv.toc li.level2 {\n        margin-left: 15px;\n}\n\ndiv.toc li.level3 {\n        margin-left: 30px;\n}\n\ndiv.toc li.level4 {\n        margin-left: 45px;\n}\n\n.inherit_header {\n        font-weight: bold;\n        color: gray;\n        cursor: pointer;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.inherit_header td {\n        padding: 6px 0px 2px 5px;\n}\n\n.inherit {\n        display: none;\n}\n\ntr.heading h2 {\n        margin-top: 12px;\n        margin-bottom: 4px;\n}\n\n/* tooltip related style info */\n\n.ttc {\n        position: absolute;\n        display: none;\n}\n\n#powerTip {\n\tcursor: default;\n\twhite-space: nowrap;\n\tbackground-color: white;\n\tborder: 1px solid gray;\n\tborder-radius: 4px 4px 4px 4px;\n\tbox-shadow: 1px 1px 7px gray;\n\tdisplay: none;\n\tfont-size: smaller;\n\tmax-width: 80%;\n\topacity: 0.9;\n\tpadding: 1ex 1em 1em;\n\tposition: absolute;\n\tz-index: 2147483647;\n}\n\n#powerTip div.ttdoc {\n        color: grey;\n\tfont-style: italic;\n}\n\n#powerTip div.ttname a {\n        font-weight: bold;\n}\n\n#powerTip div.ttname {\n        font-weight: bold;\n}\n\n#powerTip div.ttdeci {\n        color: #006318;\n}\n\n#powerTip div {\n        margin: 0px;\n        padding: 0px;\n        font: 12px/16px Roboto,sans-serif;\n}\n\n#powerTip:before, #powerTip:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tmargin: 0px;\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.w:after,  #powerTip.w:before,\n#powerTip.e:after,  #powerTip.e:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.nw:after, #powerTip.nw:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n}\n\n#powerTip.n:after,  #powerTip.s:after,\n#powerTip.w:after,  #powerTip.e:after,\n#powerTip.nw:after, #powerTip.ne:after,\n#powerTip.sw:after, #powerTip.se:after {\n\tborder-color: rgba(255, 255, 255, 0);\n}\n\n#powerTip.n:before,  #powerTip.s:before,\n#powerTip.w:before,  #powerTip.e:before,\n#powerTip.nw:before, #powerTip.ne:before,\n#powerTip.sw:before, #powerTip.se:before {\n\tborder-color: rgba(128, 128, 128, 0);\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.nw:after, #powerTip.nw:before {\n\ttop: 100%;\n}\n\n#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {\n\tborder-top-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n#powerTip.n:before {\n\tborder-top-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n#powerTip.n:after, #powerTip.n:before {\n\tleft: 50%;\n}\n\n#powerTip.nw:after, #powerTip.nw:before {\n\tright: 14px;\n}\n\n#powerTip.ne:after, #powerTip.ne:before {\n\tleft: 14px;\n}\n\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tbottom: 100%;\n}\n\n#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {\n\tborder-bottom-color: #ffffff;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n\n#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {\n\tborder-bottom-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n\n#powerTip.s:after, #powerTip.s:before {\n\tleft: 50%;\n}\n\n#powerTip.sw:after, #powerTip.sw:before {\n\tright: 14px;\n}\n\n#powerTip.se:after, #powerTip.se:before {\n\tleft: 14px;\n}\n\n#powerTip.e:after, #powerTip.e:before {\n\tleft: 100%;\n}\n#powerTip.e:after {\n\tborder-left-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.e:before {\n\tborder-left-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n#powerTip.w:after, #powerTip.w:before {\n\tright: 100%;\n}\n#powerTip.w:after {\n\tborder-right-color: #ffffff;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.w:before {\n\tborder-right-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n@media print\n{\n  #top { display: none; }\n  #side-nav { display: none; }\n  #nav-path { display: none; }\n  body { overflow:visible; }\n  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }\n  .summary { display: none; }\n  .memitem { page-break-inside: avoid; }\n  #doc-content\n  {\n    margin-left:0 !important;\n    height:auto !important;\n    width:auto !important;\n    overflow:inherit;\n    display:inline;\n  }\n}\n\n/* @group Markdown */\n\n/*\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTableHead tr {\n}\n\ntable.markdownTableBodyLeft td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\nth.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter {\n\ttext-align: center\n}\n*/\n\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTable tr {\n}\n\nth.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft, td.markdownTableBodyLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight, td.markdownTableBodyRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter, td.markdownTableBodyCenter {\n\ttext-align: center\n}\n\n\n/* @end */\n"
  },
  {
    "path": "docs/dvs__mapping__nodelet_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_mapping/include/dvs_depth_from_defocus/dvs_mapping_nodelet.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\">dvs_mapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_aed134eeebc665a9f98c953e86ef8771.html\">dvs_depth_from_defocus</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_mapping_nodelet.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;nodelet/nodelet.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_depth_from_defocus/depth_defocus_node.hpp&quot;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\"><a class=\"line\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">    9</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">DvsMappingNodelet</a> : <span class=\"keyword\">public</span> nodelet::Nodelet {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> onInit();</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <a class=\"code\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">DepthFromDefocusNode</a>* node_;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;};</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;}</div><div class=\"ttc\" id=\"namespacedepth__from__defocus_html\"><div class=\"ttname\"><a href=\"namespacedepth__from__defocus.html\">depth_from_defocus</a></div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:27</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DepthFromDefocusNode_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\">depth_from_defocus::DepthFromDefocusNode</a></div><div class=\"ttdef\"><b>Definition:</b> depth_defocus_node.hpp:58</div></div>\n<div class=\"ttc\" id=\"classdepth__from__defocus_1_1DvsMappingNodelet_html\"><div class=\"ttname\"><a href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\">depth_from_defocus::DvsMappingNodelet</a></div><div class=\"ttdef\"><b>Definition:</b> dvs_mapping_nodelet.h:9</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dvs__tracking__nodelet_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include/dvs_tracking/dvs_tracking_nodelet.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">dvs_tracking_nodelet.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;nodelet/nodelet.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_tracking/tracker.hpp&quot;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\"><a class=\"line\" href=\"classDvsTrackingNodelet.html\">    7</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a> : <span class=\"keyword\">public</span> nodelet::Nodelet {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> onInit();</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;    <a class=\"code\" href=\"classTracker.html\">Tracker</a>* node_;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;};</div><div class=\"ttc\" id=\"classDvsTrackingNodelet_html\"><div class=\"ttname\"><a href=\"classDvsTrackingNodelet.html\">DvsTrackingNodelet</a></div><div class=\"ttdef\"><b>Definition:</b> dvs_tracking_nodelet.h:7</div></div>\n<div class=\"ttc\" id=\"classTracker_html\"><div class=\"ttname\"><a href=\"classTracker.html\">Tracker</a></div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/dynsections.js",
    "content": "function toggleVisibility(linkObj)\n{\n var base = $(linkObj).attr('id');\n var summary = $('#'+base+'-summary');\n var content = $('#'+base+'-content');\n var trigger = $('#'+base+'-trigger');\n var src=$(trigger).attr('src');\n if (content.is(':visible')===true) {\n   content.hide();\n   summary.show();\n   $(linkObj).addClass('closed').removeClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');\n } else {\n   content.show();\n   summary.hide();\n   $(linkObj).removeClass('closed').addClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');\n } \n return false;\n}\n\nfunction updateStripes()\n{\n  $('table.directory tr').\n       removeClass('even').filter(':visible:even').addClass('even');\n}\n\nfunction toggleLevel(level)\n{\n  $('table.directory tr').each(function() {\n    var l = this.id.split('_').length-1;\n    var i = $('#img'+this.id.substring(3));\n    var a = $('#arr'+this.id.substring(3));\n    if (l<level+1) {\n      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');\n      a.html('&#9660;');\n      $(this).show();\n    } else if (l==level+1) {\n      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');\n      a.html('&#9658;');\n      $(this).show();\n    } else {\n      $(this).hide();\n    }\n  });\n  updateStripes();\n}\n\nfunction toggleFolder(id)\n{\n  // the clicked row\n  var currentRow = $('#row_'+id);\n\n  // all rows after the clicked row\n  var rows = currentRow.nextAll(\"tr\");\n\n  var re = new RegExp('^row_'+id+'\\\\d+_$', \"i\"); //only one sub\n\n  // only match elements AFTER this one (can't hide elements before)\n  var childRows = rows.filter(function() { return this.id.match(re); });\n\n  // first row is visible we are HIDING\n  if (childRows.filter(':first').is(':visible')===true) {\n    // replace down arrow by right arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    currentRowSpans.filter(\".arrow\").html('&#9658;');\n    rows.filter(\"[id^=row_\"+id+\"]\").hide(); // hide all children\n  } else { // we are SHOWING\n    // replace right arrow by down arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfclosed\").removeClass(\"iconfclosed\").addClass(\"iconfopen\");\n    currentRowSpans.filter(\".arrow\").html('&#9660;');\n    // replace down arrows by right arrows for child rows\n    var childRowsSpans = childRows.find(\"span\");\n    childRowsSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    childRowsSpans.filter(\".arrow\").html('&#9658;');\n    childRows.show(); //show all children\n  }\n  updateStripes();\n}\n\n\nfunction toggleInherit(id)\n{\n  var rows = $('tr.inherit.'+id);\n  var img = $('tr.inherit_header.'+id+' img');\n  var src = $(img).attr('src');\n  if (rows.filter(':first').is(':visible')===true) {\n    rows.css('display','none');\n    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');\n  } else {\n    rows.css('display','table-row'); // using show() causes jump in firefox\n    $(img).attr('src',src.substring(0,src.length-10)+'open.png');\n  }\n}\n\n"
  },
  {
    "path": "docs/elder__zucker_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/elder_zucker.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">elder_zucker.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>elder_zucker {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keywordtype\">void</span> detectEdges(</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; img_pyr,</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> sigma,</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;    cv::Mat&amp; edge_map,</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;    cv::Mat&amp; level_map);</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keywordtype\">void</span> getCovarEntries(</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; src,</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;    cv::Mat&amp; dxdx,</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    cv::Mat&amp; dydy,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    cv::Mat&amp; dxdy);</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keywordtype\">void</span> filterGauss3by316S(</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; src,</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    cv::Mat&amp; dst);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;} <span class=\"comment\">// namespace elder_zucker</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/entrypoint_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/entrypoint.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">entrypoint.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;gtest/gtest.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;gflags/gflags.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#define VIKIT_UNITTEST_ENTRYPOINT\\</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">  int main(int argc, char** argv) {\\</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">  ::testing::InitGoogleTest(&amp;argc, argv);\\</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">  google::InitGoogleLogging(argv[0]);\\</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">  google::InstallFailureSignalHandler();\\</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">  ::testing::FLAGS_gtest_death_test_style = &quot;threadsafe&quot;;\\</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">  FLAGS_alsologtostderr = true; \\</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">  FLAGS_colorlogtostderr = true; \\</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">  return RUN_ALL_TESTS();\\</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">}</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">// Let the Eclipse parser see the macro.</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#ifndef TEST</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#define TEST(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#ifndef TEST_F</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#define TEST_F(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"preprocessor\">#ifndef TEST_P</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#define TEST_P(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">#ifndef TYPED_TEST</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">#define TYPED_TEST(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"preprocessor\">#ifndef TYPED_TEST_P</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"preprocessor\">#define TYPED_TEST_P(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"preprocessor\">#ifndef TYPED_TEST_CASE</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"preprocessor\">#define TYPED_TEST_CASE(a, b) int Test_##a##_##b()</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"preprocessor\">#ifndef REGISTER_TYPED_TEST_CASE_P</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"preprocessor\">#define REGISTER_TYPED_TEST_CASE_P(a, ...)  int Test_##a()</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">#ifndef INSTANTIATE_TYPED_TEST_CASE_P</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">#define INSTANTIATE_TYPED_TEST_CASE_P(a, ...) int Test_##a()</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">#endif</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/equidistant__distortion_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_distortion.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">equidistant_distortion.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;{</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span>cameras</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// This class implements the distortion model described in the paper:</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">// &quot;A Generic Camera Model and Calibration Method for Conventional, Wide-Angle,</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">// and Fish-Eye Lenses&quot; by Juho Kannala and Sami S. Brandt, PAMI.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">   15</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;{</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> k1, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> k2, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> k3,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;                        <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> k4)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    : k1_(k1), k2_(k2), k3_(k3), k4_(k4)</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  }</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a>(<span class=\"keyword\">const</span> Eigen::VectorXd&amp; parameters)</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  {</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    CHECK(parameters.size() == 4);</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    k1_ = parameters(0);</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    k2_ = parameters(1);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    k3_ = parameters(2);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    k4_ = parameters(3);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  }</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">EquidistantDistortion</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> distort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = std::sqrt(x * x + y * y);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keywordflow\">if</span> (r &lt; kRThresh)</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    {</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    }</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta = std::atan(r);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> thetad = thetad_from_theta(theta);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> scaling = thetad / r;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    x *= scaling;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    y *= scaling;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  }</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector2d distort(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; vector)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = vector.norm();</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordflow\">if</span> (r &lt; kRThresh)</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    {</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keywordflow\">return</span> vector;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    }</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta = std::atan(r);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> thetad = thetad_from_theta(theta);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> scaling = thetad / r;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keywordflow\">return</span> vector * scaling;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  }</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Matrix2d jacobian(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; uv)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r = uv.norm();</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keywordflow\">if</span> (r &lt; kRThresh)</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <span class=\"keywordflow\">return</span> Eigen::Matrix2d::Identity();</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> inv_r = 1.0 / r;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r2 = r * r;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dr_du = uv(0) * inv_r;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dr_dv = uv(1) * inv_r;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta = std::atan(r);</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dtheta_dr = 1.0 / (1 + r * r);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> thetad = thetad_from_theta(theta);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dthetad_dtheta = deriv_thetad_from_theta(theta);</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dthetad_dr = dthetad_dtheta * dtheta_dr;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> scaling = thetad / r;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dscaling_du = (dthetad_dr * dr_du * r - dr_du * thetad) / r2;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dscaling_dv = (dthetad_dr * dr_dv * r - dr_dv * thetad) / r2;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dx_du = dscaling_du * uv(0) + scaling;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dx_dv = dscaling_dv * uv(0);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dy_du = dscaling_du * uv(1);</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dy_dv = dscaling_dv * uv(1) + scaling;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    Eigen::Matrix2d jac;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    jac &lt;&lt; dx_du, dx_dv, dy_du, dy_dv;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    <span class=\"keywordflow\">return</span> jac;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  }</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> undistort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> thetad = std::sqrt(x * x + y * y);</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"keywordtype\">double</span> theta = thetad;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; 5; ++i)</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    {</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta2 = theta * theta;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta4 = theta2 * theta2;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta6 = theta4 * theta2;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta8 = theta4 * theta4;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      theta = thetad /</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;              (1.0 + k1_ * theta2 + k2_ * theta4 + k3_ * theta6 + k4_ * theta8);</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    }</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> scaling = std::tan(theta) / thetad;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    x *= scaling;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    y *= scaling;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  }</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(std::ostream&amp; out)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    out &lt;&lt; <span class=\"stringliteral\">&quot;  Distortion: Equidistant(&quot;</span> &lt;&lt; k1_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; k2_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; k3_</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;        &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; k4_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  }</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"keyword\">enum</span> DistortionParameters</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  {</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    kRadialDistortionFactor1,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;    kRadialDistortionFactor2,</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    kRadialDistortionFactor3,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    kRadialDistortionFactor4</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  };</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"comment\">// returns distortion parameters as vector</span></div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  <span class=\"comment\">// [k1 k2 k3 k4]</span></div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  <span class=\"keyword\">inline</span> Eigen::VectorXd getDistortionParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;    Eigen::VectorXd distortion(4);</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    distortion(0) = k1_;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    distortion(1) = k2_;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    distortion(2) = k3_;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    distortion(3) = k4_;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    <span class=\"keywordflow\">return</span> distortion;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;  }</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;  <span class=\"keywordtype\">double</span> k1_ = 0;  <span class=\"comment\">// Radial distortion factor 1</span></div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordtype\">double</span> k2_ = 0;  <span class=\"comment\">// Radial distortion factor 2</span></div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  <span class=\"keywordtype\">double</span> k3_ = 0;  <span class=\"comment\">// Radial distortion factor 3</span></div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">double</span> k4_ = 0;  <span class=\"comment\">// Radial distortion factor 4</span></div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> thetad_from_theta(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta2 = theta * theta;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta4 = theta2 * theta2;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta6 = theta4 * theta2;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta8 = theta4 * theta4;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> thetad = theta * (1.0 + k1_ * theta2 + k2_ * theta4 +</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;                                   k3_ * theta6 + k4_ * theta8);</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;    <span class=\"keywordflow\">return</span> thetad;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  }</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> deriv_thetad_from_theta(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta2 = theta * theta;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta4 = theta2 * theta2;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta6 = theta4 * theta2;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> theta8 = theta4 * theta4;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;    <span class=\"keywordflow\">return</span> 1 + 3 * k1_ * theta2 + 5 * k2_ * theta4 + 7 * k3_ * theta6 +</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;           9 * k4_ * theta8;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;  }</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> kRThresh = 1e-8;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;};</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1EquidistantDistortion_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\">vk::cameras::EquidistantDistortion</a></div><div class=\"ttdef\"><b>Definition:</b> equidistant_distortion.h:15</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/equidistant__fisheye__geometry_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_fisheye_geometry.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">equidistant_fisheye_geometry.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/camera_geometry.h&quot;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/equidistant_fisheye_projection.h&quot;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// Equidistant fisheye geometry is strongly typed to enforce mask.</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a> :</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>&lt;EquidistantFisheyeProjection&gt;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a>(</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> focal_length,</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector2d&amp; principal_point, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> radius);</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a>(</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a>&amp; projection, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> radius);</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">EquidistantFisheyeGeometry</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;};</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\">vk::cameras::EquidistantFisheyeGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> equidistant_fisheye_geometry.h:10</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.h:12</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></div><div class=\"ttdef\"><b>Definition:</b> equidistant_fisheye_projection.h:11</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/equidistant__fisheye__projection_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_fisheye_projection.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">equidistant_fisheye_projection.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">// May later be generalized to any distortion once a use case exists.</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">   11</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">const</span> CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kEqFisheye;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">EquidistantFisheyeProjection</a>(</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;      <span class=\"keywordtype\">double</span> focal_length, Eigen::Vector2d principal_point);</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keywordtype\">bool</span> backProject3(</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;      Eigen::Vector3d* out_bearing_vector) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keywordtype\">void</span> project3(</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;      Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordtype\">double</span> errorMultiplier() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keywordtype\">void</span> print(std::ostream&amp; out) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">enum</span> IntrinsicParameters</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    kFocalLength,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    kPrincipalPointX,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    kPrincipalPointY</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  };</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"comment\">// returns the intrinsic values as vector</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"comment\">// [focal_length, cx, cy]</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  Eigen::VectorXd getIntrinsicParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"comment\">// Returns the distortion parameters</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  Eigen::VectorXd getDistortionParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Eigen::Vector2d&amp; principal_point()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keywordflow\">return</span> principal_point_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  }</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> focal_length_;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector2d principal_point_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;};</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\">vk::cameras::EquidistantFisheyeProjection</a></div><div class=\"ttdef\"><b>Definition:</b> equidistant_fisheye_projection.h:11</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__alignment_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/feature_alignment.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_alignment.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#ifndef SVO_DIRECT_FEATURE_ALIGNMENT_H_</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#define SVO_DIRECT_FEATURE_ALIGNMENT_H_</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo_1_1feature__alignment.html\">   21</a></span>&#160;<span class=\"keyword\">namespace </span>feature_alignment {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keywordtype\">bool</span> align1D(</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; cur_img,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;GradientVector&gt;&amp; dir,                  <span class=\"comment\">// direction in which the patch is allowed to move</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    uint8_t* ref_patch_with_border,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    uint8_t* ref_patch,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_offset,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_gain,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    Keypoint* cur_px_estimate,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keywordtype\">double</span>* h_inv = <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keywordtype\">bool</span> align2D(</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; cur_img,</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    uint8_t* ref_patch_with_border,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    uint8_t* ref_patch,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_offset,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_gain,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    Keypoint&amp; cur_px_estimate,</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keywordtype\">bool</span> no_simd = <span class=\"keyword\">false</span>,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    std::vector&lt;Eigen::Vector2f&gt;* each_step=<span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"keywordtype\">bool</span> align2D_SSE2(</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; cur_img,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    uint8_t* ref_patch_with_border,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    uint8_t* ref_patch,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    Keypoint&amp; cur_px_estimate);</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keywordtype\">bool</span> align2D_NEON(</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; cur_img,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    uint8_t* ref_patch_with_border,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    uint8_t* ref_patch,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    Keypoint&amp; cur_px_estimate);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"keywordtype\">void</span> alignPyr2DVec(</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; img_pyr_ref,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; img_pyr_cur,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> min_level,</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;int&gt;&amp; patch_sizes,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> min_update_squared,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Point2f&gt;&amp; px_ref,</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    std::vector&lt;cv::Point2f&gt;&amp; px_cur,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    std::vector&lt;uint8_t&gt;&amp; status);</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;<span class=\"keywordtype\">bool</span> alignPyr2D(</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; img_pyr_ref,</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; img_pyr_cur,</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> min_level,</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;int&gt;&amp; patch_sizes,</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_iter,</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> min_update_squared,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector2i &amp;px_ref_level_0,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    Keypoint &amp;px_cur_level_0);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;} <span class=\"comment\">// namespace feature_alignment</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"preprocessor\">#endif // SVO_DIRECT_FEATURE_ALIGNMENT_H_</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__detection_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/feature_detection.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_detection.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/occupancy_grid_2d.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/direct/feature_detection_types.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractDetector.html\">   20</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;{</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;AbstractDetector&gt; Ptr;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a> options_;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keyword\">const</span> CameraPtr&amp; cam);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">virtual</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">~AbstractDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">void</span> detect(<span class=\"keyword\">const</span> FramePtr &amp;frame);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;      FeatureTypes&amp; types_vec) = 0;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> resetGrid()</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  {</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    grid_.reset();</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  }</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a> grid_;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;};</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FastDetector.html\">   61</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;{</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;};</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1GradientDetector.html\">   81</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;{</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;};</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1GradientDetectorGrid.html\">  102</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;{</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;};</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FastGradDetector.html\">  121</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;{</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;};</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AllPixelsDetector.html\">  140</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;{</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;};</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">  160</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;{</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;};</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1CannyDetector.html\">  177</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;{</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;};</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SobelDetector.html\">  194</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;{</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">AbstractDetector::AbstractDetector</a>; <span class=\"comment\">// default constructor</span></div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> detect(</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;      Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;      Scores&amp; score_vec,</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;      Levels&amp; level_vec,</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;      Gradients&amp; grad_vec,</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;      FeatureTypes&amp; types_vec) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;};</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1SobelDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SobelDetector.html\">svo::SobelDetector</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:194</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1OccupandyGrid2D_html\"><div class=\"ttname\"><a href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></div><div class=\"ttdef\"><b>Definition:</b> occupancy_grid_2d.h:11</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractDetector.html\">svo::AbstractDetector</a></div><div class=\"ttdoc\">All detectors should derive from this abstract class. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:20</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FastDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FastDetector.html\">svo::FastDetector</a></div><div class=\"ttdoc\">FAST detector by Edward Rosten. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:61</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1GradientDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1GradientDetector.html\">svo::GradientDetector</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:81</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1GradientDetectorGrid_html\"><div class=\"ttname\"><a href=\"classsvo_1_1GradientDetectorGrid.html\">svo::GradientDetectorGrid</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:102</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FastGradDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:121</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AllPixelsDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1AllPixelsDetector.html\">svo::AllPixelsDetector</a></div><div class=\"ttdoc\">Dummy detector that selects all pixels. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:140</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractDetector_html_a3386ff1b9ad698da5674b7bf91ad7bbd\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">svo::AbstractDetector::AbstractDetector</a></div><div class=\"ttdeci\">AbstractDetector(const DetectorOptions &amp;options, const CameraPtr &amp;cam)</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection.cpp:27</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1GradientHuangMumfordDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1GradientHuangMumfordDetector.html\">svo::GradientHuangMumfordDetector</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:160</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1CannyDetector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1CannyDetector.html\">svo::CannyDetector</a></div><div class=\"ttdef\"><b>Definition:</b> feature_detection.h:177</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractDetector_html_a64abe74269efc7ba9e848fc634f46225\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">svo::AbstractDetector::~AbstractDetector</a></div><div class=\"ttdeci\">virtual ~AbstractDetector()=default</div><div class=\"ttdoc\">Default destructor. </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__detection__types_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/feature_detection_types.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_detection_types.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html\">   17</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1Corner.html\">Corner</a></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;{</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">   19</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">x</a>;        </div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">   20</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">y</a>;        </div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">   21</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">level</a>;    </div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">   22</a></span>&#160;  <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">score</a>;  </div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">   23</a></span>&#160;  <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">angle</a>;  </div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <a class=\"code\" href=\"structsvo_1_1Corner.html\">Corner</a>(<span class=\"keywordtype\">int</span> _x, <span class=\"keywordtype\">int</span> _y, <span class=\"keywordtype\">float</span> _score, <span class=\"keywordtype\">int</span> _level, <span class=\"keywordtype\">float</span> _angle)</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    : x(_x), y(_y), level(_level), score(_score), angle(_angle)</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  {}</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;};</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">using</span> Corners = std::vector&lt;Corner&gt;;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">   33</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">enum class</span> <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">DetectorType</a></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;{</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\">kFast</a>,            </div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca\">kGrad</a>,            </div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97\">kFastGrad</a>,        </div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b\">kGridGrad</a>,        </div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6\">kAll</a>,             </div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084\">kGradHuangMumford</a>,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359\">kCanny</a>,           </div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b\">kSobel</a>            </div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;};</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html\">   47</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;{</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c\">   50</a></span>&#160;  <span class=\"keywordtype\">size_t</span> cell_size = 30;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d\">   53</a></span>&#160;  <span class=\"keywordtype\">int</span> max_level = 2;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386\">   56</a></span>&#160;  <span class=\"keywordtype\">int</span> min_level = 0;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391\">   59</a></span>&#160;  <span class=\"keywordtype\">int</span> border = 8;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20\">   62</a></span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">DetectorType</a> detector_type = <a class=\"code\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\">DetectorType::kFast</a>;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b\">   65</a></span>&#160;  <span class=\"keywordtype\">double</span> threshold_primary = 10.0;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89\">   70</a></span>&#160;  <span class=\"keywordtype\">double</span> threshold_secondary = 100.0;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e\">   74</a></span>&#160;  <span class=\"keywordtype\">int</span> sampling_level = 0;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">level</a> = 0;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;};</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084\">svo::DetectorType::kGradHuangMumford</a></div><div class=\"ttdoc\">&amp;#39;Natural&amp;#39; edges (see Huang CVPR&amp;#39;99) </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">svo::DetectorType</a></div><div class=\"ttdeci\">DetectorType</div><div class=\"ttdoc\">Available Feature Detector Types. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:33</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b\">svo::DetectorType::kSobel</a></div><div class=\"ttdoc\">Sobel edge detector. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html_a3613ebe6185f9b91a4fedac46e16f0a4\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">svo::Corner::level</a></div><div class=\"ttdeci\">int level</div><div class=\"ttdoc\">pyramid level of the corner. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:21</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\">svo::DetectorType::kFast</a></div><div class=\"ttdoc\">Fast Corner Detector by Edward Rosten. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html\">svo::Corner</a></div><div class=\"ttdoc\">Temporary container used for corner detection. Features are initialized from these. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:17</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html_a75fbd4204b8ecf066c6d6dd05190c750\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">svo::Corner::x</a></div><div class=\"ttdeci\">int x</div><div class=\"ttdoc\">x-coordinate of corner in the image. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:19</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359\">svo::DetectorType::kCanny</a></div><div class=\"ttdoc\">Canny edge detector. </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6\">svo::DetectorType::kAll</a></div><div class=\"ttdoc\">Every pixel is a feature! </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca\">svo::DetectorType::kGrad</a></div><div class=\"ttdoc\">Gradient detector for edgelets. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html_a75c8927268a974ceb7fb8438f4134eb2\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">svo::Corner::angle</a></div><div class=\"ttdeci\">float angle</div><div class=\"ttdoc\">for gradient-features: dominant gradient angle. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:23</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b\">svo::DetectorType::kGridGrad</a></div><div class=\"ttdoc\">Gradient detector with feature grid. </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97\"><div class=\"ttname\"><a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97\">svo::DetectorType::kFastGrad</a></div><div class=\"ttdoc\">Combined Fast and Gradient detector. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html_a57ac2e26bcc9c5158cf7b053a946feec\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">svo::Corner::y</a></div><div class=\"ttdeci\">int y</div><div class=\"ttdoc\">y-coordinate of corner in the image. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:20</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Corner_html_af63792f2b337df952c8b8bdea84cf12e\"><div class=\"ttname\"><a href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">svo::Corner::score</a></div><div class=\"ttdeci\">float score</div><div class=\"ttdoc\">shi-tomasi score of the corner. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:22</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__detection__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/feature_detection_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_detection_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;array&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/occupancy_grid_2d.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/direct/feature_detection_types.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">class </span>AbstractDetector;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">using</span> AbstractDetectorPtr = std::shared_ptr&lt;AbstractDetector&gt;;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">namespace </span>feature_detection_utils {</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;AbstractDetectorPtr makeDetector(</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keyword\">const</span> DetectorOptions&amp; options,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keyword\">const</span> CameraPtr&amp; cam);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keywordtype\">void</span> fillFeatures(<span class=\"keyword\">const</span> Corners&amp; corners,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">const</span> FeatureType&amp; type,</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; mask,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; threshold,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features,</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    Keypoints&amp; keypoints,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    Scores&amp; scores,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    Levels&amp; levels,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    Gradients&amp; gradients,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    FeatureTypes&amp; types,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    OccupandyGrid2D&amp; grid);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keywordtype\">void</span> fastDetector(</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> threshold,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> border,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> min_level,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_level,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    Corners&amp; corners,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    OccupandyGrid2D&amp; grid);</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keywordtype\">void</span> edgeletDetector_V1(</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> threshold,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> border,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> min_level,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    Corners&amp; corners,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    OccupandyGrid2D&amp; grid);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"keywordtype\">void</span> edgeletDetector_V2(</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> threshold,</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> border,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> min_level,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    Corners&amp; corners,</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    OccupandyGrid2D&amp; grid);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;<span class=\"keywordtype\">bool</span> getCornerAngle(</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Keypoint&gt;&amp; level_0,</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> level,</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keywordtype\">double</span>* angle);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"keywordtype\">bool</span> getShiTomasiScore(</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector2i&amp; px,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordtype\">double</span>* score);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;<span class=\"keywordtype\">void</span> setCornerAngles(</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    Corners* corners);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keywordtype\">void</span> setCornerLevel(</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    <span class=\"keyword\">const</span> ImgPyr&amp; mag_pyr,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    Corners* corners);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;<span class=\"keywordtype\">void</span> computeDerivMaxMagnitude(</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_8u,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    cv::Mat&amp; mag_8u);</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;<span class=\"keywordtype\">void</span> computeDerivHuangMumford(</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_8u,</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    cv::Mat&amp; mag_32f,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    <span class=\"keywordtype\">float</span> alpha=10.0f,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    <span class=\"keywordtype\">float</span> q=0.98f);</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;<span class=\"keywordtype\">void</span> nonmax(</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_32f,</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> thresh,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    Corners* corners);</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"keywordtype\">void</span> displayGrid(</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keyword\">const</span> OccupandyGrid2D&amp; old_grid,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keyword\">const</span> Keypoints&amp; keypoints,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> img_width,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> img_height);</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;<span class=\"keywordtype\">void</span> nonlinearDiffusion(</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_8u,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    cv::Mat&amp; img_8u_diffused,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> timestep = 0.25,   <span class=\"comment\">// absolute max is 0.5 for stability</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> final_time = 2.5);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;<span class=\"keywordtype\">void</span> detectGuillermoEdges(</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; src_gray,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    cv::Mat&amp; dest,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keywordtype\">int</span> low_threshold = 20,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;    <span class=\"keywordtype\">int</span> ratio = 3,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    <span class=\"keywordtype\">int</span> kernel_size = 3);</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;<span class=\"keywordtype\">void</span> detectCannyEdges(</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; src_gray,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    cv::Mat&amp; dest,</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;    <span class=\"keywordtype\">int</span> low_threshold = 20,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    <span class=\"keywordtype\">int</span> ratio = 3,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    <span class=\"keywordtype\">int</span> kernel_size = 3);</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;<span class=\"keywordtype\">void</span> detectSobelEdges(</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; src_gray,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    cv::Mat&amp; dest,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    <span class=\"keywordtype\">int</span> low_threshold = 30,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keywordtype\">int</span> kernel_size = 2);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;<span class=\"keywordtype\">void</span> drawFeatures(</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    <span class=\"keyword\">const</span> Frame&amp; frame,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> level,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> only_matched_features,</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;    cv::Mat* img_rgb);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;<span class=\"keywordtype\">double</span> getAngleAtPixelUsingHistogram(</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector2i&amp; px,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> halfpatch_size);</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;<span class=\"comment\">// Compute an angle histogram.</span></div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;<span class=\"keyword\">namespace </span>angle_hist {</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;constexpr <span class=\"keywordtype\">size_t</span> n_bins = 36;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;<span class=\"keyword\">using</span> AngleHistogram = std::array&lt;double, n_bins&gt;;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;<span class=\"keywordtype\">void</span> angleHistogram(</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> halfpatch_size, AngleHistogram&amp; hist);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;<span class=\"keywordtype\">bool</span> gradientAndMagnitudeAtPixel(</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img, <span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">double</span>* mag, <span class=\"keywordtype\">double</span>* angle);</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;<span class=\"keywordtype\">void</span> smoothOrientationHistogram(</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;    AngleHistogram&amp; hist);</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;<span class=\"keywordtype\">double</span> getDominantAngle(</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;    <span class=\"keyword\">const</span> AngleHistogram&amp; hist);</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;} <span class=\"comment\">// angle_hist</span></div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;} <span class=\"comment\">// feature_detection_utils</span></div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__tracker_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo/tracker/feature_tracker.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\">tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_tracker.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;svo/tracker/feature_tracking_types.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">// Forward declarations.</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">class </span>AbstractDetector;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">struct </span>DetectorOptions;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureTracker.html\">   14</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;{</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FeatureTracker&gt; Ptr;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a>(</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector_options,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      <span class=\"keyword\">const</span> CameraBundlePtr&amp; cams);</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">trackAndDetect</a>(<span class=\"keyword\">const</span> FrameBundlePtr&amp; nframe_kp1);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">trackFrameBundle</a>(<span class=\"keyword\">const</span> FrameBundlePtr&amp; nframe_kp1);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">initializeNewTracks</a>(<span class=\"keyword\">const</span> FrameBundlePtr&amp; nframe_k);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">const</span> FeatureTracks&amp; getActiveTracks(<span class=\"keywordtype\">size_t</span> frame_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordtype\">size_t</span> getTotalActiveTracks() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">getNumTrackedAndDisparityPerFrame</a>(</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      <span class=\"keywordtype\">double</span> pivot_ratio,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      std::vector&lt;size_t&gt;* num_tracked,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      std::vector&lt;double&gt;* disparity) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  FrameBundlePtr getOldestFrameInTrack(<span class=\"keywordtype\">size_t</span> frame_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keywordtype\">void</span> resetActiveTracks();</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">void</span> resetTerminatedTracks();</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">reset</a>();</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"comment\">//private:</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a> options_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"comment\">// A vector for each frame in the bundle.</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> bundle_size_;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  std::vector&lt;std::shared_ptr&lt;AbstractDetector&gt;&gt; detectors_;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  std::vector&lt;FeatureTracks,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  Eigen::aligned_allocator&lt;FeatureTracks&gt; &gt; active_tracks_;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  std::vector&lt;FeatureTracks,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  Eigen::aligned_allocator&lt;FeatureTracks&gt; &gt; terminated_tracks_;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;};</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html\">svo::FeatureTracker</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html_a024b9e9042934ad75efefae2b6506b40\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">svo::FeatureTracker::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdoc\">Clear all stored data. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.cpp:240</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html_a290d11f7097b02fa461b8cf1c21a7a25\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">svo::FeatureTracker::initializeNewTracks</a></div><div class=\"ttdeci\">size_t initializeNewTracks(const FrameBundlePtr &amp;nframe_k)</div><div class=\"ttdoc\">Extract new features. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.cpp:124</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html_ac9bb7c1ca79974d1133469db8add4be0\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">svo::FeatureTracker::trackAndDetect</a></div><div class=\"ttdeci\">void trackAndDetect(const FrameBundlePtr &amp;nframe_kp1)</div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.cpp:32</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html_ae999fe961f81f0699ab5caeab7b4dcde\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">svo::FeatureTracker::trackFrameBundle</a></div><div class=\"ttdeci\">size_t trackFrameBundle(const FrameBundlePtr &amp;nframe_kp1)</div><div class=\"ttdoc\">Tracks a frame bundle. Returns number of tracked features. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.cpp:52</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTracker_html_a15dc4f61e6765e47919c22b0e8cc35c9\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">svo::FeatureTracker::getNumTrackedAndDisparityPerFrame</a></div><div class=\"ttdeci\">void getNumTrackedAndDisparityPerFrame(double pivot_ratio, std::vector&lt; size_t &gt; *num_tracked, std::vector&lt; double &gt; *disparity) const</div><div class=\"ttdef\"><b>Definition:</b> feature_tracker.cpp:202</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__tracking__types_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo/tracker/feature_tracking_types.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\">tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_tracking_types.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html\">    9</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">   15</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">klt_max_level</a> = 4;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">   20</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">klt_min_level</a> = 0;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">   23</a></span>&#160;  std::vector&lt;int&gt; <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">klt_patch_sizes</a> = {16, 16, 16, 8, 8};</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">   26</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">klt_max_iter</a> = 30;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">   29</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">klt_min_update_squared</a> = 0.001;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">   33</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">klt_template_is_first_observation</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">   36</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">min_tracks_to_detect_new_features</a> = 50;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">   40</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">reset_before_detection</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;};</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureRef.html\">   44</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;{</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>(</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle, <span class=\"keywordtype\">size_t</span> frame_index, <span class=\"keywordtype\">size_t</span> feature_index);</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> FrameBundlePtr getFrameBundle()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordflow\">return</span> frame_bundle_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  }</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> getFrameIndex()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keywordflow\">return</span> frame_index_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  }</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> getFeatureIndex()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keywordflow\">return</span> feature_index_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  }</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">const</span> Eigen::Block&lt;Keypoints, 2, 1&gt; getPx() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keyword\">const</span> Eigen::Block&lt;Bearings, 3, 1&gt; getBearing() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keyword\">const</span> FramePtr getFrame() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  FrameBundlePtr frame_bundle_;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keywordtype\">size_t</span> frame_index_;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keywordtype\">size_t</span> feature_index_;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;};</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;<span class=\"keyword\">typedef</span> std::vector&lt;FeatureRef&gt; FeatureRefList;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureTrack.html\">   80</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a></div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;{</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keyword\">explicit</span> <a class=\"code\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a>(<span class=\"keywordtype\">int</span> track_id);</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> getTrackId()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keywordflow\">return</span> track_id_;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  }</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> FeatureRefList&amp; getFeatureTrack()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  }</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> size()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_.size();</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  }</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> empty()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_.empty();</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  }</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">  104</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>&amp; <a class=\"code\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">front</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    CHECK(!empty()) &lt;&lt; <span class=\"stringliteral\">&quot;Track empty when calling front().&quot;</span>;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_.front();</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  }</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">  110</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>&amp; <a class=\"code\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">back</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    CHECK(!empty()) &lt;&lt; <span class=\"stringliteral\">&quot;Track empty when calling back().&quot;</span>;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_.back();</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  }</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>&amp; at(<span class=\"keywordtype\">size_t</span> i)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    CHECK_LT(i, feature_track_.size()) &lt;&lt; <span class=\"stringliteral\">&quot;Index too large.&quot;</span>;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    <span class=\"keywordflow\">return</span> feature_track_.at(i);</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  }</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">  121</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">pushBack</a>(</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> frame_index,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> feature_index) {</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    feature_track_.emplace_back(<a class=\"code\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a>(frame_bundle, frame_index, feature_index));</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  }</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keywordtype\">double</span> getDisparity() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keywordtype\">int</span> track_id_;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  FeatureRefList feature_track_;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;};</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;<span class=\"keyword\">typedef</span> std::vector&lt;<a class=\"code\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a>,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;Eigen::aligned_allocator&lt;FeatureTrack&gt; &gt; FeatureTracks;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1FeatureTrack_html_a9c85c082cc7d33bd9d614b35eb9ac4fe\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">svo::FeatureTrack::pushBack</a></div><div class=\"ttdeci\">void pushBack(const FrameBundlePtr &amp;frame_bundle, const size_t frame_index, const size_t feature_index)</div><div class=\"ttdoc\">New observations are always inserted at the back of the vector. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:121</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTrack_html_abe2acbf3a8170025c24436188ab5512e\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">svo::FeatureTrack::front</a></div><div class=\"ttdeci\">const FeatureRef &amp; front() const</div><div class=\"ttdoc\">The feature at the front is the first observed feature. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:104</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_ad0cbff162578c6c56097262ad4961f0e\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">svo::FeatureTrackerOptions::klt_max_iter</a></div><div class=\"ttdeci\">int klt_max_iter</div><div class=\"ttdoc\">KLT termination criterion. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:26</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a9f7f926324418142129204504063c771\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">svo::FeatureTrackerOptions::klt_min_update_squared</a></div><div class=\"ttdeci\">double klt_min_update_squared</div><div class=\"ttdoc\">KLT termination criterion. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:29</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTrack_html_a30eb1603d584c597d38602d2f57ce506\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">svo::FeatureTrack::back</a></div><div class=\"ttdeci\">const FeatureRef &amp; back() const</div><div class=\"ttdoc\">The feature at the back is the last observed feature. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:110</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a5d44e8785ba31e3fbfaf6da059c4a8bd\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">svo::FeatureTrackerOptions::klt_min_level</a></div><div class=\"ttdeci\">int klt_min_level</div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:20</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureRef_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureRef.html\">svo::FeatureRef</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:44</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a79805a3be4221db5d7575043daf4c465\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">svo::FeatureTrackerOptions::klt_max_level</a></div><div class=\"ttdeci\">int klt_max_level</div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:15</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FeatureTrack_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FeatureTrack.html\">svo::FeatureTrack</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:80</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a0efb481768e639fe0b02bca2763c5a55\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">svo::FeatureTrackerOptions::min_tracks_to_detect_new_features</a></div><div class=\"ttdeci\">size_t min_tracks_to_detect_new_features</div><div class=\"ttdoc\">If number of tracks falls below this threshold, detect new features. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:36</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a13bbaf6d9d93e8996b4d73ce9216a8b3\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">svo::FeatureTrackerOptions::klt_patch_sizes</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; klt_patch_sizes</div><div class=\"ttdoc\">Patch-size to use on each pyramid level. </div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:23</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a6dba63a8f46d4241a911c52d8f9ed8fe\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">svo::FeatureTrackerOptions::reset_before_detection</a></div><div class=\"ttdeci\">bool reset_before_detection</div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:40</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html_a2f5d4385fc969a057a22cd49f1f6af43\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">svo::FeatureTrackerOptions::klt_template_is_first_observation</a></div><div class=\"ttdeci\">bool klt_template_is_first_observation</div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:33</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__tracking__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo/tracker/feature_tracking_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\">tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_tracking_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;utility&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;svo/tracker/feature_tracking_types.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>feature_tracking_utils {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keywordtype\">double</span> getTracksDisparityPercentile(</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;    <span class=\"keyword\">const</span> FeatureTracks&amp; tracks,</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;    <span class=\"keywordtype\">double</span> pivot_ratio);</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keywordtype\">void</span> getFeatureMatches(</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    <span class=\"keyword\">const</span> Frame&amp; frame1, <span class=\"keyword\">const</span> Frame&amp; frame2,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    std::vector&lt;std::pair&lt;size_t, size_t&gt;&gt;* matches_12);</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;} <span class=\"comment\">// namespace feature_tracking_utils</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__tracking__viz_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_tracker/include/svo/tracker/feature_tracking_viz.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\">svo_tracker</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\">tracker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_tracking_viz.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// Forward declarations</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">class </span>FeatureTracker;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keywordtype\">void</span> visualizeTracks(</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">const</span> FeatureTracker&amp; tracker, <span class=\"keywordtype\">size_t</span> frame_index, <span class=\"keywordtype\">int</span> sleep);</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/feature__wrapper_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/feature_wrapper.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">feature_wrapper.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// forward declaration</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">class </span>Point;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">using</span> PointPtr = std::shared_ptr&lt;Point&gt;;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">using</span> FramePtr = std::shared_ptr&lt;Frame&gt;;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SeedRef.html\">   15</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;{</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  FramePtr keyframe;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keywordtype\">int</span> seed_id = -1;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a>(<span class=\"keyword\">const</span> FramePtr&amp; _keyframe, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> _seed_id)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    : keyframe(_keyframe)</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    , seed_id(_seed_id)</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  { ; }</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  ~<a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;};</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html\">   29</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;{</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">   33</a></span>&#160;  FeatureType&amp; <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">type</a>;                </div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">   34</a></span>&#160;  Eigen::Ref&lt;Keypoint&gt; <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">px</a>;          </div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">   35</a></span>&#160;  Eigen::Ref&lt;BearingVector&gt; <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">f</a>;      </div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">   36</a></span>&#160;  Eigen::Ref&lt;GradientVector&gt; <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">grad</a>;  </div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  Score&amp; score;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">   38</a></span>&#160;  Level&amp; <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">level</a>;                     </div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  PointPtr&amp; landmark;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a>&amp; seed_ref;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keywordtype\">int</span>&amp; track_id;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>(</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      FeatureType&amp; _type,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      Eigen::Ref&lt;Keypoint&gt; _px,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      Eigen::Ref&lt;BearingVector&gt; _f,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      Eigen::Ref&lt;GradientVector&gt; _grad,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      Score&amp; _score,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;      Level&amp; _pyramid_level,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;      PointPtr&amp; _landmark,</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a>&amp; _seed_ref,</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;      <span class=\"keywordtype\">int</span>&amp; _track_id)</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    : type(_type)</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    , px(_px)</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    , f(_f)</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    , grad(_grad)</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    , score(_score)</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    , level(_pyramid_level)</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    , landmark(_landmark)</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    , seed_ref(_seed_ref)</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    , track_id(_track_id)</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  { ; }</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  ~<a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; other) = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; other) = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;};</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html_ab1c1e7541a9df92b73bbef72df30a8f8\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">svo::FeatureWrapper::px</a></div><div class=\"ttdeci\">Eigen::Ref&lt; Keypoint &gt; px</div><div class=\"ttdoc\">Coordinates in pixels on pyramid level 0. </div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:34</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html_a497b251326f62cc257840851a1d0412c\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">svo::FeatureWrapper::grad</a></div><div class=\"ttdeci\">Eigen::Ref&lt; GradientVector &gt; grad</div><div class=\"ttdoc\">Dominant gradient direction for edglets, normalized. </div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:36</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SeedRef_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:15</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html_a1b6490a8cd4ff72e23c724d0ff8463db\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">svo::FeatureWrapper::level</a></div><div class=\"ttdeci\">Level &amp; level</div><div class=\"ttdoc\">Image pyramid level where feature was extracted. </div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:38</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html_a2983823ece4f027bca02e7608dd0395b\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">svo::FeatureWrapper::type</a></div><div class=\"ttdeci\">EIGEN_MAKE_ALIGNED_OPERATOR_NEW FeatureType &amp; type</div><div class=\"ttdoc\">Type can be corner or edgelet. </div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:33</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html_add33cb982469e5d9fbe15e7a1eded5f6\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">svo::FeatureWrapper::f</a></div><div class=\"ttdeci\">Eigen::Ref&lt; BearingVector &gt; f</div><div class=\"ttdoc\">Unit-bearing vector of the feature. </div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:35</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/files.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: File List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">File List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented files with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span><span onclick=\"javascript:toggleLevel(4);\">4</span><span onclick=\"javascript:toggleLevel(5);\">5</span><span onclick=\"javascript:toggleLevel(6);\">6</span><span onclick=\"javascript:toggleLevel(7);\">7</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span id=\"img_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_')\">&#160;</span><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\" target=\"_self\">dvs_bootstrapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9660;</span><span id=\"img_0_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_0_')\">&#160;</span><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_')\">&#9658;</span><span id=\"img_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_135e35ac0bac6dfe4cb773674dae4da2.html\" target=\"_self\">dvs_bootstrapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"Bootstrapper_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>Bootstrapper.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"EventsFramesBootstrapper_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>EventsFramesBootstrapper.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"FrontoPlanarBootstrapper_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>FrontoPlanarBootstrapper.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_1_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"motion__correction_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>motion_correction.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_1_\" class=\"arrow\" onclick=\"toggleFolder('1_')\">&#9660;</span><span id=\"img_1_\" class=\"iconfopen\" onclick=\"toggleFolder('1_')\">&#160;</span><a class=\"el\" href=\"dir_ad997d48941325ba506a317fee6c5d1a.html\" target=\"_self\">dvs_mapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_1_0_\" class=\"arrow\" onclick=\"toggleFolder('1_0_')\">&#9660;</span><span id=\"img_1_0_\" class=\"iconfopen\" onclick=\"toggleFolder('1_0_')\">&#160;</span><a class=\"el\" href=\"dir_c8744c9302c531d173f9da8f492215a5.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_1_0_0_\" class=\"arrow\" onclick=\"toggleFolder('1_0_0_')\">&#9658;</span><span id=\"img_1_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('1_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_aed134eeebc665a9f98c953e86ef8771.html\" target=\"_self\">dvs_depth_from_defocus</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"depth__defocus__node_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>depth_defocus_node.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"depth__vector_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>depth_vector.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"dvs__mapping__nodelet_8h_source.html\"><span class=\"icondoc\"></span></a><b>dvs_mapping_nodelet.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_2_\" class=\"arrow\" onclick=\"toggleFolder('2_')\">&#9660;</span><span id=\"img_2_\" class=\"iconfopen\" onclick=\"toggleFolder('2_')\">&#160;</span><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\" target=\"_self\">dvs_reconstruction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_2_0_\" class=\"arrow\" onclick=\"toggleFolder('2_0_')\">&#9660;</span><span id=\"img_2_0_\" class=\"iconfopen\" onclick=\"toggleFolder('2_0_')\">&#160;</span><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_2_0_0_\" class=\"arrow\" onclick=\"toggleFolder('2_0_0_')\">&#9658;</span><span id=\"img_2_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('2_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_2132e6eb658a67cbcea5d6a82f185c34.html\" target=\"_self\">dvs_reconstruction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_2_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('2_0_0_0_')\">&#9658;</span><span id=\"img_2_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('2_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_335842f7c982f3e34f14feece7eea990.html\" target=\"_self\">poisson_solver</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"laplace_8h_source.html\"><span class=\"icondoc\"></span></a><b>laplace.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"mosaic_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>mosaic.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_3_\" class=\"arrow\" onclick=\"toggleFolder('3_')\">&#9660;</span><span id=\"img_3_\" class=\"iconfopen\" onclick=\"toggleFolder('3_')\">&#160;</span><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\" target=\"_self\">dvs_tracking</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_3_0_\" class=\"arrow\" onclick=\"toggleFolder('3_0_')\">&#9660;</span><span id=\"img_3_0_\" class=\"iconfopen\" onclick=\"toggleFolder('3_0_')\">&#160;</span><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_3_0_0_\" class=\"arrow\" onclick=\"toggleFolder('3_0_0_')\">&#9658;</span><span id=\"img_3_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('3_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\" target=\"_self\">dvs_tracking</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"dvs__tracking__nodelet_8h_source.html\"><span class=\"icondoc\"></span></a><b>dvs_tracking_nodelet.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"lk__se3_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>lk_se3.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"tracker_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>tracker.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_0_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"weight__functions_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>weight_functions.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_4_\" class=\"arrow\" onclick=\"toggleFolder('4_')\">&#9660;</span><span id=\"img_4_\" class=\"iconfopen\" onclick=\"toggleFolder('4_')\">&#160;</span><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\" target=\"_self\">evo_utils</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_4_0_\" class=\"arrow\" onclick=\"toggleFolder('4_0_')\">&#9660;</span><span id=\"img_4_0_\" class=\"iconfopen\" onclick=\"toggleFolder('4_0_')\">&#160;</span><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_4_0_0_\" class=\"arrow\" onclick=\"toggleFolder('4_0_0_')\">&#9658;</span><span id=\"img_4_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('4_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\" target=\"_self\">evo_utils</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"camera_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>camera.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"geometry_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>geometry.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"interpolation_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>interpolation.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"main_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>main.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_4_0_1_\" class=\"arrow\" onclick=\"toggleFolder('4_0_1_')\">&#9658;</span><span id=\"img_4_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('4_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_054b5b29f13da08c38c280177936499d.html\" target=\"_self\">rpg_common_ros</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_0_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"params__helper_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>params_helper.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_5_\" class=\"arrow\" onclick=\"toggleFolder('5_')\">&#9660;</span><span id=\"img_5_\" class=\"iconfopen\" onclick=\"toggleFolder('5_')\">&#160;</span><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_5_0_\" class=\"arrow\" onclick=\"toggleFolder('5_0_')\">&#9660;</span><span id=\"img_5_0_\" class=\"iconfopen\" onclick=\"toggleFolder('5_0_')\">&#160;</span><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_5_0_0_\" class=\"arrow\" onclick=\"toggleFolder('5_0_0_')\">&#9658;</span><span id=\"img_5_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('5_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\" target=\"_self\">rpg_common</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"batch__worker_8h_source.html\"><span class=\"icondoc\"></span></a><b>batch_worker.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"callback__host_8h_source.html\"><span class=\"icondoc\"></span></a><b>callback_host.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"realtime__worker_8h_source.html\"><span class=\"icondoc\"></span></a><b>realtime_worker.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"threadsafe__queue_8h_source.html\"><span class=\"icondoc\"></span></a><b>threadsafe_queue.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"worker__base_8h_source.html\"><span class=\"icondoc\"></span></a><b>worker_base.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_5_0_1_\" class=\"arrow\" onclick=\"toggleFolder('5_0_1_')\">&#9658;</span><span id=\"img_5_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('5_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"abstract__bundle__adjustment_8h_source.html\"><span class=\"icondoc\"></span></a><b>abstract_bundle_adjustment.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"config_8h_source.html\"><span class=\"icondoc\"></span></a><b>config.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"frame__handler__array_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame_handler_array.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"frame__handler__base_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame_handler_base.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"frame__handler__mono_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame_handler_mono.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"frame__handler__stereo_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame_handler_stereo.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"global_8h_source.html\"><span class=\"icondoc\"></span></a><b>global.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"imu__handler_8h_source.html\"><span class=\"icondoc\"></span></a><b>imu_handler.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"initialization_8h_source.html\"><span class=\"icondoc\"></span></a><b>initialization.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"io_8h_source.html\"><span class=\"icondoc\"></span></a><b>io.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"map_8h_source.html\"><span class=\"icondoc\"></span></a><b>map.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"pose__optimizer_8h_source.html\"><span class=\"icondoc\"></span></a><b>pose_optimizer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"reprojector_8h_source.html\"><span class=\"icondoc\"></span></a><b>reprojector.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"stereo__triangulation_8h_source.html\"><span class=\"icondoc\"></span></a><b>stereo_triangulation.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_0_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"svo_8h_source.html\"><span class=\"icondoc\"></span></a><b>svo.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_6_\" class=\"arrow\" onclick=\"toggleFolder('6_')\">&#9660;</span><span id=\"img_6_\" class=\"iconfopen\" onclick=\"toggleFolder('6_')\">&#160;</span><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\" target=\"_self\">svo_backend</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_6_0_\" class=\"arrow\" onclick=\"toggleFolder('6_0_')\">&#9660;</span><span id=\"img_6_0_\" class=\"iconfopen\" onclick=\"toggleFolder('6_0_')\">&#160;</span><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_6_0_0_\" class=\"arrow\" onclick=\"toggleFolder('6_0_0_')\">&#9658;</span><span id=\"img_6_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('6_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_6_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('6_0_0_0_')\">&#9658;</span><span id=\"img_6_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('6_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\" target=\"_self\">backend</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"backend__interface_8h_source.html\"><span class=\"icondoc\"></span></a><b>backend_interface.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"backend__optimizer_8h_source.html\"><span class=\"icondoc\"></span></a><b>backend_optimizer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"backend__types_8h_source.html\"><span class=\"icondoc\"></span></a><b>backend_types.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"graph__manager_8h_source.html\"><span class=\"icondoc\"></span></a><b>graph_manager.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_0_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"smart__factors__fwd_8h_source.html\"><span class=\"icondoc\"></span></a><b>smart_factors_fwd.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_7_\" class=\"arrow\" onclick=\"toggleFolder('7_')\">&#9660;</span><span id=\"img_7_\" class=\"iconfopen\" onclick=\"toggleFolder('7_')\">&#160;</span><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\" target=\"_self\">svo_common</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_7_0_\" class=\"arrow\" onclick=\"toggleFolder('7_0_')\">&#9660;</span><span id=\"img_7_0_\" class=\"iconfopen\" onclick=\"toggleFolder('7_0_')\">&#160;</span><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_7_0_0_\" class=\"arrow\" onclick=\"toggleFolder('7_0_0_')\">&#9658;</span><span id=\"img_7_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('7_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_7_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('7_0_0_0_')\">&#9658;</span><span id=\"img_7_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('7_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\" target=\"_self\">common</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"camera_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"camera__fwd_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera_fwd.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"container__helpers_8h_source.html\"><span class=\"icondoc\"></span></a><b>container_helpers.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"conversions_8h_source.html\"><span class=\"icondoc\"></span></a><b>conversions.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__wrapper_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_wrapper.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"frame_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"imu__calibration_8h_source.html\"><span class=\"icondoc\"></span></a><b>imu_calibration.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"logging_8h_source.html\"><span class=\"icondoc\"></span></a><b>logging.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"occupancy__grid__2d_8h_source.html\"><span class=\"icondoc\"></span></a><b>occupancy_grid_2d.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"point_8h_source.html\"><span class=\"icondoc\"></span></a><b>point.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"seed_8h_source.html\"><span class=\"icondoc\"></span></a><b>seed.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"transformation_8h_source.html\"><span class=\"icondoc\"></span></a><b>transformation.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_0_0_0_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"types_8h_source.html\"><span class=\"icondoc\"></span></a><b>types.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_8_\" class=\"arrow\" onclick=\"toggleFolder('8_')\">&#9660;</span><span id=\"img_8_\" class=\"iconfopen\" onclick=\"toggleFolder('8_')\">&#160;</span><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\" target=\"_self\">svo_direct</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_8_0_\" class=\"arrow\" onclick=\"toggleFolder('8_0_')\">&#9660;</span><span id=\"img_8_0_\" class=\"iconfopen\" onclick=\"toggleFolder('8_0_')\">&#160;</span><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_8_0_0_\" class=\"arrow\" onclick=\"toggleFolder('8_0_0_')\">&#9658;</span><span id=\"img_8_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('8_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_8_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('8_0_0_0_')\">&#9658;</span><span id=\"img_8_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('8_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\" target=\"_self\">direct</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"depth__estimation_8h_source.html\"><span class=\"icondoc\"></span></a><b>depth_estimation.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"depth__filter_8h_source.html\"><span class=\"icondoc\"></span></a><b>depth_filter.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"elder__zucker_8h_source.html\"><span class=\"icondoc\"></span></a><b>elder_zucker.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__alignment_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_alignment.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__detection_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_detection.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__detection__types_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_detection_types.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__detection__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_detection_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"matcher_8h_source.html\"><span class=\"icondoc\"></span></a><b>matcher.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"patch__normal_8h_source.html\"><span class=\"icondoc\"></span></a><b>patch_normal.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"patch__score_8h_source.html\"><span class=\"icondoc\"></span></a><b>patch_score.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"patch__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>patch_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_0_0_0_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"patch__warp_8h_source.html\"><span class=\"icondoc\"></span></a><b>patch_warp.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_9_\" class=\"arrow\" onclick=\"toggleFolder('9_')\">&#9660;</span><span id=\"img_9_\" class=\"iconfopen\" onclick=\"toggleFolder('9_')\">&#160;</span><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\" target=\"_self\">svo_img_align</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_9_0_\" class=\"arrow\" onclick=\"toggleFolder('9_0_')\">&#9660;</span><span id=\"img_9_0_\" class=\"iconfopen\" onclick=\"toggleFolder('9_0_')\">&#160;</span><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_9_0_0_\" class=\"arrow\" onclick=\"toggleFolder('9_0_0_')\">&#9658;</span><span id=\"img_9_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('9_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_9_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('9_0_0_0_')\">&#9658;</span><span id=\"img_9_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('9_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\" target=\"_self\">img_align</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"frame__gpu_8h_source.html\"><span class=\"icondoc\"></span></a><b>frame_gpu.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"gpu__types__cuda_8h_source.html\"><span class=\"icondoc\"></span></a><b>gpu_types_cuda.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"sparse__img__align_8h_source.html\"><span class=\"icondoc\"></span></a><b>sparse_img_align.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"sparse__img__align__base_8h_source.html\"><span class=\"icondoc\"></span></a><b>sparse_img_align_base.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_0_0_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"sparse__img__align__gpu_8h_source.html\"><span class=\"icondoc\"></span></a><b>sparse_img_align_gpu.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_10_\" class=\"arrow\" onclick=\"toggleFolder('10_')\">&#9660;</span><span id=\"img_10_\" class=\"iconfopen\" onclick=\"toggleFolder('10_')\">&#160;</span><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\" target=\"_self\">svo_ros</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_10_0_\" class=\"arrow\" onclick=\"toggleFolder('10_0_')\">&#9660;</span><span id=\"img_10_0_\" class=\"iconfopen\" onclick=\"toggleFolder('10_0_')\">&#160;</span><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_10_0_0_\" class=\"arrow\" onclick=\"toggleFolder('10_0_0_')\">&#9658;</span><span id=\"img_10_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('10_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\" target=\"_self\">svo_ros</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"backend__factory_8h_source.html\"><span class=\"icondoc\"></span></a><b>backend_factory.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"backend__visualizer_8h_source.html\"><span class=\"icondoc\"></span></a><b>backend_visualizer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"csv__dataset__reader_8h_source.html\"><span class=\"icondoc\"></span></a><b>csv_dataset_reader.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"svo__factory_8h_source.html\"><span class=\"icondoc\"></span></a><b>svo_factory.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"svo__interface_8h_source.html\"><span class=\"icondoc\"></span></a><b>svo_interface.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"svo__node__base_8h_source.html\"><span class=\"icondoc\"></span></a><b>svo_node_base.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"svo__nodelet_8h_source.html\"><span class=\"icondoc\"></span></a><b>svo_nodelet.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_0_0_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"visualizer_8h_source.html\"><span class=\"icondoc\"></span></a><b>visualizer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_11_\" class=\"arrow\" onclick=\"toggleFolder('11_')\">&#9660;</span><span id=\"img_11_\" class=\"iconfopen\" onclick=\"toggleFolder('11_')\">&#160;</span><a class=\"el\" href=\"dir_ee9fe11dde20c6b12dc04a2afc36bd07.html\" target=\"_self\">svo_tracker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_11_0_\" class=\"arrow\" onclick=\"toggleFolder('11_0_')\">&#9660;</span><span id=\"img_11_0_\" class=\"iconfopen\" onclick=\"toggleFolder('11_0_')\">&#160;</span><a class=\"el\" href=\"dir_66c71803981d78474d9bf8919fdb7ee3.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_11_0_0_\" class=\"arrow\" onclick=\"toggleFolder('11_0_0_')\">&#9658;</span><span id=\"img_11_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('11_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_61c8c8ab006fd333bddc787db24b76b5.html\" target=\"_self\">svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_11_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('11_0_0_0_')\">&#9658;</span><span id=\"img_11_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('11_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_bdf1c342ef2ad1b49358e606779f2a0d.html\" target=\"_self\">tracker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__tracker_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_tracker.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__tracking__types_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_tracking_types.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__tracking__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_tracking_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_0_0_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"feature__tracking__viz_8h_source.html\"><span class=\"icondoc\"></span></a><b>feature_tracking_viz.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_12_\" class=\"arrow\" onclick=\"toggleFolder('12_')\">&#9660;</span><span id=\"img_12_\" class=\"iconfopen\" onclick=\"toggleFolder('12_')\">&#160;</span><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\" target=\"_self\">svo_vikit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_')\">&#9660;</span><span id=\"img_12_0_\" class=\"iconfopen\" onclick=\"toggleFolder('12_0_')\">&#160;</span><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\" target=\"_self\">vikit_cameras</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_0_')\">&#9658;</span><span id=\"img_12_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_0_0_')\">&#9658;</span><span id=\"img_12_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\" target=\"_self\">vikit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_0_0_0_')\">&#9658;</span><span id=\"img_12_0_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_0_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\" target=\"_self\">cameras</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_0_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_0_0_0_0_0_')\">&#9658;</span><span id=\"img_12_0_0_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_0_0_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_d384eab21aaa23c4b65ee34b4c32ed1c.html\" target=\"_self\">implementation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"camera__geometry_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>camera_geometry.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"camera__geometry__base_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>camera_geometry_base.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"pinhole__projection_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>pinhole_projection.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span id=\"arr_12_0_0_0_0_1_\" class=\"arrow\" onclick=\"toggleFolder('12_0_0_0_0_1_')\">&#9658;</span><span id=\"img_12_0_0_0_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_0_0_0_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_b52211d97cb29aa6c603e5e675788789.html\" target=\"_self\">yaml</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"camera-yaml-serialization_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera-yaml-serialization.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_1_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"ncamera-yaml-serialization_8h_source.html\"><span class=\"icondoc\"></span></a><b>ncamera-yaml-serialization.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"atan__distortion_8h_source.html\"><span class=\"icondoc\"></span></a><b>atan_distortion.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"camera__factory_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera_factory.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"camera__geometry_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera_geometry.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"camera__geometry__base_8h_source.html\"><span class=\"icondoc\"></span></a><b>camera_geometry_base.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"equidistant__distortion_8h_source.html\"><span class=\"icondoc\"></span></a><b>equidistant_distortion.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"equidistant__fisheye__geometry_8h_source.html\"><span class=\"icondoc\"></span></a><b>equidistant_fisheye_geometry.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"equidistant__fisheye__projection_8h_source.html\"><span class=\"icondoc\"></span></a><b>equidistant_fisheye_projection.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"ncamera_8h_source.html\"><span class=\"icondoc\"></span></a><b>ncamera.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"no__distortion_8h_source.html\"><span class=\"icondoc\"></span></a><b>no_distortion.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"omni__geometry_8h_source.html\"><span class=\"icondoc\"></span></a><b>omni_geometry.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"omni__projection_8h_source.html\"><span class=\"icondoc\"></span></a><b>omni_projection.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"pinhole__projection_8h_source.html\"><span class=\"icondoc\"></span></a><b>pinhole_projection.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_0_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"radial__tangential__distortion_8h_source.html\"><span class=\"icondoc\"></span></a><b>radial_tangential_distortion.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"cameras_8h_source.html\"><span class=\"icondoc\"></span></a><b>cameras.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_\" class=\"arrow\" onclick=\"toggleFolder('12_1_')\">&#9660;</span><span id=\"img_12_1_\" class=\"iconfopen\" onclick=\"toggleFolder('12_1_')\">&#160;</span><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\" target=\"_self\">vikit_common</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_0_\" class=\"arrow\" onclick=\"toggleFolder('12_1_0_')\">&#9658;</span><span id=\"img_12_1_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_1_0_')\">&#160;</span><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_1_0_0_')\">&#9658;</span><span id=\"img_12_1_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_1_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\" target=\"_self\">aslam</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_1_0_0_0_')\">&#9658;</span><span id=\"img_12_1_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_1_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\" target=\"_self\">common</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"entrypoint_8h_source.html\"><span class=\"icondoc\"></span></a><b>entrypoint.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"macros_8h_source.html\"><span class=\"icondoc\"></span></a><b>macros.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"memory_8h_source.html\"><span class=\"icondoc\"></span></a><b>memory.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"numdiff-jacobian-tester_8h_source.html\"><span class=\"icondoc\"></span></a><b>numdiff-jacobian-tester.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"pose-types_8h_source.html\"><span class=\"icondoc\"></span></a><b>pose-types.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"yaml-serialization-eigen_8h_source.html\"><span class=\"icondoc\"></span></a><b>yaml-serialization-eigen.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_0_0_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"yaml-serialization_8h_source.html\"><span class=\"icondoc\"></span></a><b>yaml-serialization.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_12_1_0_1_\" class=\"arrow\" onclick=\"toggleFolder('12_1_0_1_')\">&#9658;</span><span id=\"img_12_1_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_1_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\" target=\"_self\">vikit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"backtrace_8h_source.html\"><span class=\"icondoc\"></span></a><b>backtrace.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"blender__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>blender_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"csv__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>csv_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"homography_8h_source.html\"><span class=\"icondoc\"></span></a><b>homography.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"homography__decomp_8h_source.html\"><span class=\"icondoc\"></span></a><b>homography_decomp.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"math__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>math_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"path__utils_8h_source.html\"><span class=\"icondoc\"></span></a><b>path_utils.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"performance__monitor_8h_source.html\"><span class=\"icondoc\"></span></a><b>performance_monitor.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"ringbuffer_8h_source.html\"><span class=\"icondoc\"></span></a><b>ringbuffer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"sample_8h_source.html\"><span class=\"icondoc\"></span></a><b>sample.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"timer_8h_source.html\"><span class=\"icondoc\"></span></a><b>timer.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"user__input__thread_8h_source.html\"><span class=\"icondoc\"></span></a><b>user_input_thread.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_1_0_1_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"vision_8h_source.html\"><span class=\"icondoc\"></span></a><b>vision.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_2_\" class=\"arrow\" onclick=\"toggleFolder('12_2_')\">&#9660;</span><span id=\"img_12_2_\" class=\"iconfopen\" onclick=\"toggleFolder('12_2_')\">&#160;</span><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\" target=\"_self\">vikit_ros</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_12_2_0_\" class=\"arrow\" onclick=\"toggleFolder('12_2_0_')\">&#9658;</span><span id=\"img_12_2_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_2_0_')\">&#160;</span><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_12_2_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_2_0_0_')\">&#9658;</span><span id=\"img_12_2_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_2_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_cecfdde874a5fd435c34b7d3c386dfd0.html\" target=\"_self\">vikit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"img__type__conversion_8h_source.html\"><span class=\"icondoc\"></span></a><b>img_type_conversion.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"output__helper_8h_source.html\"><span class=\"icondoc\"></span></a><b>output_helper.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_2_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"params__helper_8h_source.html\"><span class=\"icondoc\"></span></a><b>params_helper.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_12_3_\" class=\"arrow\" onclick=\"toggleFolder('12_3_')\">&#9660;</span><span id=\"img_12_3_\" class=\"iconfopen\" onclick=\"toggleFolder('12_3_')\">&#160;</span><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\" target=\"_self\">vikit_solver</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_12_3_0_\" class=\"arrow\" onclick=\"toggleFolder('12_3_0_')\">&#9658;</span><span id=\"img_12_3_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_3_0_')\">&#160;</span><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\" target=\"_self\">include</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_12_3_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_3_0_0_')\">&#9658;</span><span id=\"img_12_3_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_3_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\" target=\"_self\">vikit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_12_3_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_3_0_0_0_')\">&#9658;</span><span id=\"img_12_3_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_3_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\" target=\"_self\">solver</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span id=\"arr_12_3_0_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('12_3_0_0_0_0_')\">&#9658;</span><span id=\"img_12_3_0_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('12_3_0_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_94cf7cecc057ddaeac3dd116c524767b.html\" target=\"_self\">implementation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:112px;display:inline-block;\">&#160;</span><a href=\"mini__least__squares__solver_8hpp_source.html\"><span class=\"icondoc\"></span></a><b>mini_least_squares_solver.hpp</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"mini__least__squares__solver_8h_source.html\"><span class=\"icondoc\"></span></a><b>mini_least_squares_solver.h</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_3_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"robust__cost_8h_source.html\"><span class=\"icondoc\"></span></a><b>robust_cost.h</b></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/frame.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/math_utils.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/feature_wrapper.h&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/seed.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">// custom (frame related) types</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">using</span> ImgPyr = std::vector&lt;cv::Mat&gt;;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html\">   28</a></span>&#160;<span class=\"comment\"></span><span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;{</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">using</span> mutex_t = std::mutex;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">using</span> ulock_t = std::unique_lock&lt;std::mutex&gt;;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">using</span> Landmarks = std::vector&lt;PointPtr&gt;;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">using</span> SeedRefs  = std::vector&lt;SeedRef&gt;;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">   38</a></span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span>                    <a class=\"code\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a>;         </div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">   39</a></span>&#160;  <span class=\"keywordtype\">int</span>                           <a class=\"code\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a>;                    </div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  BundleId                      bundle_id_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">   41</a></span>&#160;  <span class=\"keywordtype\">int</span>                           <a class=\"code\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a> = -1;     </div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">   42</a></span>&#160;  CameraPtr                     <a class=\"code\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a>;                   </div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">   43</a></span>&#160;  Transformation                <a class=\"code\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a>;                 </div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">   44</a></span>&#160;  ImgPyr                        <a class=\"code\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a>;               </div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  cv::Mat                       original_color_image_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"comment\">// safe without the Eigen aligned allocator, since Position is 24 bytes</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  std::vector&lt;std::pair&lt;int, Position&gt;, Eigen::aligned_allocator&lt;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">   48</a></span>&#160;  std::pair&lt;int, Position&gt; &gt; &gt; <a class=\"code\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">key_pts_</a>;                </div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">   49</a></span>&#160;  <span class=\"keywordtype\">bool</span>                          <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a> = <span class=\"keyword\">false</span>;   </div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">   50</a></span>&#160;  <span class=\"keywordtype\">int</span>                           <a class=\"code\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a>;     </div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">   51</a></span>&#160;  Quaternion                    <a class=\"code\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">R_imu_world_</a>;           </div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"comment\">// gtsam integration. TODO(cfo) this can just be a temporary solution!</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">bool</span>                          in_ba_graph_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  int64_t        timestamp_ = -1;    </div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">   58</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a>;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  Transformation T_cam_body_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"comment\">// Features</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"comment\">// All vectors must have the same length/cols at all time!</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"comment\">// {</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">   64</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a> = 0u;    </div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">   65</a></span>&#160;  Keypoints <a class=\"code\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">px_vec_</a>;            </div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">   66</a></span>&#160;  Bearings <a class=\"code\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">f_vec_</a>;              </div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">   67</a></span>&#160;  Scores <a class=\"code\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">score_vec_</a>;            </div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">   68</a></span>&#160;  Levels  <a class=\"code\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">level_vec_</a>;           </div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">   69</a></span>&#160;  Gradients <a class=\"code\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">grad_vec_</a>;          </div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">   70</a></span>&#160;  FeatureTypes <a class=\"code\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">type_vec_</a>;       </div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">   71</a></span>&#160;  Landmarks <a class=\"code\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">landmark_vec_</a>;      </div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">   72</a></span>&#160;  TrackIds <a class=\"code\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">track_id_vec_</a>;       </div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">   73</a></span>&#160;  SeedRefs <a class=\"code\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">seed_ref_vec_</a>;       </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">   74</a></span>&#160;  SeedStates <a class=\"code\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">invmu_sigma2_a_b_vec_</a>; </div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  std::vector&lt;bool&gt; in_ba_graph_vec_;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  FloatType seed_mu_range_;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"comment\">// }</span></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>(</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      <span class=\"keyword\">const</span> CameraPtr&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_ns,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> n_pyr_levels);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>(</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_ns,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      <span class=\"keyword\">const</span> CameraPtr&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>);</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">   94</a></span>&#160;  <a class=\"code\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>() {}</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">virtual</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">~Frame</a>();</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">Frame</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">initFrame</a>(<span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>, <span class=\"keywordtype\">size_t</span> n_pyr_levels);</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a>();</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">deleteLandmark</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span>&amp; feature_index);</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">resizeFeatureStorage</a>(<span class=\"keywordtype\">size_t</span> num);</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"keywordtype\">void</span> clearFeatureStorage();</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">copyFeaturesFrom</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; other);</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> getFeatureWrapper(<span class=\"keywordtype\">size_t</span> idx);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> getEmptyFeatureWrapper();</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">  125</a></span>&#160;  <span class=\"keyword\">inline</span> FloatType <a class=\"code\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a>(<span class=\"keywordtype\">size_t</span> idx)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    <span class=\"keywordflow\">return</span> seed::getDepth(invmu_sigma2_a_b_vec_.col(idx));</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  }</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">  130</a></span>&#160;  <span class=\"keyword\">inline</span> Position <a class=\"code\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">getSeedPosInFrame</a>(<span class=\"keywordtype\">size_t</span> idx)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    <span class=\"keywordflow\">return</span> f_vec_.col(idx) * <a class=\"code\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">getSeedDepth</a>(idx);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  }</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">  135</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a>;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  }</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">  140</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a>(<span class=\"keywordtype\">size_t</span> i)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;    <span class=\"keywordflow\">return</span> (landmark_vec_.at(i) != <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  }</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">  145</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keywordtype\">size_t</span> count = 0;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">size_t</span> i = 0; i &lt; <a class=\"code\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">num_features_</a>; ++i)</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    {</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;      <span class=\"keywordflow\">if</span>(<a class=\"code\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">isTrackedLandmark</a>(i) || isSeed(type_vec_[i]))</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;        ++count;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    }</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;    <span class=\"keywordflow\">return</span> count;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;  }</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">  156</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;    <span class=\"keywordflow\">return</span> std::count_if(landmark_vec_.begin(), landmark_vec_.end(),</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;                         [](<span class=\"keyword\">const</span> PointPtr&amp; p) { <span class=\"keywordflow\">return</span> p != <span class=\"keyword\">nullptr</span>; });</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  }</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">setKeyPoints</a>();</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">checkKeyPoints</a>(<span class=\"keyword\">const</span> FeaturePtr&amp; ftr);</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">isVisible</a>(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; xyz_w) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;  <span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">getMask</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">  176</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> img_pyr_[0]; }</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">  179</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">id</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a>; }</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">  182</a></span>&#160;  <span class=\"keyword\">inline</span> BundleId <a class=\"code\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">bundleId</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> bundle_id_; }</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">  185</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">getNFrameIndex</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    CHECK_GE(nframe_index_, 0) &lt;&lt; <span class=\"stringliteral\">&quot;NFrame Index not set in frame.&quot;</span>;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">nframe_index_</a>;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;  }</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">  191</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">setNFrameIndex</a>(<span class=\"keywordtype\">size_t</span> nframe_index) { nframe_index_ = nframe_index; }</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">  194</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">T_body_cam_</a>; }</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">  197</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> T_cam_body_; }</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">  200</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">T_cam_world</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a>; }</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">  203</a></span>&#160;  <span class=\"keyword\">inline</span> Transformation <a class=\"code\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> T_f_w_.inverse(); }</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">  206</a></span>&#160;  <span class=\"keyword\">inline</span> Transformation <a class=\"code\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a>()*T_f_w_).inverse(); }</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">  209</a></span>&#160;  <span class=\"keyword\">inline</span> Transformation <a class=\"code\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">T_imu_world</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">T_imu_cam</a>()*<a class=\"code\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a>; }</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">  212</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">set_T_cam_imu</a>(<span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>)</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;  {</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;    T_cam_body_ = <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>;</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;    T_body_cam_ = T_cam_imu.inverse();</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;  }</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">  219</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> CameraPtr&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">cam_</a>; }</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">  222</a></span>&#160;  <span class=\"keyword\">inline</span> int64_t <a class=\"code\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">getTimestampNSec</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> timestamp_; }</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">  225</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">getTimestampSec</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(timestamp_)/1e9; }</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">  228</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a>; }</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">  231</a></span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">pos</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>().getPosition(); }</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">  234</a></span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">imuPos</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">T_world_imu</a>().getPosition(); }</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;  <span class=\"keywordtype\">double</span> getErrorMultiplier() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;  <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">  242</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">jacobian_xyz2uv</a>(</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; xyz_in_f,</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;      Eigen::Matrix&lt;double,2,6&gt;&amp; J)</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;  {</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> x = xyz_in_f[0];</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> y = xyz_in_f[1];</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv = 1./xyz_in_f[2];</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv_2 = z_inv*z_inv;</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;    J(0,0) = -z_inv;              <span class=\"comment\">// -1/z</span></div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;    J(0,1) = 0.0;                 <span class=\"comment\">// 0</span></div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;    J(0,2) = x*z_inv_2;           <span class=\"comment\">// x/z^2</span></div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;    J(0,3) = y*J(0,2);            <span class=\"comment\">// x*y/z^2</span></div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;    J(0,4) = -(1.0 + x*J(0,2));   <span class=\"comment\">// -(1.0 + x^2/z^2)</span></div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;    J(0,5) = y*z_inv;             <span class=\"comment\">// y/z</span></div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;    J(1,0) = 0.0;                 <span class=\"comment\">// 0</span></div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;    J(1,1) = -z_inv;              <span class=\"comment\">// -1/z</span></div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;    J(1,2) = y*z_inv_2;           <span class=\"comment\">// y/z^2</span></div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;    J(1,3) = 1.0 + y*J(1,2);      <span class=\"comment\">// 1.0 + y^2/z^2</span></div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;    J(1,4) = -J(0,3);             <span class=\"comment\">// -x*y/z^2</span></div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;    J(1,5) = -x*z_inv;            <span class=\"comment\">// -x/z</span></div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;  }</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;</div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">  267</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">jacobian_xyz2uv_imu</a>(</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>,</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_imu,</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;      Eigen::Matrix&lt;double,2,6&gt;&amp; J)</div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\">  271</span>&#160;  {</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;    Eigen::Matrix&lt;double,3,6&gt; G_x; <span class=\"comment\">// Generators times pose</span></div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;    G_x.block&lt;3,3&gt;(0,0) = Eigen::Matrix3d::Identity();</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;    G_x.block&lt;3,3&gt;(0,3) = -vk::skew(p_in_imu);</div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d p_in_cam = T_cam_imu * p_in_imu;</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;    Eigen::Matrix&lt;double,2,3&gt; J_proj; <span class=\"comment\">// projection derivative</span></div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;    J_proj &lt;&lt; 1, 0, -p_in_cam[0]/p_in_cam[2],</div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;        0, 1, -p_in_cam[1]/p_in_cam[2];</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;    J = - 1.0/p_in_cam[2] * J_proj * T_cam_imu.getRotation().getRotationMatrix() * G_x;</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;  }</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;</div><div class=\"line\"><a name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">  285</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">jacobian_xyz2img_imu</a>(</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>,</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_imu,</div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 2, 3&gt;&amp; J_cam,</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;      Eigen::Matrix&lt;double,2,6&gt;&amp; J)</div><div class=\"line\"><a name=\"l00290\"></a><span class=\"lineno\">  290</span>&#160;  {</div><div class=\"line\"><a name=\"l00291\"></a><span class=\"lineno\">  291</span>&#160;    Eigen::Matrix&lt;double,3,6&gt; G_x; <span class=\"comment\">// Generators times pose</span></div><div class=\"line\"><a name=\"l00292\"></a><span class=\"lineno\">  292</span>&#160;    G_x.block&lt;3,3&gt;(0,0) = Eigen::Matrix3d::Identity();</div><div class=\"line\"><a name=\"l00293\"></a><span class=\"lineno\">  293</span>&#160;    G_x.block&lt;3,3&gt;(0,3) = -vk::skew(p_in_imu);</div><div class=\"line\"><a name=\"l00294\"></a><span class=\"lineno\">  294</span>&#160;</div><div class=\"line\"><a name=\"l00295\"></a><span class=\"lineno\">  295</span>&#160;    J =  J_cam * T_cam_imu.getRotation().getRotationMatrix() * G_x;</div><div class=\"line\"><a name=\"l00296\"></a><span class=\"lineno\">  296</span>&#160;  }</div><div class=\"line\"><a name=\"l00297\"></a><span class=\"lineno\">  297</span>&#160;</div><div class=\"line\"><a name=\"l00299\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">  299</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">jacobian_xyz2f_imu</a>(</div><div class=\"line\"><a name=\"l00300\"></a><span class=\"lineno\">  300</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>,</div><div class=\"line\"><a name=\"l00301\"></a><span class=\"lineno\">  301</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_imu,</div><div class=\"line\"><a name=\"l00302\"></a><span class=\"lineno\">  302</span>&#160;      Eigen::Matrix&lt;double, 3, 6&gt;&amp; J)</div><div class=\"line\"><a name=\"l00303\"></a><span class=\"lineno\">  303</span>&#160;  {</div><div class=\"line\"><a name=\"l00304\"></a><span class=\"lineno\">  304</span>&#160;    Eigen::Matrix&lt;double,3,6&gt; G_x;</div><div class=\"line\"><a name=\"l00305\"></a><span class=\"lineno\">  305</span>&#160;    G_x.block&lt;3,3&gt;(0,0) = Eigen::Matrix3d::Identity();</div><div class=\"line\"><a name=\"l00306\"></a><span class=\"lineno\">  306</span>&#160;    G_x.block&lt;3,3&gt;(0,3) = -vk::skew(p_in_imu);</div><div class=\"line\"><a name=\"l00307\"></a><span class=\"lineno\">  307</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d p_in_cam = T_cam_imu * p_in_imu;</div><div class=\"line\"><a name=\"l00308\"></a><span class=\"lineno\">  308</span>&#160;</div><div class=\"line\"><a name=\"l00309\"></a><span class=\"lineno\">  309</span>&#160;    Eigen::Matrix&lt;double, 3, 3&gt; J_normalize;</div><div class=\"line\"><a name=\"l00310\"></a><span class=\"lineno\">  310</span>&#160;    <span class=\"keywordtype\">double</span> x2 = p_in_cam[0]*p_in_cam[0];</div><div class=\"line\"><a name=\"l00311\"></a><span class=\"lineno\">  311</span>&#160;    <span class=\"keywordtype\">double</span> y2 = p_in_cam[1]*p_in_cam[1];</div><div class=\"line\"><a name=\"l00312\"></a><span class=\"lineno\">  312</span>&#160;    <span class=\"keywordtype\">double</span> z2 = p_in_cam[2]*p_in_cam[2];</div><div class=\"line\"><a name=\"l00313\"></a><span class=\"lineno\">  313</span>&#160;    <span class=\"keywordtype\">double</span> xy = p_in_cam[0]*p_in_cam[1];</div><div class=\"line\"><a name=\"l00314\"></a><span class=\"lineno\">  314</span>&#160;    <span class=\"keywordtype\">double</span> yz = p_in_cam[1]*p_in_cam[2];</div><div class=\"line\"><a name=\"l00315\"></a><span class=\"lineno\">  315</span>&#160;    <span class=\"keywordtype\">double</span> zx = p_in_cam[2]*p_in_cam[0];</div><div class=\"line\"><a name=\"l00316\"></a><span class=\"lineno\">  316</span>&#160;    J_normalize &lt;&lt; y2+z2, -xy, -zx,</div><div class=\"line\"><a name=\"l00317\"></a><span class=\"lineno\">  317</span>&#160;        -xy, x2+z2, -yz,</div><div class=\"line\"><a name=\"l00318\"></a><span class=\"lineno\">  318</span>&#160;        -zx, -yz, x2+y2;</div><div class=\"line\"><a name=\"l00319\"></a><span class=\"lineno\">  319</span>&#160;    J_normalize *= 1 / std::pow(x2+y2+z2, 1.5);</div><div class=\"line\"><a name=\"l00320\"></a><span class=\"lineno\">  320</span>&#160;</div><div class=\"line\"><a name=\"l00321\"></a><span class=\"lineno\">  321</span>&#160;    J = J_normalize * T_cam_imu.getRotationMatrix() * G_x;</div><div class=\"line\"><a name=\"l00322\"></a><span class=\"lineno\">  322</span>&#160;  }</div><div class=\"line\"><a name=\"l00323\"></a><span class=\"lineno\">  323</span>&#160;</div><div class=\"line\"><a name=\"l00325\"></a><span class=\"lineno\">  325</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">jacobian_xyz2image_imu</a>(</div><div class=\"line\"><a name=\"l00326\"></a><span class=\"lineno\">  326</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a>&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00327\"></a><span class=\"lineno\">  327</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">T_cam_imu</a>,</div><div class=\"line\"><a name=\"l00328\"></a><span class=\"lineno\">  328</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_imu,</div><div class=\"line\"><a name=\"l00329\"></a><span class=\"lineno\">  329</span>&#160;      Eigen::Matrix&lt;double,2,6&gt;&amp; J);</div><div class=\"line\"><a name=\"l00330\"></a><span class=\"lineno\">  330</span>&#160;</div><div class=\"line\"><a name=\"l00331\"></a><span class=\"lineno\">  331</span>&#160;</div><div class=\"line\"><a name=\"l00332\"></a><span class=\"lineno\">  332</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Archive&gt;</div><div class=\"line\"><a name=\"l00333\"></a><span class=\"lineno\">  333</span>&#160;  <span class=\"keywordtype\">void</span> serialize(Archive&amp; ar, <span class=\"keyword\">const</span> <span class=\"keywordtype\">unsigned</span> <span class=\"comment\">/*version*/</span>)</div><div class=\"line\"><a name=\"l00334\"></a><span class=\"lineno\">  334</span>&#160;  {</div><div class=\"line\"><a name=\"l00335\"></a><span class=\"lineno\">  335</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">frame_counter_</a>;</div><div class=\"line\"><a name=\"l00336\"></a><span class=\"lineno\">  336</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">id_</a>;</div><div class=\"line\"><a name=\"l00337\"></a><span class=\"lineno\">  337</span>&#160;    ar &amp; timestamp_;</div><div class=\"line\"><a name=\"l00338\"></a><span class=\"lineno\">  338</span>&#160;    <span class=\"comment\">//ar &amp; cam_;</span></div><div class=\"line\"><a name=\"l00339\"></a><span class=\"lineno\">  339</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">T_f_w_</a>;</div><div class=\"line\"><a name=\"l00340\"></a><span class=\"lineno\">  340</span>&#160;    <span class=\"comment\">//ar &amp; Cov_;</span></div><div class=\"line\"><a name=\"l00341\"></a><span class=\"lineno\">  341</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">img_pyr_</a>;</div><div class=\"line\"><a name=\"l00342\"></a><span class=\"lineno\">  342</span>&#160;    <span class=\"comment\">//ar &amp; fts_;</span></div><div class=\"line\"><a name=\"l00343\"></a><span class=\"lineno\">  343</span>&#160;    <span class=\"comment\">//ar &amp; key_pts_;</span></div><div class=\"line\"><a name=\"l00344\"></a><span class=\"lineno\">  344</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a>;</div><div class=\"line\"><a name=\"l00345\"></a><span class=\"lineno\">  345</span>&#160;    <span class=\"comment\">//ar &amp; v_kf_;</span></div><div class=\"line\"><a name=\"l00346\"></a><span class=\"lineno\">  346</span>&#160;    ar &amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">last_published_ts_</a>;</div><div class=\"line\"><a name=\"l00347\"></a><span class=\"lineno\">  347</span>&#160;    <span class=\"comment\">// ar &amp; R_imu_world_;</span></div><div class=\"line\"><a name=\"l00348\"></a><span class=\"lineno\">  348</span>&#160;  }</div><div class=\"line\"><a name=\"l00349\"></a><span class=\"lineno\">  349</span>&#160;};</div><div class=\"line\"><a name=\"l00350\"></a><span class=\"lineno\">  350</span>&#160;</div><div class=\"line\"><a name=\"l00351\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameBundle.html\">  351</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a></div><div class=\"line\"><a name=\"l00352\"></a><span class=\"lineno\">  352</span>&#160;{</div><div class=\"line\"><a name=\"l00353\"></a><span class=\"lineno\">  353</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00354\"></a><span class=\"lineno\">  354</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00355\"></a><span class=\"lineno\">  355</span>&#160;</div><div class=\"line\"><a name=\"l00356\"></a><span class=\"lineno\">  356</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameBundle&gt; Ptr;</div><div class=\"line\"><a name=\"l00357\"></a><span class=\"lineno\">  357</span>&#160;  <span class=\"keyword\">typedef</span> std::vector&lt;FramePtr&gt; FrameList;</div><div class=\"line\"><a name=\"l00358\"></a><span class=\"lineno\">  358</span>&#160;</div><div class=\"line\"><a name=\"l00359\"></a><span class=\"lineno\">  359</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>(<span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; frames);</div><div class=\"line\"><a name=\"l00360\"></a><span class=\"lineno\">  360</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00361\"></a><span class=\"lineno\">  361</span>&#160;</div><div class=\"line\"><a name=\"l00362\"></a><span class=\"lineno\">  362</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00363\"></a><span class=\"lineno\">  363</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00364\"></a><span class=\"lineno\">  364</span>&#160;</div><div class=\"line\"><a name=\"l00365\"></a><span class=\"lineno\">  365</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> FramePtr&amp; at(<span class=\"keywordtype\">size_t</span> i)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00366\"></a><span class=\"lineno\">  366</span>&#160;    <span class=\"keywordflow\">return</span> frames_.at(i);</div><div class=\"line\"><a name=\"l00367\"></a><span class=\"lineno\">  367</span>&#160;  }</div><div class=\"line\"><a name=\"l00368\"></a><span class=\"lineno\">  368</span>&#160;</div><div class=\"line\"><a name=\"l00369\"></a><span class=\"lineno\">  369</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> size()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00370\"></a><span class=\"lineno\">  370</span>&#160;    <span class=\"keywordflow\">return</span> frames_.size();</div><div class=\"line\"><a name=\"l00371\"></a><span class=\"lineno\">  371</span>&#160;  }</div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\">  372</span>&#160;</div><div class=\"line\"><a name=\"l00373\"></a><span class=\"lineno\">  373</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> empty()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\">  374</span>&#160;    <span class=\"keywordflow\">return</span> frames_.empty();</div><div class=\"line\"><a name=\"l00375\"></a><span class=\"lineno\">  375</span>&#160;  }</div><div class=\"line\"><a name=\"l00376\"></a><span class=\"lineno\">  376</span>&#160;</div><div class=\"line\"><a name=\"l00377\"></a><span class=\"lineno\">  377</span>&#160;  <span class=\"keyword\">inline</span> BundleId getBundleId()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00378\"></a><span class=\"lineno\">  378</span>&#160;    <span class=\"keywordflow\">return</span> bundle_id_;</div><div class=\"line\"><a name=\"l00379\"></a><span class=\"lineno\">  379</span>&#160;  }</div><div class=\"line\"><a name=\"l00380\"></a><span class=\"lineno\">  380</span>&#160;</div><div class=\"line\"><a name=\"l00382\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">  382</a></span>&#160;  <span class=\"keyword\">inline</span> int64_t <a class=\"code\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">getMinTimestampNanoseconds</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00383\"></a><span class=\"lineno\">  383</span>&#160;    CHECK(!frames_.empty());</div><div class=\"line\"><a name=\"l00384\"></a><span class=\"lineno\">  384</span>&#160;    <span class=\"keywordflow\">return</span> frames_[0]-&gt;getTimestampNSec();</div><div class=\"line\"><a name=\"l00385\"></a><span class=\"lineno\">  385</span>&#160;  }</div><div class=\"line\"><a name=\"l00386\"></a><span class=\"lineno\">  386</span>&#160;</div><div class=\"line\"><a name=\"l00388\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">  388</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">get_T_W_B</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00389\"></a><span class=\"lineno\">  389</span>&#160;    CHECK(!frames_.empty());</div><div class=\"line\"><a name=\"l00390\"></a><span class=\"lineno\">  390</span>&#160;    <span class=\"keywordflow\">return</span> frames_[0]-&gt;T_world_imu();</div><div class=\"line\"><a name=\"l00391\"></a><span class=\"lineno\">  391</span>&#160;  }</div><div class=\"line\"><a name=\"l00392\"></a><span class=\"lineno\">  392</span>&#160;</div><div class=\"line\"><a name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">  394</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">set_T_W_B</a>(<span class=\"keyword\">const</span> Transformation&amp; T_W_B) {</div><div class=\"line\"><a name=\"l00395\"></a><span class=\"lineno\">  395</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keyword\">const</span> FramePtr&amp; frame : frames_)</div><div class=\"line\"><a name=\"l00396\"></a><span class=\"lineno\">  396</span>&#160;      frame-&gt;T_f_w_ = (T_W_B*frame-&gt;T_body_cam_).inverse();</div><div class=\"line\"><a name=\"l00397\"></a><span class=\"lineno\">  397</span>&#160;  }</div><div class=\"line\"><a name=\"l00398\"></a><span class=\"lineno\">  398</span>&#160;</div><div class=\"line\"><a name=\"l00399\"></a><span class=\"lineno\">  399</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">setKeyframe</a>() {</div><div class=\"line\"><a name=\"l00400\"></a><span class=\"lineno\">  400</span>&#160;    <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a> = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;  }</div><div class=\"line\"><a name=\"l00402\"></a><span class=\"lineno\">  402</span>&#160;</div><div class=\"line\"><a name=\"l00403\"></a><span class=\"lineno\">  403</span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">isKeyframe</a>()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00404\"></a><span class=\"lineno\">  404</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a>;</div><div class=\"line\"><a name=\"l00405\"></a><span class=\"lineno\">  405</span>&#160;  }</div><div class=\"line\"><a name=\"l00406\"></a><span class=\"lineno\">  406</span>&#160;</div><div class=\"line\"><a name=\"l00408\"></a><span class=\"lineno\">  408</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">numLandmarks</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00409\"></a><span class=\"lineno\">  409</span>&#160;</div><div class=\"line\"><a name=\"l00411\"></a><span class=\"lineno\">  411</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">numFeatures</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00412\"></a><span class=\"lineno\">  412</span>&#160;</div><div class=\"line\"><a name=\"l00414\"></a><span class=\"lineno\">  414</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">numTrackedFeatures</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00415\"></a><span class=\"lineno\">  415</span>&#160;</div><div class=\"line\"><a name=\"l00416\"></a><span class=\"lineno\">  416</span>&#160;  FrameList frames_;</div><div class=\"line\"><a name=\"l00417\"></a><span class=\"lineno\">  417</span>&#160;</div><div class=\"line\"><a name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">  420</a></span>&#160;  Eigen::Matrix&lt;int64_t, 1, Eigen::Dynamic&gt; <a class=\"code\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">imu_timestamps_ns_</a>;</div><div class=\"line\"><a name=\"l00421\"></a><span class=\"lineno\">  421</span>&#160;  Eigen::Matrix&lt;double, 6, Eigen::Dynamic&gt; imu_measurements_; <span class=\"comment\">// Order: [acc, gyro]</span></div><div class=\"line\"><a name=\"l00422\"></a><span class=\"lineno\">  422</span>&#160;</div><div class=\"line\"><a name=\"l00423\"></a><span class=\"lineno\">  423</span>&#160;  <span class=\"comment\">// Make class iterable:</span></div><div class=\"line\"><a name=\"l00424\"></a><span class=\"lineno\">  424</span>&#160;  <span class=\"keyword\">typedef</span> FrameList::value_type value_type;</div><div class=\"line\"><a name=\"l00425\"></a><span class=\"lineno\">  425</span>&#160;  <span class=\"keyword\">typedef</span> FrameList::iterator iterator;</div><div class=\"line\"><a name=\"l00426\"></a><span class=\"lineno\">  426</span>&#160;  <span class=\"keyword\">typedef</span> FrameList::const_iterator const_iterator;</div><div class=\"line\"><a name=\"l00427\"></a><span class=\"lineno\">  427</span>&#160;  FrameList::iterator begin() { <span class=\"keywordflow\">return</span> frames_.begin(); }</div><div class=\"line\"><a name=\"l00428\"></a><span class=\"lineno\">  428</span>&#160;  FrameList::iterator end() { <span class=\"keywordflow\">return</span> frames_.end(); }</div><div class=\"line\"><a name=\"l00429\"></a><span class=\"lineno\">  429</span>&#160;  FrameList::const_iterator begin()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> frames_.begin(); }</div><div class=\"line\"><a name=\"l00430\"></a><span class=\"lineno\">  430</span>&#160;  FrameList::const_iterator end()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> frames_.end(); }</div><div class=\"line\"><a name=\"l00431\"></a><span class=\"lineno\">  431</span>&#160;  FrameList::const_iterator cbegin()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> frames_.cbegin(); }</div><div class=\"line\"><a name=\"l00432\"></a><span class=\"lineno\">  432</span>&#160;  FrameList::const_iterator cend()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> frames_.cend(); }</div><div class=\"line\"><a name=\"l00433\"></a><span class=\"lineno\">  433</span>&#160;</div><div class=\"line\"><a name=\"l00434\"></a><span class=\"lineno\">  434</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00435\"></a><span class=\"lineno\">  435</span>&#160;</div><div class=\"line\"><a name=\"l00436\"></a><span class=\"lineno\">  436</span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">is_keyframe_</a> = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00437\"></a><span class=\"lineno\">  437</span>&#160;</div><div class=\"line\"><a name=\"l00438\"></a><span class=\"lineno\">  438</span>&#160;  BundleId bundle_id_;</div><div class=\"line\"><a name=\"l00439\"></a><span class=\"lineno\">  439</span>&#160;};</div><div class=\"line\"><a name=\"l00440\"></a><span class=\"lineno\">  440</span>&#160;</div><div class=\"line\"><a name=\"l00442\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo_1_1frame__utils.html\">  442</a></span>&#160;<span class=\"keyword\">namespace </span>frame_utils {</div><div class=\"line\"><a name=\"l00443\"></a><span class=\"lineno\">  443</span>&#160;</div><div class=\"line\"><a name=\"l00445\"></a><span class=\"lineno\">  445</span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228\">createImgPyramid</a>(</div><div class=\"line\"><a name=\"l00446\"></a><span class=\"lineno\">  446</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_level_0,</div><div class=\"line\"><a name=\"l00447\"></a><span class=\"lineno\">  447</span>&#160;    <span class=\"keywordtype\">int</span> n_levels,</div><div class=\"line\"><a name=\"l00448\"></a><span class=\"lineno\">  448</span>&#160;    ImgPyr&amp; pyr);</div><div class=\"line\"><a name=\"l00449\"></a><span class=\"lineno\">  449</span>&#160;</div><div class=\"line\"><a name=\"l00451\"></a><span class=\"lineno\">  451</span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1\">getSceneDepth</a>(</div><div class=\"line\"><a name=\"l00452\"></a><span class=\"lineno\">  452</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00453\"></a><span class=\"lineno\">  453</span>&#160;    <span class=\"keywordtype\">double</span>&amp; depth_median,</div><div class=\"line\"><a name=\"l00454\"></a><span class=\"lineno\">  454</span>&#160;    <span class=\"keywordtype\">double</span>&amp; depth_min,</div><div class=\"line\"><a name=\"l00455\"></a><span class=\"lineno\">  455</span>&#160;    <span class=\"keywordtype\">double</span>&amp; depth_max);</div><div class=\"line\"><a name=\"l00456\"></a><span class=\"lineno\">  456</span>&#160;</div><div class=\"line\"><a name=\"l00457\"></a><span class=\"lineno\">  457</span>&#160;<span class=\"keywordtype\">void</span> computeNormalizedBearingVectors(</div><div class=\"line\"><a name=\"l00458\"></a><span class=\"lineno\">  458</span>&#160;    <span class=\"keyword\">const</span> Keypoints&amp; px_vec,</div><div class=\"line\"><a name=\"l00459\"></a><span class=\"lineno\">  459</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a>&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00460\"></a><span class=\"lineno\">  460</span>&#160;    Bearings* f_vec);</div><div class=\"line\"><a name=\"l00461\"></a><span class=\"lineno\">  461</span>&#160;</div><div class=\"line\"><a name=\"l00462\"></a><span class=\"lineno\">  462</span>&#160;} <span class=\"comment\">// namespace frame_utils</span></div><div class=\"line\"><a name=\"l00463\"></a><span class=\"lineno\">  463</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1Frame_html_a4708038228f42fe71f25c05f1bf378c9\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">svo::Frame::frame_counter_</a></div><div class=\"ttdeci\">static int frame_counter_</div><div class=\"ttdoc\">Counts the number of created frames. Used to set the unique id. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:38</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a5820b68c25453f4bceccd46e3d96f697\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">svo::Frame::checkKeyPoints</a></div><div class=\"ttdeci\">void checkKeyPoints(const FeaturePtr &amp;ftr)</div><div class=\"ttdoc\">Check if we can select five better key-points. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_aa00ae41c589a338e52233ae1b258fd32\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">svo::Frame::resizeFeatureStorage</a></div><div class=\"ttdeci\">void resizeFeatureStorage(size_t num)</div><div class=\"ttdoc\">Resize the number of features. (NOT THREADSAFE) </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:93</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_aa9f027e13363d1bc6a96f90f58840bf8\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">svo::Frame::track_id_vec_</a></div><div class=\"ttdeci\">TrackIds track_id_vec_</div><div class=\"ttdoc\">ID of every observed 3d point. -1 if no point assigned. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:72</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a09ebfebf95e30d65273e69c55e6617a2\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">svo::Frame::isKeyframe</a></div><div class=\"ttdeci\">bool isKeyframe() const</div><div class=\"ttdoc\">Was this frame selected as keyframe? </div><div class=\"ttdef\"><b>Definition:</b> frame.h:228</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a054fe91073950d31f74111e68417cf15\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">svo::Frame::T_cam_imu</a></div><div class=\"ttdeci\">const Transformation &amp; T_cam_imu() const</div><div class=\"ttdoc\">Get imu pose in camera frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:197</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a137c490d744a7002f7608801714edba9\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">svo::Frame::last_published_ts_</a></div><div class=\"ttdeci\">int last_published_ts_</div><div class=\"ttdoc\">Timestamp of last publishing. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:50</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameBundle_html_a13b70e1a1ece794728627ad34b632721\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">svo::FrameBundle::imu_timestamps_ns_</a></div><div class=\"ttdeci\">Eigen::Matrix&lt; int64_t, 1, Eigen::Dynamic &gt; imu_timestamps_ns_</div><div class=\"ttdef\"><b>Definition:</b> frame.h:420</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameBundle_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameBundle.html\">svo::FrameBundle</a></div><div class=\"ttdef\"><b>Definition:</b> frame.h:351</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a4f86fbd03628ffd017f517a9a45eb95f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">svo::Frame::img</a></div><div class=\"ttdeci\">const cv::Mat &amp; img() const</div><div class=\"ttdoc\">Full resolution image stored in the frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:176</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a1accb3c86ed9d7abf140d83cc24f958d\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">svo::Frame::level_vec_</a></div><div class=\"ttdeci\">Levels level_vec_</div><div class=\"ttdoc\">Level of the feature. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:68</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a949e59fb915ca2e5bbd00fa352a2d633\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">svo::Frame::jacobian_xyz2image_imu</a></div><div class=\"ttdeci\">static void jacobian_xyz2image_imu(const Camera &amp;cam, const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</div><div class=\"ttdoc\">Jacobian to image plane(also taking distortion into consideration) w.r.t IMU pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:249</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_aa3d890f9fee920036f430bf6e546a174\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">svo::Frame::~Frame</a></div><div class=\"ttdeci\">virtual ~Frame()</div><div class=\"ttdoc\">Destructor. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:52</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a03fbea569ca4969a51434cb23a73106a\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">svo::Frame::jacobian_xyz2f_imu</a></div><div class=\"ttdeci\">static void jacobian_xyz2f_imu(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 3, 6 &gt; &amp;J)</div><div class=\"ttdoc\">Jacobian of using unit bearing vector for map point w.r.t IMU pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:299</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameBundle_html_ab5390318b9d6a32258d22e3f1c53b38f\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">svo::FrameBundle::getMinTimestampNanoseconds</a></div><div class=\"ttdeci\">int64_t getMinTimestampNanoseconds() const</div><div class=\"ttdoc\">Get timestamp of camera rig. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:382</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a34b93936cd3e520a509ba4a3d7e46bc7\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">svo::Frame::numFeatures</a></div><div class=\"ttdeci\">size_t numFeatures() const</div><div class=\"ttdoc\">Number of features. Not necessarily succesfully tracked ones. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:135</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a04f38c38d3a837d9408fb1cceaafdc46\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">svo::Frame::getTimestampNSec</a></div><div class=\"ttdeci\">int64_t getTimestampNSec() const</div><div class=\"ttdoc\">Timestamp of frame in nanoseconds. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:222</div></div>\n<div class=\"ttc\" id=\"namespacesvo_1_1frame__utils_html_ab66effb506ec377e6edf35e95c5d8228\"><div class=\"ttname\"><a href=\"namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228\">svo::frame_utils::createImgPyramid</a></div><div class=\"ttdeci\">void createImgPyramid(const cv::Mat &amp;img_level_0, int n_levels, ImgPyr &amp;pyr)</div><div class=\"ttdoc\">Creates an image pyramid of half-sampled images. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:306</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a436a95418ec6eba4dd5fa283b9160dc8\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">svo::Frame::setKeyPoints</a></div><div class=\"ttdeci\">void setKeyPoints()</div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:169</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_aada7346f4b09e9273461136e909b9bc5\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">svo::Frame::T_world_imu</a></div><div class=\"ttdeci\">Transformation T_world_imu() const</div><div class=\"ttdoc\">Get pose of imu in world coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:206</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a9824ce581e2aa2d8930a0378a98f84a6\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">svo::Frame::grad_vec_</a></div><div class=\"ttdeci\">Gradients grad_vec_</div><div class=\"ttdoc\">Gradient direction of edgelet normal. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:69</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a09ee4da5f0e0a4e0dbf36086d61f17cd\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">svo::Frame::initFrame</a></div><div class=\"ttdeci\">void initFrame(const cv::Mat &amp;img, size_t n_pyr_levels)</div><div class=\"ttdoc\">Initialize new frame and create image pyramid. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:55</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a6c26e6a2f3148d00539863eab5548bcf\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">svo::Frame::f_vec_</a></div><div class=\"ttdeci\">Bearings f_vec_</div><div class=\"ttdoc\">Bearing Vector. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:66</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a3220d0fd39e2c2b6b502ebe5e56fe3e0\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">svo::Frame::id_</a></div><div class=\"ttdeci\">int id_</div><div class=\"ttdoc\">Unique id of the frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:39</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ac2788e7b975245189b3058718748facb\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">svo::Frame::score_vec_</a></div><div class=\"ttdeci\">Scores score_vec_</div><div class=\"ttdoc\">Keypoint detection scores. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:67</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a677ab5fadd2f9dd87c35a36c57460528\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">svo::Frame::getTimestampSec</a></div><div class=\"ttdeci\">double getTimestampSec() const</div><div class=\"ttdoc\">Timestamp of frame in seconds. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:225</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_afd9e2bf1dcaa1f82206b616d662f6437\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">svo::Frame::landmark_vec_</a></div><div class=\"ttdeci\">Landmarks landmark_vec_</div><div class=\"ttdoc\">Reference to 3D point. Can contain nullpointers! </div><div class=\"ttdef\"><b>Definition:</b> frame.h:71</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_acf53d418a1e2368f3f4010b4f81ba2c0\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">svo::Frame::key_pts_</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; int, Position &gt;, Eigen::aligned_allocator&lt; std::pair&lt; int, Position &gt; &gt; &gt; key_pts_</div><div class=\"ttdoc\">Five features and associated 3D points which are used to detect if two frames have overlapping field ...</div><div class=\"ttdef\"><b>Definition:</b> frame.h:48</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a65ace6a33926bac64d78617444c0efab\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">svo::Frame::imuPos</a></div><div class=\"ttdeci\">Eigen::Vector3d imuPos() const</div><div class=\"ttdoc\">Get the pose of the imu frame in (w)orld coordinate frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:234</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_af223f8e7708a90603f962ca37b3996d5\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">svo::Frame::deleteLandmark</a></div><div class=\"ttdeci\">void deleteLandmark(const size_t &amp;feature_index)</div><div class=\"ttdoc\">Delete feature. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:88</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_acb36ee9773605f69538ebd27df49bc97\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">svo::Frame::px_vec_</a></div><div class=\"ttdeci\">Keypoints px_vec_</div><div class=\"ttdoc\">Pixel Coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:65</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a7dbb5a6ff1428e5f9fac69877a71b85f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">svo::Frame::cam</a></div><div class=\"ttdeci\">const CameraPtr &amp; cam() const</div><div class=\"ttdoc\">Camera model. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:219</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a697ab5c0ab639af5ff97e7f2bba471df\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">svo::Frame::cam_</a></div><div class=\"ttdeci\">CameraPtr cam_</div><div class=\"ttdoc\">Camera model. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:42</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a2c725631540e15ccc2f0d1378a8ba170\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">svo::Frame::nframe_index_</a></div><div class=\"ttdeci\">int nframe_index_</div><div class=\"ttdoc\">Storage index in NFrame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:41</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a1bd2d83bab896de855384d059c43de5f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">svo::Frame::T_cam_world</a></div><div class=\"ttdeci\">const Transformation &amp; T_cam_world() const</div><div class=\"ttdoc\">Get pose of world origin in frame coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:200</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a7a36595081e9197047d95287a21a7b6e\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">svo::Frame::setNFrameIndex</a></div><div class=\"ttdeci\">void setNFrameIndex(size_t nframe_index)</div><div class=\"ttdoc\">Set storage index of frame in parent NFrame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:191</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a857540046a75a544750db47e907def0c\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">svo::Frame::numLandmarks</a></div><div class=\"ttdeci\">size_t numLandmarks() const</div><div class=\"ttdoc\">Number of landmark references in frames. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:156</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ab9ba93932550e92aa43195aa831f19f7\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">svo::Frame::isVisible</a></div><div class=\"ttdeci\">bool isVisible(const Eigen::Vector3d &amp;xyz_w) const</div><div class=\"ttdoc\">Check if a point in (w)orld coordinate frame is visible in the image. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:227</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a2b98dd459dee140f95ed966dc9ffab37\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">svo::Frame::bundleId</a></div><div class=\"ttdeci\">BundleId bundleId() const</div><div class=\"ttdoc\">Id of frame bundle. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:182</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a766ef97750ad3d3fac12b8dada48db2a\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">svo::Frame::T_imu_world</a></div><div class=\"ttdeci\">Transformation T_imu_world() const</div><div class=\"ttdoc\">Get pose of world-origin in IMU coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:209</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a71f690854f4a63c9b1496e3945d6156c\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">svo::Frame::type_vec_</a></div><div class=\"ttdeci\">FeatureTypes type_vec_</div><div class=\"ttdoc\">Is the feature a corner or an edgelet? </div><div class=\"ttdef\"><b>Definition:</b> frame.h:70</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a352e9d9ef659c384a3f9d422cf24f940\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">svo::Frame::set_T_cam_imu</a></div><div class=\"ttdeci\">void set_T_cam_imu(const Transformation &amp;T_cam_imu)</div><div class=\"ttdoc\">Set camera to imu transformation. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:212</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a013ffe3d5c749b856c1c2f812a6b498e\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">svo::Frame::T_world_cam</a></div><div class=\"ttdeci\">Transformation T_world_cam() const</div><div class=\"ttdoc\">Get pose of the cam in world coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:203</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a1a9283929911b5480b133ae84fdd6577\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">svo::Frame::getSeedPosInFrame</a></div><div class=\"ttdeci\">Position getSeedPosInFrame(size_t idx) const</div><div class=\"ttdoc\">Get coordinates of seed in frame coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:130</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a1147e6dd9b678161585875e4a4048987\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">svo::Frame::img_pyr_</a></div><div class=\"ttdeci\">ImgPyr img_pyr_</div><div class=\"ttdoc\">Image Pyramid. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:44</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a0e4ba9ed976e38b3897f777dd0001b6e\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">svo::Frame::jacobian_xyz2uv_imu</a></div><div class=\"ttdeci\">static void jacobian_xyz2uv_imu(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</div><div class=\"ttdoc\">Jacobian of reprojection error (on unit plane) w.r.t. IMU pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:267</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a4ae56e6cb7e35f1ec17aedb9f00ac3d0\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">svo::Frame::is_keyframe_</a></div><div class=\"ttdeci\">bool is_keyframe_</div><div class=\"ttdoc\">Was this frames selected as keyframe? </div><div class=\"ttdef\"><b>Definition:</b> frame.h:49</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ace67c4917849a759810d2927886b02ad\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">svo::Frame::pos</a></div><div class=\"ttdeci\">Eigen::Vector3d pos() const</div><div class=\"ttdoc\">Return the pose of the frame in the (w)orld coordinate frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:231</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a09ba195e035e25336118752e8d808137\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">svo::Frame::isTrackedLandmark</a></div><div class=\"ttdeci\">bool isTrackedLandmark(size_t i) const</div><div class=\"ttdoc\">Check if i-th keypoint has a reference to a landmark. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:140</div></div>\n<div class=\"ttc\" id=\"namespacesvo_1_1frame__utils_html_a3e14f30975b878994df3a16db2593bb1\"><div class=\"ttname\"><a href=\"namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1\">svo::frame_utils::getSceneDepth</a></div><div class=\"ttdeci\">bool getSceneDepth(const FramePtr &amp;frame, double &amp;depth_median, double &amp;depth_min, double &amp;depth_max)</div><div class=\"ttdoc\">Get the average depth of the features in the image. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:322</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_adc6e29aea1bc1432cf4cfcc02dfa0c74\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">svo::Frame::copyFeaturesFrom</a></div><div class=\"ttdeci\">void copyFeaturesFrom(const Frame &amp;other)</div><div class=\"ttdoc\">Copy feature data from another frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:139</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a9227125f71925f4562e99d938a7b097f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">svo::Frame::T_imu_cam</a></div><div class=\"ttdeci\">const Transformation &amp; T_imu_cam() const</div><div class=\"ttdoc\">Get camera pose in imu frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:194</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a83d59cf336b9d8e927b125f850ab9d63\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">svo::Frame::num_features_</a></div><div class=\"ttdeci\">size_t num_features_</div><div class=\"ttdoc\">the vectors below are initialized to the maximum number of feature-tracks </div><div class=\"ttdef\"><b>Definition:</b> frame.h:64</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ab8ec058962266550f9b9f5125892fab8\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">svo::Frame::getNFrameIndex</a></div><div class=\"ttdeci\">int getNFrameIndex() const</div><div class=\"ttdoc\">Get storage index of frame in parent NFrame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:185</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a749fa7087396f987838c81697c97ae33\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">svo::Frame::T_f_w_</a></div><div class=\"ttdeci\">Transformation T_f_w_</div><div class=\"ttdoc\">Transform (f)rame from (w)orld. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:43</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a78fb662e02b5d690d0ec5aff180c3b95\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">svo::Frame::seed_ref_vec_</a></div><div class=\"ttdeci\">SeedRefs seed_ref_vec_</div><div class=\"ttdoc\">Only for seeds during reprojection. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:73</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a7f0bd5479004f541142a4197d73f1ef1\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">svo::Frame::T_body_cam_</a></div><div class=\"ttdeci\">Transformation T_body_cam_</div><div class=\"ttdoc\">!&lt; Timestamp of when the image was recorded in nanoseconds. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:58</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameBundle_html_a736afc6e54f4707d603f67405bdd953a\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">svo::FrameBundle::get_T_W_B</a></div><div class=\"ttdeci\">Transformation get_T_W_B() const</div><div class=\"ttdoc\">Get pose of camera rig. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:388</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a90c4503d84f89bad3a1ed7971902b000\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">svo::Frame::setKeyframe</a></div><div class=\"ttdeci\">void setKeyframe()</div><div class=\"ttdoc\">Select this frame as keyframe. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:82</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a659039742b5d2b5545feb811efe935e1\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">svo::Frame::Frame</a></div><div class=\"ttdeci\">Frame()</div><div class=\"ttdoc\">Empty constructor. Just for testing! </div><div class=\"ttdef\"><b>Definition:</b> frame.h:94</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a1d17861d1073e693a369b5c7656e1d36\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">svo::Frame::R_imu_world_</a></div><div class=\"ttdeci\">Quaternion R_imu_world_</div><div class=\"ttdoc\">IMU Attitude provided by external attitude extimator. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:51</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a5a66fe3946a76445ada2e38147cfbd8e\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">svo::Frame::getMask</a></div><div class=\"ttdeci\">const cv::Mat &amp; getMask() const</div><div class=\"ttdoc\">Masks is same size as the image. Convention: 0 == masked, nonzero == valid. </div><div class=\"ttdef\"><b>Definition:</b> frame.cpp:234</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a5c72a896ce597c05ca09d5d2758d15a6\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">svo::Frame::numTrackedFeatures</a></div><div class=\"ttdeci\">size_t numTrackedFeatures() const</div><div class=\"ttdoc\">Number of successfully tracked features: seeds and actual landmarks. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:145</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ad60c0defb5c61abcadb3f341acaa62d9\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">svo::Frame::jacobian_xyz2uv</a></div><div class=\"ttdeci\">static void jacobian_xyz2uv(const Eigen::Vector3d &amp;xyz_in_f, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</div><div class=\"ttdef\"><b>Definition:</b> frame.h:242</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_aa35f9b3a6e275eddc65c7f366a691301\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">svo::Frame::invmu_sigma2_a_b_vec_</a></div><div class=\"ttdeci\">SeedStates invmu_sigma2_a_b_vec_</div><div class=\"ttdoc\">Vector containing all necessary information for seed update. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:74</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_ad18170c2e4927c490edd7b871ada2faf\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">svo::Frame::jacobian_xyz2img_imu</a></div><div class=\"ttdeci\">static void jacobian_xyz2img_imu(const Transformation &amp;T_cam_imu, const Eigen::Vector3d &amp;p_in_imu, const Eigen::Matrix&lt; double, 2, 3 &gt; &amp;J_cam, Eigen::Matrix&lt; double, 2, 6 &gt; &amp;J)</div><div class=\"ttdoc\">Jacobian of reprojection error (on image plane) w.r.t. IMU pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:285</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameBundle_html_adee577b4de32262e5e61b1209aa50677\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">svo::FrameBundle::set_T_W_B</a></div><div class=\"ttdeci\">void set_T_W_B(const Transformation &amp;T_W_B)</div><div class=\"ttdoc\">Set pose of camera rig. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:394</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a85b6751930952162b2f7ced8f06d2036\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">svo::Frame::id</a></div><div class=\"ttdeci\">int id() const</div><div class=\"ttdoc\">Id of frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:179</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a3cf372944980408bfc193c07deafd41d\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">svo::Frame::getSeedDepth</a></div><div class=\"ttdeci\">FloatType getSeedDepth(size_t idx) const</div><div class=\"ttdoc\">Get depth at seed. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:125</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame__gpu_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align/frame_gpu.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame_gpu.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/math_utils.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_imgproc/image_pyramid.hpp&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_image_gpu.cuh&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_matrix.cuh&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_pinhole_camera.cuh&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/feature_wrapper.h&gt;</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/seed_wrapper.h&gt;</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#include &lt;svo/img_align/sparse_img_align_device_utils.cuh&gt;</span> </div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameGpu.html\">   32</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameGpu&gt; Ptr;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">   37</a></span>&#160;  std::vector&lt;imp::cu::ImageGpu8uC1::Ptr&gt; <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">cu_img_pyramid_copy_</a>; </div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"comment\">// TODO: USE imp::ImagePyramid</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"comment\">//std::vector&lt;imp::ImagePyramid8uC1::Ptr&gt; cu_ref_pyramids_device_;</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr cu_T_imu_cam_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr cu_T_cam_imu_;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  imp::cu::PinholeCamera::Ptr cu_camera_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a>(<span class=\"keyword\">const</span> CameraPtr&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">img</a>,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp_ns,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> n_pyr_levels);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a>(</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp_ns,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      <span class=\"keyword\">const</span> CameraPtr&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">cam</a>,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">T_world_cam</a>);</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">   58</a></span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a>() {}</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">virtual</span> <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">~FrameGpu</a>();</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">FrameGpu</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">initGpuData</a>(imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr&amp; cu_T_imu_cam,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;                   imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr&amp; cu_T_cam_imu,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;                   imp::cu::PinholeCamera::Ptr&amp; cu_camera);</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;};</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1FrameGpu_html_afc537469a5ad3d24e76b57a638c8304f\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">svo::FrameGpu::cu_img_pyramid_copy_</a></div><div class=\"ttdeci\">std::vector&lt; imp::cu::ImageGpu8uC1::Ptr &gt; cu_img_pyramid_copy_</div><div class=\"ttdoc\">Image Pyramid. </div><div class=\"ttdef\"><b>Definition:</b> frame_gpu.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameGpu_html_aa6d9d899ea61194bff5d761398934d2c\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">svo::FrameGpu::~FrameGpu</a></div><div class=\"ttdeci\">virtual ~FrameGpu()</div><div class=\"ttdoc\">Destructor. </div><div class=\"ttdef\"><b>Definition:</b> frame_gpu.cpp:49</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a4f86fbd03628ffd017f517a9a45eb95f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">svo::Frame::img</a></div><div class=\"ttdeci\">const cv::Mat &amp; img() const</div><div class=\"ttdoc\">Full resolution image stored in the frame. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:176</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a7dbb5a6ff1428e5f9fac69877a71b85f\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">svo::Frame::cam</a></div><div class=\"ttdeci\">const CameraPtr &amp; cam() const</div><div class=\"ttdoc\">Camera model. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:219</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html_a013ffe3d5c749b856c1c2f812a6b498e\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">svo::Frame::T_world_cam</a></div><div class=\"ttdeci\">Transformation T_world_cam() const</div><div class=\"ttdoc\">Get pose of the cam in world coordinates. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:203</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameGpu_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameGpu.html\">svo::FrameGpu</a></div><div class=\"ttdoc\">The FrameGpu class adds GPU data members to the frame base class. </div><div class=\"ttdef\"><b>Definition:</b> frame_gpu.h:32</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameGpu_html_ae0b3677297fc722028c14f24c632191e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e\">svo::FrameGpu::FrameGpu</a></div><div class=\"ttdeci\">FrameGpu()</div><div class=\"ttdoc\">Empty constructor. Just for testing! </div><div class=\"ttdef\"><b>Definition:</b> frame_gpu.h:58</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameGpu_html_a2b7e406066dd361c70c745369138760a\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">svo::FrameGpu::initGpuData</a></div><div class=\"ttdeci\">void initGpuData(imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_imu_cam, imp::cu::Matrix&lt; FloatTypeGpu, 3, 4 &gt;::Ptr &amp;cu_T_cam_imu, imp::cu::PinholeCamera::Ptr &amp;cu_camera)</div><div class=\"ttdoc\">Initialize new frame and create image pyramid. </div><div class=\"ttdef\"><b>Definition:</b> frame_gpu.cpp:52</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame__handler__array_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/frame_handler_array.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame_handler_array.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_base.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerArray.html\">   15</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;{</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameHandlerArray&gt; Ptr;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">FrameHandlerArray</a>(</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&amp; base_options,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; depth_filter_options,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; feature_detector_options,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&amp; reprojector_options,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keyword\">const</span> CameraBundle::Ptr&amp; cameras);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"comment\">// deprecated. use addImageBundle().</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">void</span> addImages(</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; images,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">const</span> FrameBundlePtr&amp; lastFrames()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  }</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  </div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">processFrameBundle</a>() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  UpdateResult processFirstFrame();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  UpdateResult processSecondFrame();</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  UpdateResult processFrame();</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  UpdateResult makeKeyframe(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> camera_id);</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">resetAll</a>();</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;};</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1ReprojectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:25</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerArray_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerArray.html\">svo::FrameHandlerArray</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_array.h:15</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></div><div class=\"ttdoc\">Base class for various VO pipelines. Manages the map and the state machine. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:213</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_aeac142109c38dcf88d26dd5e022142d4\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">svo::FrameHandlerBase::last_frames_</a></div><div class=\"ttdeci\">FrameBundlePtr last_frames_</div><div class=\"ttdoc\">Last frame-bundle that was processed. Can be nullptr. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:333</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerArray_html_a643f2c7c1873dad682e9bc45f80a5e77\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">svo::FrameHandlerArray::FrameHandlerArray</a></div><div class=\"ttdeci\">FrameHandlerArray(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cameras)</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_array.cpp:24</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></div><div class=\"ttdoc\">Depth-filter config parameters. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:27</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1BaseOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></div><div class=\"ttdoc\">Options for base frame handler module. Sets tracing and quality options. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:36</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1InitializationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerArray_html_a3494c8e26fbc59bcbeee40ea97cb8d7c\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">svo::FrameHandlerArray::processFrameBundle</a></div><div class=\"ttdeci\">virtual UpdateResult processFrameBundle() override</div><div class=\"ttdoc\">Pipeline implementation. Called by base class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_array.cpp:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerArray_html_aa6e2b5fece87e4058f8ee657a274b919\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">svo::FrameHandlerArray::resetAll</a></div><div class=\"ttdeci\">virtual void resetAll()</div><div class=\"ttdoc\">Reset the frame handler. Implement in derived class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_array.cpp:185</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame__handler__base_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/frame_handler_base.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame_handler_base.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;queue&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;functional&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/timer.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/ringbuffer.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;rpg_common/callback_host.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;svo/config.h&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/params_helper.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/ncamera.h&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\">// forward declarations:</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;{</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">class </span>PerformanceMonitor;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;}</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;{</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">   31</a></span>&#160;<span class=\"keyword\">enum class</span> <a class=\"code\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">KeyframeCriterion</a> {</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  DOWNLOOKING, FORWARD</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;};</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html\">   36</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;{</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">   43</a></span>&#160;  <span class=\"keywordtype\">size_t</span> max_n_kfs = 10;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f\">   47</a></span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">KeyframeCriterion</a> kfselect_criterion = KeyframeCriterion::DOWNLOOKING;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde\">   52</a></span>&#160;  <span class=\"keywordtype\">double</span> kfselect_min_dist = 0.12;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8\">   56</a></span>&#160;  <span class=\"keywordtype\">size_t</span> kfselect_numkfs_upper_thresh = 110;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1\">   60</a></span>&#160;  <span class=\"keywordtype\">size_t</span> kfselect_numkfs_lower_thresh = 80;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe\">   64</a></span>&#160;  <span class=\"keywordtype\">double</span> kfselect_min_dist_metric = 0.5;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea\">   67</a></span>&#160;  <span class=\"keywordtype\">double</span> kfselect_min_angle = 5.0;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">int</span> kfselect_min_num_frames_between_kfs = 2;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keywordtype\">double</span> kfselect_min_disparity = -1;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc\">   77</a></span>&#160;  <span class=\"keywordtype\">double</span> init_map_scale = 1.0;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4\">   88</a></span>&#160;  <span class=\"keywordtype\">bool</span> init_use_att_and_depth = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764\">   97</a></span>&#160;  <span class=\"keywordtype\">size_t</span> img_align_max_level = 4;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f\">  105</a></span>&#160;  <span class=\"keywordtype\">size_t</span> img_align_min_level = 2;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6\">  108</a></span>&#160;  <span class=\"keywordtype\">bool</span> img_align_robustification = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57\">  115</a></span>&#160;  <span class=\"keywordtype\">double</span> img_align_prior_lambda_rot = 0.0;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020\">  120</a></span>&#160;  <span class=\"keywordtype\">double</span> img_align_prior_lambda_trans = 0.0;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5\">  125</a></span>&#160;  <span class=\"keywordtype\">size_t</span> img_align_max_num_features = 0;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b\">  130</a></span>&#160;  <span class=\"keywordtype\">bool</span> img_align_use_distortion_jacobian = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  </div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3\">  136</a></span>&#160;  <span class=\"keywordtype\">bool</span> img_align_est_illumination_gain = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordtype\">bool</span> img_align_est_illumination_offset = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed\">  149</a></span>&#160;  <span class=\"keywordtype\">double</span> poseoptim_thresh = 2.0;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70\">  154</a></span>&#160;  <span class=\"keywordtype\">double</span> poseoptim_prior_lambda = 0.0;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310\">  159</a></span>&#160;  <span class=\"keywordtype\">double</span> poseoptim_using_unit_sphere = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225\">  166</a></span>&#160;  <span class=\"keywordtype\">int</span> structure_optimization_max_pts = 20;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857\">  169</a></span>&#160;  std::string trace_dir = <span class=\"stringliteral\">&quot;/tmp&quot;</span>;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0\">  174</a></span>&#160;  <span class=\"keywordtype\">size_t</span> quality_min_fts = 50;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6\">  179</a></span>&#160;  <span class=\"keywordtype\">int</span> quality_max_fts_drop = 40;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe\">  183</a></span>&#160;  <span class=\"keywordtype\">size_t</span> relocalization_max_trials = 100;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c\">  186</a></span>&#160;  <span class=\"keywordtype\">bool</span> use_imu = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9\">  189</a></span>&#160;  <span class=\"keywordtype\">bool</span> update_seeds_with_old_keyframes = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5\">  192</a></span>&#160;  <span class=\"keywordtype\">bool</span> use_async_reprojectors = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;};</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">  195</a></span>&#160;<span class=\"keyword\">enum class</span> <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a> {</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7\">kPaused</a>,           </div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd\">kInitializing</a>,     </div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\">kTracking</a>,         </div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64\">kRelocalization</a>    </div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;};</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;<span class=\"keyword\">enum class</span> TrackingQuality {</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;  kInsufficient,</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;  kBad,</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;  kGood</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;};</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;<span class=\"keyword\">enum class</span> UpdateResult {</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;  kDefault,</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;  kKeyframe,</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;  kFailure</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;};</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html\">  213</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost</a>&lt;const FrameBundlePtr&amp;&gt;</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;{</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;  <span class=\"keyword\">typedef</span> std::mutex mutex_t;</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_lock&lt;mutex_t&gt; ulock_t;</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;  <span class=\"keyword\">typedef</span> std::function&lt;bool(const Transformation&amp; pose)&gt; NewKeyFrameCriteria;</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>(</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&amp; base_options,</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&amp; reprojector_options,</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; depthfilter_options,</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector_options,</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;      <span class=\"keyword\">const</span> CameraBundle::Ptr&amp; cameras);</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>();</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">  246</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">start</a>() { set_start_ = <span class=\"keyword\">true</span>; }</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">  249</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">reset</a>() { set_reset_ = <span class=\"keyword\">true</span>; }</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">  252</a></span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">stage</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> stage_; }</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;  <span class=\"keywordtype\">bool</span> addFrameBundle(<span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle);</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;  <span class=\"keywordtype\">bool</span> addImageBundle(</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;        <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; imgs,</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;        <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;  <span class=\"keywordtype\">void</span> setRotationPrior(<span class=\"keyword\">const</span> Quaternion&amp; R_imu_world);</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;  <span class=\"keywordtype\">void</span> setRotationIncrementPrior(<span class=\"keyword\">const</span> Quaternion&amp; R_lastimu_newimu);</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;  FrameBundlePtr getLastFrames()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> last_frames_; }</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;</div><div class=\"line\"><a name=\"l00266\"></a><span class=\"lineno\">  266</span>&#160;</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">  268</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">hasStarted</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !set_start_; }</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;</div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">  271</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> MapPtr&amp; <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">map</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> map_; }</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">  274</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> CameraBundle::Ptr&amp; <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">getNCamera</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> cams_; }</div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">  277</a></span>&#160;  <span class=\"keyword\">inline</span> TrackingQuality <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">trackingQuality</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> tracking_quality_; }</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">  280</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">lastProcessingTime</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> timer_.getTime(); }</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">  283</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">lastNumObservations</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> num_obs_last_; }</div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">  286</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">setBundleAdjuster</a>(<span class=\"keyword\">const</span> AbstractBundleAdjustmentPtr&amp; ba)</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;  {</div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;    bundle_adjustment_ = ba;</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;  }</div><div class=\"line\"><a name=\"l00290\"></a><span class=\"lineno\">  290</span>&#160;</div><div class=\"line\"><a name=\"l00291\"></a><span class=\"lineno\">  291</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> AbstractBundleAdjustmentPtr&amp; getBundleAdjuster()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00292\"></a><span class=\"lineno\">  292</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00293\"></a><span class=\"lineno\">  293</span>&#160;    <span class=\"keywordflow\">return</span> bundle_adjustment_;</div><div class=\"line\"><a name=\"l00294\"></a><span class=\"lineno\">  294</span>&#160;  }</div><div class=\"line\"><a name=\"l00295\"></a><span class=\"lineno\">  295</span>&#160;</div><div class=\"line\"><a name=\"l00297\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">  297</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">setInitialImuPose</a>(<span class=\"keyword\">const</span> Transformation&amp; T_world_imu)</div><div class=\"line\"><a name=\"l00298\"></a><span class=\"lineno\">  298</span>&#160;  {</div><div class=\"line\"><a name=\"l00299\"></a><span class=\"lineno\">  299</span>&#160;    T_world_imuinit = T_world_imu;</div><div class=\"line\"><a name=\"l00300\"></a><span class=\"lineno\">  300</span>&#160;  }</div><div class=\"line\"><a name=\"l00301\"></a><span class=\"lineno\">  301</span>&#160;</div><div class=\"line\"><a name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">  303</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">setInitialCamPose</a>(<span class=\"keyword\">const</span> Transformation&amp; T_world_cam, <span class=\"keywordtype\">size_t</span> cam_index = 0)</div><div class=\"line\"><a name=\"l00304\"></a><span class=\"lineno\">  304</span>&#160;  {</div><div class=\"line\"><a name=\"l00305\"></a><span class=\"lineno\">  305</span>&#160;    T_world_imuinit = T_world_cam*cams_-&gt;get_T_C_B(cam_index);</div><div class=\"line\"><a name=\"l00306\"></a><span class=\"lineno\">  306</span>&#160;  }</div><div class=\"line\"><a name=\"l00307\"></a><span class=\"lineno\">  307</span>&#160;</div><div class=\"line\"><a name=\"l00309\"></a><span class=\"lineno\">  309</span>&#160;  std::vector&lt;FramePtr&gt; closeKeyframes() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00310\"></a><span class=\"lineno\">  310</span>&#160;</div><div class=\"line\"><a name=\"l00312\"></a><span class=\"lineno\">  312</span>&#160;  <span class=\"keywordtype\">void</span> setCompensation(<span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> do_compensation);</div><div class=\"line\"><a name=\"l00313\"></a><span class=\"lineno\">  313</span>&#160;</div><div class=\"line\"><a name=\"l00315\"></a><span class=\"lineno\">  315</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> setFirstFrames(<span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; first_frames);</div><div class=\"line\"><a name=\"l00316\"></a><span class=\"lineno\">  316</span>&#160;</div><div class=\"line\"><a name=\"l00322\"></a><span class=\"lineno\">  322</span>&#160;</div><div class=\"line\"><a name=\"l00324\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">  324</a></span>&#160;  <a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">options_</a>;</div><div class=\"line\"><a name=\"l00325\"></a><span class=\"lineno\">  325</span>&#160;</div><div class=\"line\"><a name=\"l00327\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">  327</a></span>&#160;  CameraBundle::Ptr <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a>;</div><div class=\"line\"><a name=\"l00328\"></a><span class=\"lineno\">  328</span>&#160;</div><div class=\"line\"><a name=\"l00330\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">  330</a></span>&#160;  FrameBundlePtr <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">new_frames_</a>;</div><div class=\"line\"><a name=\"l00331\"></a><span class=\"lineno\">  331</span>&#160;</div><div class=\"line\"><a name=\"l00333\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">  333</a></span>&#160;  FrameBundlePtr <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a>;</div><div class=\"line\"><a name=\"l00334\"></a><span class=\"lineno\">  334</span>&#160;</div><div class=\"line\"><a name=\"l00336\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">  336</a></span>&#160;  NewKeyFrameCriteria <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">need_new_kf_</a>;</div><div class=\"line\"><a name=\"l00337\"></a><span class=\"lineno\">  337</span>&#160;</div><div class=\"line\"><a name=\"l00339\"></a><span class=\"lineno\">  339</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> needNewKf(<span class=\"keyword\">const</span> Transformation&amp; T_f_w);</div><div class=\"line\"><a name=\"l00340\"></a><span class=\"lineno\">  340</span>&#160;</div><div class=\"line\"><a name=\"l00342\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">  342</a></span>&#160;  Vector3d <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">t_lastimu_newimu_</a>;</div><div class=\"line\"><a name=\"l00343\"></a><span class=\"lineno\">  343</span>&#160;</div><div class=\"line\"><a name=\"l00345\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">  345</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">T_world_imuinit</a>;</div><div class=\"line\"><a name=\"l00346\"></a><span class=\"lineno\">  346</span>&#160;</div><div class=\"line\"><a name=\"l00347\"></a><span class=\"lineno\">  347</span>&#160;<span class=\"preprocessor\">#ifdef SVO_LOOP_CLOSING</span></div><div class=\"line\"><a name=\"l00348\"></a><span class=\"lineno\">  348</span>&#160;  <span class=\"comment\">// Copy of data from the loop closure class</span></div><div class=\"line\"><a name=\"l00349\"></a><span class=\"lineno\">  349</span>&#160;  std::vector&lt;Eigen::Matrix&lt;float, 1, 6 &gt;,</div><div class=\"line\"><a name=\"l00350\"></a><span class=\"lineno\">  350</span>&#160;  Eigen::aligned_allocator&lt;Eigen::Matrix&lt;float, 1, 6&gt; &gt; &gt; loop_closure_data;</div><div class=\"line\"><a name=\"l00351\"></a><span class=\"lineno\">  351</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00352\"></a><span class=\"lineno\">  352</span>&#160;</div><div class=\"line\"><a name=\"l00353\"></a><span class=\"lineno\">  353</span>&#160;  <span class=\"comment\">// SVO Modules</span></div><div class=\"line\"><a name=\"l00354\"></a><span class=\"lineno\">  354</span>&#160;  SparseImgAlignBasePtr sparse_img_align_;</div><div class=\"line\"><a name=\"l00355\"></a><span class=\"lineno\">  355</span>&#160;  std::vector&lt;ReprojectorPtr&gt; reprojectors_;</div><div class=\"line\"><a name=\"l00356\"></a><span class=\"lineno\">  356</span>&#160;  PoseOptimizerPtr pose_optimizer_;</div><div class=\"line\"><a name=\"l00357\"></a><span class=\"lineno\">  357</span>&#160;  DepthFilterPtr depth_filter_;</div><div class=\"line\"><a name=\"l00358\"></a><span class=\"lineno\">  358</span>&#160;  InitializerPtr initializer_;</div><div class=\"line\"><a name=\"l00359\"></a><span class=\"lineno\">  359</span>&#160;<span class=\"preprocessor\">#ifdef SVO_LOOP_CLOSING</span></div><div class=\"line\"><a name=\"l00360\"></a><span class=\"lineno\">  360</span>&#160;  LoopClosingPtr lc_;</div><div class=\"line\"><a name=\"l00361\"></a><span class=\"lineno\">  361</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00362\"></a><span class=\"lineno\">  362</span>&#160;</div><div class=\"line\"><a name=\"l00364\"></a><span class=\"lineno\">  364</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00365\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">  365</a></span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">stage_</a>;                 </div><div class=\"line\"><a name=\"l00366\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">  366</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">set_reset_</a>;              </div><div class=\"line\"><a name=\"l00367\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">  367</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">set_start_</a>;              </div><div class=\"line\"><a name=\"l00368\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">  368</a></span>&#160;  MapPtr <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">map_</a>;                  </div><div class=\"line\"><a name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">  369</a></span>&#160;  <a class=\"code\" href=\"classvk_1_1Timer.html\">vk::Timer</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">timer_</a>;             </div><div class=\"line\"><a name=\"l00370\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">  370</a></span>&#160;  <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt;double&gt;</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">acc_frame_timings_</a>;    </div><div class=\"line\"><a name=\"l00371\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">  371</a></span>&#160;  <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt;size_t&gt;</a> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">acc_num_obs_</a>;          </div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">  372</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">num_obs_last_</a>;                         </div><div class=\"line\"><a name=\"l00373\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">  373</a></span>&#160;  TrackingQuality <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">tracking_quality_</a>;            </div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">  374</a></span>&#160;  <span class=\"keywordtype\">size_t</span> frame_counter_ = 0; </div><div class=\"line\"><a name=\"l00375\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">  375</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">depth_median_</a>;                 </div><div class=\"line\"><a name=\"l00376\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">  376</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">depth_min_</a>;                    </div><div class=\"line\"><a name=\"l00377\"></a><span class=\"lineno\">  377</span>&#160;  <span class=\"keywordtype\">double</span> depth_max_;</div><div class=\"line\"><a name=\"l00378\"></a><span class=\"lineno\">  378</span>&#160;</div><div class=\"line\"><a name=\"l00379\"></a><span class=\"lineno\">  379</span>&#160;  std::vector&lt;std::vector&lt;FramePtr&gt;&gt; overlap_kfs_;</div><div class=\"line\"><a name=\"l00380\"></a><span class=\"lineno\">  380</span>&#160;</div><div class=\"line\"><a name=\"l00381\"></a><span class=\"lineno\">  381</span>&#160;  <span class=\"comment\">// Rotation prior.</span></div><div class=\"line\"><a name=\"l00382\"></a><span class=\"lineno\">  382</span>&#160;  <span class=\"keywordtype\">bool</span> have_rotation_prior_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00383\"></a><span class=\"lineno\">  383</span>&#160;  Quaternion R_imu_world_;</div><div class=\"line\"><a name=\"l00384\"></a><span class=\"lineno\">  384</span>&#160;  Quaternion R_imulast_world_;</div><div class=\"line\"><a name=\"l00385\"></a><span class=\"lineno\">  385</span>&#160;</div><div class=\"line\"><a name=\"l00386\"></a><span class=\"lineno\">  386</span>&#160;  <span class=\"comment\">// Motion prior</span></div><div class=\"line\"><a name=\"l00387\"></a><span class=\"lineno\">  387</span>&#160;  <span class=\"keywordtype\">bool</span> have_motion_prior_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00388\"></a><span class=\"lineno\">  388</span>&#160;  Transformation T_newimu_lastimu_prior_;</div><div class=\"line\"><a name=\"l00389\"></a><span class=\"lineno\">  389</span>&#160;</div><div class=\"line\"><a name=\"l00390\"></a><span class=\"lineno\">  390</span>&#160;  <span class=\"comment\">// base modules</span></div><div class=\"line\"><a name=\"l00391\"></a><span class=\"lineno\">  391</span>&#160;  AbstractBundleAdjustmentPtr bundle_adjustment_;</div><div class=\"line\"><a name=\"l00392\"></a><span class=\"lineno\">  392</span>&#160;</div><div class=\"line\"><a name=\"l00393\"></a><span class=\"lineno\">  393</span>&#160;  <span class=\"comment\">// relocalization</span></div><div class=\"line\"><a name=\"l00394\"></a><span class=\"lineno\">  394</span>&#160;  FramePtr reloc_keyframe_;</div><div class=\"line\"><a name=\"l00395\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">  395</a></span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">relocalization_n_trials_</a>;      </div><div class=\"line\"><a name=\"l00396\"></a><span class=\"lineno\">  396</span>&#160;</div><div class=\"line\"><a name=\"l00397\"></a><span class=\"lineno\">  397</span>&#160;  <span class=\"keywordtype\">void</span> setInitialPose(<span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00398\"></a><span class=\"lineno\">  398</span>&#160;</div><div class=\"line\"><a name=\"l00399\"></a><span class=\"lineno\">  399</span>&#160;  <span class=\"keywordtype\">size_t</span> sparseImageAlignment();</div><div class=\"line\"><a name=\"l00400\"></a><span class=\"lineno\">  400</span>&#160;</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;  <span class=\"keywordtype\">size_t</span> projectMapInFrame();</div><div class=\"line\"><a name=\"l00402\"></a><span class=\"lineno\">  402</span>&#160;</div><div class=\"line\"><a name=\"l00403\"></a><span class=\"lineno\">  403</span>&#160;  <span class=\"keywordtype\">size_t</span> optimizePose();</div><div class=\"line\"><a name=\"l00404\"></a><span class=\"lineno\">  404</span>&#160;</div><div class=\"line\"><a name=\"l00405\"></a><span class=\"lineno\">  405</span>&#160;  <span class=\"keywordtype\">void</span> optimizeStructure(</div><div class=\"line\"><a name=\"l00406\"></a><span class=\"lineno\">  406</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames,</div><div class=\"line\"><a name=\"l00407\"></a><span class=\"lineno\">  407</span>&#160;      <span class=\"keywordtype\">int</span> max_n_pts,</div><div class=\"line\"><a name=\"l00408\"></a><span class=\"lineno\">  408</span>&#160;      <span class=\"keywordtype\">int</span> max_iter);</div><div class=\"line\"><a name=\"l00409\"></a><span class=\"lineno\">  409</span>&#160;</div><div class=\"line\"><a name=\"l00410\"></a><span class=\"lineno\">  410</span>&#160;  <span class=\"keywordtype\">void</span> upgradeSeedsToFeatures(<span class=\"keyword\">const</span> FramePtr&amp; frame);</div><div class=\"line\"><a name=\"l00411\"></a><span class=\"lineno\">  411</span>&#160;</div><div class=\"line\"><a name=\"l00413\"></a><span class=\"lineno\">  413</span>&#160;  <span class=\"keywordtype\">void</span> resetCommon();</div><div class=\"line\"><a name=\"l00414\"></a><span class=\"lineno\">  414</span>&#160;</div><div class=\"line\"><a name=\"l00416\"></a><span class=\"lineno\">  416</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult processFrameBundle() = 0;</div><div class=\"line\"><a name=\"l00417\"></a><span class=\"lineno\">  417</span>&#160;</div><div class=\"line\"><a name=\"l00419\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">  419</a></span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">resetAll</a>() { resetCommon(); }</div><div class=\"line\"><a name=\"l00420\"></a><span class=\"lineno\">  420</span>&#160;</div><div class=\"line\"><a name=\"l00422\"></a><span class=\"lineno\">  422</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> setTrackingQuality(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> num_observations);</div><div class=\"line\"><a name=\"l00423\"></a><span class=\"lineno\">  423</span>&#160;</div><div class=\"line\"><a name=\"l00426\"></a><span class=\"lineno\">  426</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> setDetectorOccupiedCells(</div><div class=\"line\"><a name=\"l00427\"></a><span class=\"lineno\">  427</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> reprojector_grid_idx,</div><div class=\"line\"><a name=\"l00428\"></a><span class=\"lineno\">  428</span>&#160;      <span class=\"keyword\">const</span> DetectorPtr&amp; feature_detector);</div><div class=\"line\"><a name=\"l00429\"></a><span class=\"lineno\">  429</span>&#160;</div><div class=\"line\"><a name=\"l00431\"></a><span class=\"lineno\">  431</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> getMotionPrior(<span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> use_velocity_in_frame);</div><div class=\"line\"><a name=\"l00432\"></a><span class=\"lineno\">  432</span>&#160;};</div><div class=\"line\"><a name=\"l00433\"></a><span class=\"lineno\">  433</span>&#160;</div><div class=\"line\"><a name=\"l00434\"></a><span class=\"lineno\">  434</span>&#160;} <span class=\"comment\">// namespace nslam</span></div><div class=\"ttc\" id=\"structsvo_1_1ReprojectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:25</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ab2ccfae9c7fddf9cf7d4caa2655754f9\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">svo::FrameHandlerBase::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdoc\">Will reset the map as soon as the current frame is finished processing. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:249</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a0ec9d5f1b3aacc63b84496c3a8eb4d10\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">svo::FrameHandlerBase::lastNumObservations</a></div><div class=\"ttdeci\">size_t lastNumObservations() const</div><div class=\"ttdoc\">Get the number of feature observations of the last frame. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:283</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a4f186966e5ef11f3c7b011dd147b3c91\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">svo::FrameHandlerBase::map_</a></div><div class=\"ttdeci\">MapPtr map_</div><div class=\"ttdoc\">Map of keyframes created by the slam system. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:368</div></div>\n<div class=\"ttc\" id=\"classvk_1_1RingBuffer_html\"><div class=\"ttname\"><a href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer&lt; double &gt;</a></div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a0f25d8ecadf657853997b46408ccde9a\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">svo::FrameHandlerBase::need_new_kf_</a></div><div class=\"ttdeci\">NewKeyFrameCriteria need_new_kf_</div><div class=\"ttdoc\">Custom callback to check if new keyframe is required. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:336</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a448477cd9e952bea40b0143f6a462d0c\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">svo::FrameHandlerBase::setInitialImuPose</a></div><div class=\"ttdeci\">void setInitialImuPose(const Transformation &amp;T_world_imu)</div><div class=\"ttdoc\">Set pose of first frame by specifying the IMU pose. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:297</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ac81827e117ff1e9aa1c88f9456aefc7a\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">svo::FrameHandlerBase::start</a></div><div class=\"ttdeci\">void start()</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:246</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_accaed1e9a121fcf913e9366477feb72b\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">svo::FrameHandlerBase::resetAll</a></div><div class=\"ttdeci\">virtual void resetAll()</div><div class=\"ttdoc\">Reset the frame handler. Implement in derived class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:419</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a39961b8ed6a52d37cd5e12e7a506dac1\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">svo::FrameHandlerBase::acc_num_obs_</a></div><div class=\"ttdeci\">vk::RingBuffer&lt; size_t &gt; acc_num_obs_</div><div class=\"ttdoc\">Number of observed features of the last 10 frames, used to give some user feedback on the tracking pe...</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:371</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html\">vk::Timer</a></div><div class=\"ttdef\"><b>Definition:</b> timer.h:13</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">svo::Stage</a></div><div class=\"ttdeci\">Stage</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:195</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a287e9cfb8f8534dd4c968e508d900890\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">svo::FrameHandlerBase::stage</a></div><div class=\"ttdeci\">Stage stage() const</div><div class=\"ttdoc\">Get the current stage of the algorithm. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:252</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a735f6fdf6ea066ed4a23370da868474e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">svo::FrameHandlerBase::T_world_imuinit</a></div><div class=\"ttdeci\">Transformation T_world_imuinit</div><div class=\"ttdoc\">Initial orientation. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:345</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a21c9f984ddd3b2096595ec07dd5df12e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">svo::FrameHandlerBase::num_obs_last_</a></div><div class=\"ttdeci\">size_t num_obs_last_</div><div class=\"ttdoc\">Number of observations in the previous frame. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:372</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a892e230faa0a3073ed05b363968ebe98\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">svo::FrameHandlerBase::stage_</a></div><div class=\"ttdeci\">Stage stage_</div><div class=\"ttdoc\">Current stage of the algorithm. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:365</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a9db554efa667216557b45d7d86c40035\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">svo::FrameHandlerBase::trackingQuality</a></div><div class=\"ttdeci\">TrackingQuality trackingQuality() const</div><div class=\"ttdoc\">Get tracking quality. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:277</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64\">svo::Stage::kRelocalization</a></div><div class=\"ttdoc\">Stage when SVO looses tracking and it tries to relocalize. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ad4dfcc808f58f96c2ffbc6f25ebaa39e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">svo::FrameHandlerBase::acc_frame_timings_</a></div><div class=\"ttdeci\">vk::RingBuffer&lt; double &gt; acc_frame_timings_</div><div class=\"ttdoc\">Total processing time of the last 10 frames, used to give some user feedback on the performance...</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:370</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a62aa9b869ad2e6175c21e07fe2a2d7ff\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">svo::FrameHandlerBase::setBundleAdjuster</a></div><div class=\"ttdeci\">void setBundleAdjuster(const AbstractBundleAdjustmentPtr &amp;ba)</div><div class=\"ttdoc\">EXPERIMENTAL Set Bundle-Adjuster handler. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:286</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></div><div class=\"ttdoc\">Base class for various VO pipelines. Manages the map and the state machine. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:213</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ab8b06f38023a60b23f43e5f61f95ccc1\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">svo::FrameHandlerBase::map</a></div><div class=\"ttdeci\">const MapPtr &amp; map() const</div><div class=\"ttdoc\">Get the current map. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:271</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_abc7b83a56b092b5b6e1a2b220ff8df20\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">svo::FrameHandlerBase::depth_median_</a></div><div class=\"ttdeci\">double depth_median_</div><div class=\"ttdoc\">Median depth at last frame. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:375</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd\">svo::Stage::kInitializing</a></div><div class=\"ttdoc\">Stage until the first frame with enough features is found. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a4d5da447318a37a2569f360a799bc795\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">svo::FrameHandlerBase::set_reset_</a></div><div class=\"ttdeci\">bool set_reset_</div><div class=\"ttdoc\">Flag that the user can set. Will reset the system before the next iteration. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:366</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_af508b33ff564584a69ba0a7b225705af\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">svo::FrameHandlerBase::new_frames_</a></div><div class=\"ttdeci\">FrameBundlePtr new_frames_</div><div class=\"ttdoc\">Current frame-bundle that is being processed. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:330</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_aeac142109c38dcf88d26dd5e022142d4\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">svo::FrameHandlerBase::last_frames_</a></div><div class=\"ttdeci\">FrameBundlePtr last_frames_</div><div class=\"ttdoc\">Last frame-bundle that was processed. Can be nullptr. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:333</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ae014ba4e454ff376cb5b0ba25173e4ab\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">svo::FrameHandlerBase::depth_min_</a></div><div class=\"ttdeci\">double depth_min_</div><div class=\"ttdoc\">Min depth at last frame. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:376</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7\">svo::Stage::kPaused</a></div><div class=\"ttdoc\">Stage at the beginning and after reset. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a3134fcde8903009914568658d64d673d\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">svo::FrameHandlerBase::cams_</a></div><div class=\"ttdeci\">CameraBundle::Ptr cams_</div><div class=\"ttdoc\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:327</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a6411fbf14c5a05c29c2a46fd6fb98acd\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">svo::FrameHandlerBase::hasStarted</a></div><div class=\"ttdeci\">bool hasStarted() const</div><div class=\"ttdoc\">Has the pipeline started? (set_start_ is set to false when started). </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:268</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></div><div class=\"ttdoc\">Depth-filter config parameters. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:27</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\">svo::Stage::kTracking</a></div><div class=\"ttdoc\">Stage when SVO is running and everything is well. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1BaseOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></div><div class=\"ttdoc\">Options for base frame handler module. Sets tracing and quality options. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:36</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a96dffa3404d720ee055bec35ea8b0ecf\"><div class=\"ttname\"><a href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">svo::KeyframeCriterion</a></div><div class=\"ttdeci\">KeyframeCriterion</div><div class=\"ttdoc\">Keyframe Selection Criterion. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:31</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_accb137df18256727849eebc75a1652fc\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">svo::FrameHandlerBase::lastProcessingTime</a></div><div class=\"ttdeci\">double lastProcessingTime() const</div><div class=\"ttdoc\">Get the processing time of the previous iteration. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:280</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1CallbackHost_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1CallbackHost.html\">rpg_common::CallbackHost</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_ac7963fe5b1a195cb1fa89a494a1ac632\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">svo::FrameHandlerBase::t_lastimu_newimu_</a></div><div class=\"ttdeci\">Vector3d t_lastimu_newimu_</div><div class=\"ttdoc\">Translation prior computed from simple constant velocity assumption. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:342</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a60b9699bf6c7dd0e13c48f54b859a3d0\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">svo::FrameHandlerBase::timer_</a></div><div class=\"ttdeci\">vk::Timer timer_</div><div class=\"ttdoc\">Stopwatch to measure time to process frame. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:369</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_aaa0a849e73db01c049e253906bc0518f\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">svo::FrameHandlerBase::relocalization_n_trials_</a></div><div class=\"ttdeci\">size_t relocalization_n_trials_</div><div class=\"ttdoc\">With how many frames did we try to relocalize? </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:395</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_afebe181759fb81a2d916fd7deeb2da69\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">svo::FrameHandlerBase::options_</a></div><div class=\"ttdeci\">BaseOptions options_</div><div class=\"ttdoc\">Options for BaseFrameHandler module. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:324</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1InitializationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a1787cc2c35cdcb8f8db501570acbf0e9\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">svo::FrameHandlerBase::getNCamera</a></div><div class=\"ttdeci\">const CameraBundle::Ptr &amp; getNCamera() const</div><div class=\"ttdoc\">Get camera bundle. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:274</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a8feb15626100f7ef0adccd1d412596ad\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">svo::FrameHandlerBase::set_start_</a></div><div class=\"ttdeci\">bool set_start_</div><div class=\"ttdoc\">Flag the user can set to start the system when the next image is received. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:367</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a731f97f7daa1b810d4f0c39f45c4804e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">svo::FrameHandlerBase::tracking_quality_</a></div><div class=\"ttdeci\">TrackingQuality tracking_quality_</div><div class=\"ttdoc\">An estimate of the tracking quality based on the number of tracked features. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:373</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_aa37ae9b23a5942ea1ad870e54b9ec2b4\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">svo::FrameHandlerBase::setInitialCamPose</a></div><div class=\"ttdeci\">void setInitialCamPose(const Transformation &amp;T_world_cam, size_t cam_index=0)</div><div class=\"ttdoc\">Set pose of first frame by specifying the camera pose. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:303</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame__handler__mono_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/frame_handler_mono.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame_handler_mono.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_base.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerMono.html\">   24</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;{</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameHandlerMono&gt; Ptr;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">FrameHandlerMono</a>(</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&amp; base_options,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; depth_filter_options,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; feature_detector_options,</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&amp; reprojector_options,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"keyword\">const</span> CameraBundle::Ptr&amp; cam);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">addImage</a>(</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  FramePtr <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">lastFrame</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keyword\">inline</span> CameraPtr cam()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">cams_</a>-&gt;getCameraShared(0); }</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"comment\">// helpers</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  <span class=\"keyword\">const</span> FramePtr&amp; newFrame() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"comment\">// unsafe because last_frame might be nullptr. use this function only</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  <span class=\"comment\">// when you are sure that it is set!</span></div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  <span class=\"keyword\">const</span> FramePtr&amp; lastFrameUnsafe() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keywordtype\">bool</span> haveLastFrame() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">processFrameBundle</a>() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">processFirstFrame</a>();</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">processFrame</a>();</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">relocalizeFrame</a>(</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; ref_keyframe);</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">resetAll</a>();</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;};</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html\">svo::FrameHandlerMono</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.h:24</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1ReprojectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:25</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_a6d5bb8229ff2c2e8321c312d2aff3777\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">svo::FrameHandlerMono::relocalizeFrame</a></div><div class=\"ttdeci\">virtual UpdateResult relocalizeFrame(const Transformation &amp;T_cur_ref, const FramePtr &amp;ref_keyframe)</div><div class=\"ttdoc\">Try relocalizing the frame at relative position to provided keyframe. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:191</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_ab45bc735f725b613e649c4a6b92fd6a5\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">svo::FrameHandlerMono::processFrame</a></div><div class=\"ttdeci\">virtual UpdateResult processFrame()</div><div class=\"ttdoc\">Processes all frames after the first two keyframes. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:100</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_ae707ccc80baca6a95dd49f65d3f8ed4d\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">svo::FrameHandlerMono::addImage</a></div><div class=\"ttdeci\">void addImage(const cv::Mat &amp;img, const uint64_t timestamp)</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:50</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></div><div class=\"ttdoc\">Base class for various VO pipelines. Manages the map and the state machine. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:213</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_a033631a985d42758f8f1d077e89cc09e\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">svo::FrameHandlerMono::processFrameBundle</a></div><div class=\"ttdeci\">virtual UpdateResult processFrameBundle() override</div><div class=\"ttdoc\">Pipeline implementation. Called by base class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_a3134fcde8903009914568658d64d673d\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">svo::FrameHandlerBase::cams_</a></div><div class=\"ttdeci\">CameraBundle::Ptr cams_</div><div class=\"ttdoc\">Camera model, can be ATAN, Pinhole or Ocam (see vikit) </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:327</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></div><div class=\"ttdoc\">Depth-filter config parameters. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:27</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1BaseOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></div><div class=\"ttdoc\">Options for base frame handler module. Sets tracing and quality options. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:36</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_a53c2eed564df3f282356c668f3b60712\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">svo::FrameHandlerMono::lastFrame</a></div><div class=\"ttdeci\">FramePtr lastFrame() const</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:223</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_ac47ff8655fde5a91f93204d3cb995e8c\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">svo::FrameHandlerMono::FrameHandlerMono</a></div><div class=\"ttdeci\">FrameHandlerMono(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;cam)</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:24</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1InitializationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_ab5d6b1ea3db44087ff71a3f89d2dcaf9\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">svo::FrameHandlerMono::resetAll</a></div><div class=\"ttdeci\">virtual void resetAll()</div><div class=\"ttdoc\">Reset the frame handler. Implement in derived class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:218</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerMono_html_a3775f25208dac773c7250229e409dfc8\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">svo::FrameHandlerMono::processFirstFrame</a></div><div class=\"ttdeci\">virtual UpdateResult processFirstFrame()</div><div class=\"ttdoc\">Processes the first frame and sets it as a keyframe. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_mono.cpp:57</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/frame__handler__stereo_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/frame_handler_stereo.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">frame_handler_stereo.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_base.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\">// forward declaration</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">class </span>StereoTriangulationOptions;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">class </span>StereoTriangulation;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">typedef</span> std::shared_ptr&lt;StereoTriangulation&gt; StereoTriangulationPtr;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerStereo.html\">   29</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;{</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameHandlerStereo&gt; Ptr;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">FrameHandlerStereo</a>(</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a>&amp; base_options,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a>&amp; depth_filter_options,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; feature_detector_options,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a>&amp; stereo_options,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&amp; reprojector_options,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      <span class=\"keyword\">const</span> CameraBundle::Ptr&amp; stereo_camera);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"comment\">// deprecated. use addImageBundle().</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">addImages</a>(</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; img_left,</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;      <span class=\"keyword\">const</span> cv::Mat&amp; img_right,</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">   87</a></span>&#160;  <span class=\"keyword\">const</span> FrameBundlePtr&amp; <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">lastFrames</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">last_frames_</a>;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  }</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <span class=\"comment\">// SVO Modules:</span></div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  StereoTriangulationPtr stereo_triangulation_;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">processFrameBundle</a>() <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">processFirstFrame</a>();</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">processFrame</a>();</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  <span class=\"keyword\">virtual</span> UpdateResult makeKeyframe();</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">resetAll</a>();</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;};</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1ReprojectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:25</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_a9982752128a302c3664596f8a8ead1c2\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">svo::FrameHandlerStereo::FrameHandlerStereo</a></div><div class=\"ttdeci\">FrameHandlerStereo(const BaseOptions &amp;base_options, const DepthFilterOptions &amp;depth_filter_options, const DetectorOptions &amp;feature_detector_options, const InitializationOptions &amp;init_options, const StereoTriangulationOptions &amp;stereo_options, const ReprojectorOptions &amp;reprojector_options, const FeatureTrackerOptions &amp;tracker_options, const CameraBundle::Ptr &amp;stereo_camera)</div><div class=\"ttdoc\">Default constructor. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:25</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_aa07d49814862b7b874359e113849440a\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">svo::FrameHandlerStereo::lastFrames</a></div><div class=\"ttdeci\">const FrameBundlePtr &amp; lastFrames() const</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.h:87</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html\">svo::FrameHandlerStereo</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.h:29</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_a2ac32a125cb393460ee12875fdb4bebe\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">svo::FrameHandlerStereo::resetAll</a></div><div class=\"ttdeci\">virtual void resetAll()</div><div class=\"ttdoc\">Reset the frame handler. Implement in derived class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:190</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_aa31785db89e72f9047dd28fb0f487ca1\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">svo::FrameHandlerStereo::processFrame</a></div><div class=\"ttdeci\">virtual UpdateResult processFrame()</div><div class=\"ttdoc\">Processes all frames after the first two keyframes. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:86</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></div><div class=\"ttdoc\">Base class for various VO pipelines. Manages the map and the state machine. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:213</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_a1eb79239f5925fcf055a70b716007273\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">svo::FrameHandlerStereo::processFirstFrame</a></div><div class=\"ttdeci\">virtual UpdateResult processFirstFrame()</div><div class=\"ttdoc\">Processes the first frame and sets it as a keyframe. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:65</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html_aeac142109c38dcf88d26dd5e022142d4\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">svo::FrameHandlerBase::last_frames_</a></div><div class=\"ttdeci\">FrameBundlePtr last_frames_</div><div class=\"ttdoc\">Last frame-bundle that was processed. Can be nullptr. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:333</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DepthFilterOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></div><div class=\"ttdoc\">Depth-filter config parameters. </div><div class=\"ttdef\"><b>Definition:</b> depth_filter.h:27</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1BaseOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></div><div class=\"ttdoc\">Options for base frame handler module. Sets tracing and quality options. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:36</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1StereoTriangulationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> stereo_triangulation.h:12</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_afb6b1b1b021514e836b61b3a5acee2aa\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">svo::FrameHandlerStereo::processFrameBundle</a></div><div class=\"ttdeci\">virtual UpdateResult processFrameBundle() override</div><div class=\"ttdoc\">Pipeline implementation. Called by base class. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:46</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1InitializationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FrameHandlerStereo_html_af6a5255d43cf2a4387987fda8e2f3fcd\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">svo::FrameHandlerStereo::addImages</a></div><div class=\"ttdeci\">void addImages(const cv::Mat &amp;img_left, const cv::Mat &amp;img_right, const uint64_t timestamp)</div><div class=\"ttdef\"><b>Definition:</b> frame_handler_stereo.cpp:56</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index__\"></a>- _ -</h3><ul>\n<li>__init__()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f\">vikit_py.transformations.Arcball</a>\n</li>\n<li>_BaselineOverDepth()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_CameraInfoCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_CheckNewMapNeeded()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_MapCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_MapVisibility()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_on_topic_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>_publishCameraMarker()\n: <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388\">evo_utils.tf_to_camera_markers.tfToCamera</a>\n</li>\n<li>_RemoteKeyCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_TFCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf\">evo_utils.snakify.snakify</a>\n, <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828\">evo_utils.tf_to_camera_markers.tfToCamera</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_0x7e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_0x7e\"></a>- ~ -</h3><ul>\n<li>~AbstractDetector()\n: <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">svo::AbstractDetector</a>\n</li>\n<li>~DepthFilter()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56\">svo::DepthFilter</a>\n</li>\n<li>~DepthFromDefocusNode()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>~Frame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">svo::Frame</a>\n</li>\n<li>~FrameGpu()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">svo::FrameGpu</a>\n</li>\n<li>~Point()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97\">svo::Point</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_a\"></a>- a -</h3><ul>\n<li>A_cur_ref_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">svo::Matcher</a>\n</li>\n<li>AbstractBundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">svo::AbstractBundleAdjustment</a>\n</li>\n<li>AbstractDetector()\n: <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">svo::AbstractDetector</a>\n</li>\n<li>acc_bias\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a\">svo::ImuInitialization</a>\n</li>\n<li>acc_bias_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">svo::ImuHandler</a>\n, <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">svo::ViNodeState</a>\n</li>\n<li>acc_bias_random_walk_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">svo::ImuCalibration</a>\n</li>\n<li>acc_bias_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698\">svo::ImuInitialization</a>\n</li>\n<li>acc_frame_timings_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">svo::FrameHandlerBase</a>\n</li>\n<li>acc_noise_density\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">svo::ImuCalibration</a>\n</li>\n<li>acc_num_obs_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">svo::FrameHandlerBase</a>\n</li>\n<li>accumulatePointcloud()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>acquireUserInput()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">vk::UserInputThread</a>\n</li>\n<li>adaptive_threshold_c_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>adaptive_threshold_kernel_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>addImage()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">svo::FrameHandlerMono</a>\n</li>\n<li>addImages()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">svo::FrameHandlerStereo</a>\n</li>\n<li>addKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe\">svo::DepthFilter</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">svo::Map</a>\n</li>\n<li>addMeasurement()\n: <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">svo::PreintegratedImuMeasurement</a>\n</li>\n<li>addMeasurements()\n: <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">svo::PreintegratedImuMeasurement</a>\n</li>\n<li>addObservation()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f\">svo::Point</a>\n</li>\n<li>addPointToTrash()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">svo::Map</a>\n</li>\n<li>affine_est_offset\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">svo::DepthFilterOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d\">svo::ReprojectorOptions</a>\n</li>\n<li>align_1d\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71\">svo::Matcher::Options</a>\n</li>\n<li>align_max_iter\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e\">svo::Matcher::Options</a>\n</li>\n<li>alpha\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf\">svo::SparseImgAlignState</a>\n</li>\n<li>angle\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">svo::Corner</a>\n</li>\n<li>auto_trigger_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_b\"></a>- b -</h3><ul>\n<li>back()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">svo::FeatureTrack</a>\n</li>\n<li>back_project()\n: <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f\">vikit_py.pinhole_camera.PinholeCamera</a>\n</li>\n<li>backProject3()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>batch_size_\n: <a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">LKSE3</a>\n</li>\n<li>batches_\n: <a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">LKSE3</a>\n</li>\n<li>beta\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81\">svo::SparseImgAlignState</a>\n</li>\n<li>bootstrap()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>bootstrap_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>bootstrappingThread()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>border\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391\">svo::DetectorOptions</a>\n</li>\n<li>buffer_\n: <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">svo::CsvDatasetReader</a>\n</li>\n<li>bundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb\">svo::BackendInterface</a>\n</li>\n<li>bundleId()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">svo::Frame</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_c\"></a>- c -</h3><ul>\n<li>c_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">Mosaic</a>\n</li>\n<li>cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">svo::Frame</a>\n</li>\n<li>cam_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">svo::Frame</a>\n</li>\n<li>camera_info_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">Tracker</a>\n</li>\n<li>CameraGeometryBase()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>cameraInfoCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">Tracker</a>\n</li>\n<li>cameras_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">vk::cameras::NCamera</a>\n</li>\n<li>cams_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">svo::FrameHandlerBase</a>\n</li>\n<li>cell_size\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c\">svo::DetectorOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9\">svo::ReprojectorOptions</a>\n</li>\n<li>cellIndexToDepth()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>checkKeyPoints()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">svo::Frame</a>\n</li>\n<li>chi2_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>clearEventQueue()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">Tracker</a>\n</li>\n<li>clearMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>closeKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">svo::FrameHandlerBase</a>\n</li>\n<li>compute()\n: <a class=\"el\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">Mosaic</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4\">vk::solver::MADScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115\">vk::solver::NormalDistributionScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">vk::solver::ScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398\">vk::solver::UnitScaleEstimator</a>\n</li>\n<li>computeEntropy()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>confidence_mask_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>copilot_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>copilotCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>copyFeaturesFrom()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">svo::Frame</a>\n</li>\n<li>cov\n: <a class=\"el\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">Mosaic</a>\n</li>\n<li>createRandomKeypoint()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>criteria\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>cu_img_pyramid_copy_\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">svo::FrameGpu</a>\n</li>\n<li>cur_ev_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d\">DvsReconstruction</a>\n</li>\n<li>cur_frames_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">svo::SparseImgAlignBase</a>\n</li>\n<li>cur_px\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">svo::Reprojector::Candidate</a>\n</li>\n<li>current_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>cx_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">LKSE3</a>\n</li>\n<li>cy_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_d\"></a>- d -</h3><ul>\n<li>data_mutex_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">Tracker</a>\n</li>\n<li>decode()\n: <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a>\n, <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a>\n</li>\n<li>decompose()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">cv::HomographyDecomposition::HomographyDecompInria</a>\n, <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">cv::HomographyDecomposition::HomographyDecompZhang</a>\n</li>\n<li>decomposeHomography()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">cv::HomographyDecomposition::HomographyDecomp</a>\n</li>\n<li>delay_imu_cam\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">svo::ImuCalibration</a>\n</li>\n<li>deleteLandmark()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">svo::Frame</a>\n</li>\n<li>depth_\n: <a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">svo::PatchNormal</a>\n</li>\n<li>depth_at_current_frame_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">svo::AbstractInitialization</a>\n</li>\n<li>depth_median_\n: <a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">Mosaic</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">svo::FrameHandlerBase</a>\n</li>\n<li>depth_min_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">svo::FrameHandlerBase</a>\n</li>\n<li>depth_ref_\n: <a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">LKSE3</a>\n</li>\n<li>DepthFilter()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0ef9716f79156168d6b489c163ffe032\">svo::DepthFilter</a>\n</li>\n<li>DepthFromDefocusNode()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>depthmap\n: <a class=\"el\" href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">Mosaic</a>\n</li>\n<li>depths_vec_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>depthToCell()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>depthToCellIndex()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>DepthVector()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>detect()\n: <a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">svo::AllPixelsDetector</a>\n</li>\n<li>detector_type\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20\">svo::DetectorOptions</a>\n</li>\n<li>doReconstruction()\n: <a class=\"el\" href=\"classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611\">DvsReconstruction</a>\n</li>\n<li>down()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad\">vikit_py.transformations.Arcball</a>\n</li>\n<li>drag()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20\">vikit_py.transformations.Arcball</a>\n</li>\n<li>drawEvents()\n: <a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">LKSE3</a>\n</li>\n<li>drawEventsNN()\n: <a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">LKSE3</a>\n</li>\n<li>dvs_cam_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>dx_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_e\"></a>- e -</h3><ul>\n<li>emptyPointsTrash()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">svo::Map</a>\n</li>\n<li>enable_visuals_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>epi_image_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">svo::Matcher</a>\n</li>\n<li>epi_length_pyramid_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">svo::Matcher</a>\n</li>\n<li>eps\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>errorMultiplier()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>estimateTrajectory()\n: <a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">Tracker</a>\n</li>\n<li>evaluateError()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">svo::SparseImgAlign</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">svo::SparseImgAlignBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6\">svo::SparseImgAlignGpu</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>event_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">Tracker</a>\n</li>\n<li>eventCallback()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">Tracker</a>\n</li>\n<li>eventQueue_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>events_\n: <a class=\"el\" href=\"classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">Tracker</a>\n</li>\n<li>events_for_reconstruction_\n: <a class=\"el\" href=\"classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3\">DvsReconstruction</a>\n</li>\n<li>events_to_recreate_kf_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>exposureCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_enum.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Enumerations</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>Status\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">vk::cameras::ProjectionResult</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>f\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">svo::FeatureWrapper</a>\n</li>\n<li>f_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">svo::Frame</a>\n</li>\n<li>FeatureTracker()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f\">svo::FeatureTracker</a>\n</li>\n<li>FeatureWrapper()\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1\">svo::FeatureWrapper</a>\n</li>\n<li>findEpipolarMatchDirect()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e\">svo::Matcher</a>\n</li>\n<li>findLocalMatch()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55\">svo::Matcher</a>\n</li>\n<li>findMatchDirect()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd\">svo::Matcher</a>\n</li>\n<li>Frame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d\">svo::Frame</a>\n</li>\n<li>frame_counter_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">svo::FrameHandlerBase</a>\n</li>\n<li>frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">Mosaic</a>\n</li>\n<li>frame_ref_\n: <a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">svo::PatchNormal</a>\n</li>\n<li>frame_size_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>FrameGpu()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460\">svo::FrameGpu</a>\n</li>\n<li>FrameHandlerArray()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">svo::FrameHandlerArray</a>\n</li>\n<li>FrameHandlerBase()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">svo::FrameHandlerBase</a>\n</li>\n<li>FrameHandlerMono()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">svo::FrameHandlerMono</a>\n</li>\n<li>FrameHandlerStereo()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">svo::FrameHandlerStereo</a>\n</li>\n<li>frames_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>frames_ref_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">svo::AbstractInitialization</a>\n</li>\n<li>front()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">svo::FeatureTrack</a>\n</li>\n<li>fx_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">LKSE3</a>\n</li>\n<li>fy_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index__\"></a>- _ -</h3><ul>\n<li>__init__()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f\">vikit_py.transformations.Arcball</a>\n</li>\n<li>_BaselineOverDepth()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_CameraInfoCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_CheckNewMapNeeded()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_MapCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_MapVisibility()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_on_topic_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>_publishCameraMarker()\n: <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388\">evo_utils.tf_to_camera_markers.tfToCamera</a>\n</li>\n<li>_RemoteKeyCallback()\n: <a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79\">trigger_map_expansion.TriggerMapExpansion</a>\n</li>\n<li>_TFCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf\">evo_utils.snakify.snakify</a>\n, <a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828\">evo_utils.tf_to_camera_markers.tfToCamera</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_0x7e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_0x7e\"></a>- ~ -</h3><ul>\n<li>~AbstractDetector()\n: <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225\">svo::AbstractDetector</a>\n</li>\n<li>~DepthFilter()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56\">svo::DepthFilter</a>\n</li>\n<li>~DepthFromDefocusNode()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>~Frame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174\">svo::Frame</a>\n</li>\n<li>~FrameGpu()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c\">svo::FrameGpu</a>\n</li>\n<li>~Point()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97\">svo::Point</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\"></a>- a -</h3><ul>\n<li>AbstractBundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2\">svo::AbstractBundleAdjustment</a>\n</li>\n<li>AbstractDetector()\n: <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd\">svo::AbstractDetector</a>\n</li>\n<li>accumulatePointcloud()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>acquireUserInput()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">vk::UserInputThread</a>\n</li>\n<li>addImage()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d\">svo::FrameHandlerMono</a>\n</li>\n<li>addImages()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd\">svo::FrameHandlerStereo</a>\n</li>\n<li>addKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe\">svo::DepthFilter</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">svo::Map</a>\n</li>\n<li>addMeasurement()\n: <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">svo::PreintegratedImuMeasurement</a>\n</li>\n<li>addMeasurements()\n: <a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">svo::PreintegratedImuMeasurement</a>\n</li>\n<li>addObservation()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f\">svo::Point</a>\n</li>\n<li>addPointToTrash()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">svo::Map</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\"></a>- b -</h3><ul>\n<li>back()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506\">svo::FeatureTrack</a>\n</li>\n<li>back_project()\n: <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f\">vikit_py.pinhole_camera.PinholeCamera</a>\n</li>\n<li>backProject3()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>bootstrap()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>bootstrappingThread()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>bundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb\">svo::BackendInterface</a>\n</li>\n<li>bundleId()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37\">svo::Frame</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\"></a>- c -</h3><ul>\n<li>cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f\">svo::Frame</a>\n</li>\n<li>CameraGeometryBase()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>cameraInfoCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">Tracker</a>\n</li>\n<li>cellIndexToDepth()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>checkKeyPoints()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697\">svo::Frame</a>\n</li>\n<li>clearEventQueue()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">Tracker</a>\n</li>\n<li>clearMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>closeKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2\">svo::FrameHandlerBase</a>\n</li>\n<li>compute()\n: <a class=\"el\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">Mosaic</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4\">vk::solver::MADScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115\">vk::solver::NormalDistributionScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">vk::solver::ScaleEstimator</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398\">vk::solver::UnitScaleEstimator</a>\n</li>\n<li>computeEntropy()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>copilotCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>copyFeaturesFrom()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74\">svo::Frame</a>\n</li>\n<li>createRandomKeypoint()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f\">vk::cameras::CameraGeometryBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\"></a>- d -</h3><ul>\n<li>decode()\n: <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a>\n, <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a>\n</li>\n<li>decompose()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">cv::HomographyDecomposition::HomographyDecompInria</a>\n, <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">cv::HomographyDecomposition::HomographyDecompZhang</a>\n</li>\n<li>decomposeHomography()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">cv::HomographyDecomposition::HomographyDecomp</a>\n</li>\n<li>deleteLandmark()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5\">svo::Frame</a>\n</li>\n<li>DepthFilter()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a82372b70e898b3d4f57abb92567f2971\">svo::DepthFilter</a>\n</li>\n<li>DepthFromDefocusNode()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>depthToCell()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>depthToCellIndex()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>DepthVector()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>detect()\n: <a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">svo::AllPixelsDetector</a>\n</li>\n<li>doReconstruction()\n: <a class=\"el\" href=\"classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611\">DvsReconstruction</a>\n</li>\n<li>down()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad\">vikit_py.transformations.Arcball</a>\n</li>\n<li>drag()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20\">vikit_py.transformations.Arcball</a>\n</li>\n<li>drawEvents()\n: <a class=\"el\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">LKSE3</a>\n</li>\n<li>drawEventsNN()\n: <a class=\"el\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\"></a>- e -</h3><ul>\n<li>emptyPointsTrash()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">svo::Map</a>\n</li>\n<li>errorMultiplier()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>estimateTrajectory()\n: <a class=\"el\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">Tracker</a>\n</li>\n<li>evaluateError()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">svo::SparseImgAlign</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef\">svo::SparseImgAlignBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6\">svo::SparseImgAlignGpu</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>eventCallback()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">Tracker</a>\n</li>\n<li>exposureCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>FeatureTracker()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f\">svo::FeatureTracker</a>\n</li>\n<li>FeatureWrapper()\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1\">svo::FeatureWrapper</a>\n</li>\n<li>findEpipolarMatchDirect()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e\">svo::Matcher</a>\n</li>\n<li>findLocalMatch()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55\">svo::Matcher</a>\n</li>\n<li>findMatchDirect()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd\">svo::Matcher</a>\n</li>\n<li>Frame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1\">svo::Frame</a>\n</li>\n<li>FrameGpu()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460\">svo::FrameGpu</a>\n</li>\n<li>FrameHandlerArray()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77\">svo::FrameHandlerArray</a>\n</li>\n<li>FrameHandlerBase()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4\">svo::FrameHandlerBase</a>\n</li>\n<li>FrameHandlerMono()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c\">svo::FrameHandlerMono</a>\n</li>\n<li>FrameHandlerStereo()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2\">svo::FrameHandlerStereo</a>\n</li>\n<li>front()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e\">svo::FeatureTrack</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\"></a>- g -</h3><ul>\n<li>get_T_C_B()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">vk::cameras::NCamera</a>\n</li>\n<li>get_T_W_B()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">svo::FrameBundle</a>\n</li>\n<li>getAbsoluteGradient()\n: <a class=\"el\" href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">Mosaic</a>\n</li>\n<li>getAccumulated()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">vk::Timer</a>\n</li>\n<li>getCamera()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">vk::cameras::NCamera</a>\n</li>\n<li>getCameraShared()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">vk::cameras::NCamera</a>\n</li>\n<li>getCameraVector()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">vk::cameras::NCamera</a>\n</li>\n<li>getch()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">vk::UserInputThread</a>\n</li>\n<li>getch_()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">vk::UserInputThread</a>\n</li>\n<li>getche()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">vk::UserInputThread</a>\n</li>\n<li>getClosestKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">svo::Map</a>\n</li>\n<li>getClosestNKeyframesWithOberlap()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">svo::Map</a>\n</li>\n<li>getCloseViewObs()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38\">svo::Point</a>\n</li>\n<li>getconstrain()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4\">vikit_py.transformations.Arcball</a>\n</li>\n<li>getCurrentTime()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">vk::Timer</a>\n</li>\n<li>getCurrentTimeStr()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">vk::Timer</a>\n</li>\n<li>getDepthVector()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>getDetailedStatus()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">vk::cameras::ProjectionResult</a>\n</li>\n<li>getDistortionParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getError()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>getFilteredPose()\n: <a class=\"el\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">Tracker</a>\n</li>\n<li>getFurthestKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">svo::Map</a>\n</li>\n<li>getHessian()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>getInitialAttitude()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a\">svo::ImuHandler</a>\n</li>\n<li>getInput()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">vk::UserInputThread</a>\n</li>\n<li>getIntrinsicParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getKeyframeById()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">svo::Map</a>\n</li>\n<li>getLabel()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">vk::cameras::NCamera</a>\n</li>\n<li>getLastKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">svo::Map</a>\n</li>\n<li>getMask()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">svo::Frame</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getMatcher()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">svo::DepthFilter</a>\n</li>\n<li>getMeasurements()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9\">svo::ImuHandler</a>\n</li>\n<li>getMedianDisparity()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">svo::SparseImgAlignGpu</a>\n</li>\n<li>getMilliseconds()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">vk::Timer</a>\n</li>\n<li>getMinTimestampNanoseconds()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">svo::FrameBundle</a>\n</li>\n<li>getMotionPrior()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">svo::FrameHandlerBase</a>\n</li>\n<li>getNCamera()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">svo::FrameHandlerBase</a>\n</li>\n<li>getNFrameIndex()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">svo::Frame</a>\n</li>\n<li>getNumCameras()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">vk::cameras::NCamera</a>\n</li>\n<li>getNumTrackedAndDisparityPerFrame()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">svo::FeatureTracker</a>\n</li>\n<li>getOverlapKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">svo::Map</a>\n</li>\n<li>getPoseAt()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>getReconstructedImage()\n: <a class=\"el\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">Mosaic</a>\n</li>\n<li>getRelativeRotationPrior()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02\">svo::ImuHandler</a>\n</li>\n<li>getSeedDepth()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">svo::Frame</a>\n</li>\n<li>getSeedFrame()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7\">svo::Point</a>\n</li>\n<li>getSeedPosInFrame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">svo::Frame</a>\n</li>\n<li>getSortedKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">svo::Map</a>\n</li>\n<li>getTime()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">vk::Timer</a>\n</li>\n<li>getTimestampNSec()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">svo::Frame</a>\n</li>\n<li>getTimestampSec()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">svo::Frame</a>\n</li>\n<li>getTransformationVector()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">vk::cameras::NCamera</a>\n</li>\n<li>getTriangulationParallax()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6\">svo::Point</a>\n</li>\n<li>getType()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">vk::cameras::CameraGeometryBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_h\"></a>- h -</h3><ul>\n<li>hasMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>hasStarted()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">svo::FrameHandlerBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\"></a>- i -</h3><ul>\n<li>id()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">svo::Point</a>\n</li>\n<li>imageCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>imageHeight()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>imageWidth()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>img()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">svo::Frame</a>\n</li>\n<li>imuPos()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">svo::Frame</a>\n</li>\n<li>initFrame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">svo::Frame</a>\n</li>\n<li>initGpuData()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">svo::FrameGpu</a>\n</li>\n<li>initialize()\n: <a class=\"el\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">Tracker</a>\n</li>\n<li>initializeNewTracks()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">svo::FeatureTracker</a>\n</li>\n<li>initInternal()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">vk::cameras::NCamera</a>\n</li>\n<li>initNormal()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4\">svo::Point</a>\n</li>\n<li>initTermios()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">vk::UserInputThread</a>\n</li>\n<li>integrateEvents()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>integratingThread()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>isKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">svo::Frame</a>\n</li>\n<li>isKeypointVisible()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">vk::cameras::ProjectionResult</a>\n</li>\n<li>isKeypointVisibleWithMargin()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>isMasked()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>isPatchWithinImage()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e\">svo::Matcher</a>\n</li>\n<li>isRotationValid()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">cv::HomographyDecomposition::HomographyDecomp</a>\n</li>\n<li>isTrackedLandmark()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">svo::Frame</a>\n</li>\n<li>isVisible()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">svo::Frame</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_j\"></a>- j -</h3><ul>\n<li>jacobian()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">vk::cameras::RadialTangentialDistortion</a>\n</li>\n<li>jacobian_xyz2f()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">svo::Point</a>\n</li>\n<li>jacobian_xyz2f_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2image_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2img_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2uv()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">svo::Point</a>\n</li>\n<li>jacobian_xyz2uv_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">svo::Frame</a>\n</li>\n<li>Job()\n: <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">svo::DepthFilter::Job</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\"></a>- l -</h3><ul>\n<li>lastFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">svo::FrameHandlerMono</a>\n</li>\n<li>lastFrames()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">svo::FrameHandlerStereo</a>\n</li>\n<li>lastNumObservations()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">svo::FrameHandlerBase</a>\n</li>\n<li>lastProcessingTime()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">svo::FrameHandlerBase</a>\n</li>\n<li>loadFromYaml()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">vk::cameras::NCamera</a>\n</li>\n<li>loadMapFromBundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423\">svo::BackendInterface</a>\n</li>\n<li>loadMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">vk::cameras::CameraGeometryBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\"></a>- m -</h3><ul>\n<li>map()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">svo::FrameHandlerBase</a>\n</li>\n<li>mapCallback()\n: <a class=\"el\" href=\"classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">Tracker</a>\n</li>\n<li>matrix()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2\">vikit_py.transformations.Arcball</a>\n</li>\n<li>Mosaic()\n: <a class=\"el\" href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\"></a>- n -</h3><ul>\n<li>needNewKf()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">svo::FrameHandlerBase</a>\n</li>\n<li>next()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c\">vikit_py.transformations.Arcball</a>\n</li>\n<li>nRefs()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">svo::Point</a>\n</li>\n<li>numCameras()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">vk::cameras::NCamera</a>\n</li>\n<li>numFeatures()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064\">svo::FrameBundle</a>\n</li>\n<li>numLandmarks()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9\">svo::FrameBundle</a>\n</li>\n<li>numTrackedFeatures()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da\">svo::FrameBundle</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_o\"></a>- o -</h3><ul>\n<li>on_bootstrap_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_copilot_state_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_map_expansion_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_start_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_switch_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_update_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>operator bool()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02\">vk::cameras::ProjectionResult</a>\n</li>\n<li>operator==()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">vk::cameras::ProjectionResult</a>\n</li>\n<li>optimize()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7\">svo::Point</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>optimizeGaussNewton()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>optimizeLevenbergMarquardt()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\"></a>- p -</h3><ul>\n<li>pauseBootstrapper()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>PinholeCamera()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>place()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732\">vikit_py.transformations.Arcball</a>\n</li>\n<li>Point()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7\">svo::Point</a>\n</li>\n<li>pos()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">svo::Point</a>\n</li>\n<li>postBootstrapCalled()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>postCameraLoaded()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">Tracker</a>\n</li>\n<li>precomputeRectificationMap()\n: <a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">Mosaic</a>\n</li>\n<li>precomputeRectifiedPoints()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>precomputeReferenceFrame()\n: <a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">LKSE3</a>\n</li>\n<li>print()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc\">svo::Point</a>\n</li>\n<li>printParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">vk::cameras::NCamera</a>\n</li>\n<li>processEventArray()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>processEventQueue()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>processFirstFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">svo::FrameHandlerStereo</a>\n</li>\n<li>processFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">svo::FrameHandlerStereo</a>\n</li>\n<li>processFrameBundle()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">svo::FrameHandlerArray</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">svo::FrameHandlerStereo</a>\n</li>\n<li>project()\n: <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e\">vikit_py.pinhole_camera.PinholeCamera</a>\n</li>\n<li>project3()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>project3dToPixel()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>projectEventsToVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>projectMap()\n: <a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">LKSE3</a>\n</li>\n<li>projectPixelTo3dRay()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>publishDepthmap()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">Mosaic</a>\n</li>\n<li>publishEventImage()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>publishGlobalMap()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>publishImageReconstruction()\n: <a class=\"el\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">Mosaic</a>\n</li>\n<li>publishMapOverlapThread()\n: <a class=\"el\" href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">Tracker</a>\n</li>\n<li>publishOpticalFlowVectors()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>publishPcl()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>publishPose()\n: <a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">Tracker</a>\n</li>\n<li>publishTF()\n: <a class=\"el\" href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">Tracker</a>\n</li>\n<li>publishVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pushBack()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">svo::FeatureTrack</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\"></a>- q -</h3><ul>\n<li>quitThread()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79\">svo::BackendInterface</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\"></a>- r -</h3><ul>\n<li>register()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>relocalizeFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">svo::FrameHandlerMono</a>\n</li>\n<li>remoteCallback()\n: <a class=\"el\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">Tracker</a>\n</li>\n<li>remoteKeyCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>removeKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">svo::Map</a>\n</li>\n<li>removeObservation()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c\">svo::Point</a>\n</li>\n<li>reprojectDepthmap()\n: <a class=\"el\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">Mosaic</a>\n</li>\n<li>reprojectFrames()\n: <a class=\"el\" href=\"classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66\">svo::Reprojector</a>\n</li>\n<li>reset()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n, <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59\">svo::BackendInterface</a>\n, <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4\">svo::DepthFilter</a>\n, <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">svo::FeatureTracker</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">svo::Map</a>\n, <a class=\"el\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">Tracker</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">vk::Timer</a>\n</li>\n<li>resetAll()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">svo::FrameHandlerArray</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">svo::FrameHandlerStereo</a>\n</li>\n<li>resetCommon()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">svo::FrameHandlerBase</a>\n</li>\n<li>resetMapper()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>resetTermios()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">vk::UserInputThread</a>\n</li>\n<li>resetVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>resizeFeatureStorage()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">svo::Frame</a>\n</li>\n<li>resume()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">vk::Timer</a>\n</li>\n<li>run()\n: <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">svo::PoseOptimizer</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b\">svo::SparseImgAlignGpu</a>\n</li>\n<li>runPass()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\"></a>- s -</h3><ul>\n<li>safeDeletePoint()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">svo::Map</a>\n</li>\n<li>scanEpipolarLine()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5\">svo::Matcher</a>\n</li>\n<li>scanEpipolarUnitPlane()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b\">svo::Matcher</a>\n</li>\n<li>scanEpipolarUnitSphere()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0\">svo::Matcher</a>\n</li>\n<li>selectOptimalExposureCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>send_command()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>set_T_cam_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">svo::Frame</a>\n</li>\n<li>set_T_W_B()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">svo::FrameBundle</a>\n</li>\n<li>setAlphaInitialValue()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">svo::SparseImgAlignBase</a>\n</li>\n<li>setaxes()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7\">vikit_py.transformations.Arcball</a>\n</li>\n<li>setBetaInitialValue()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">svo::SparseImgAlignBase</a>\n</li>\n<li>setBundleAdjuster()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">svo::FrameHandlerBase</a>\n</li>\n<li>setCamModel()\n: <a class=\"el\" href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">Mosaic</a>\n</li>\n<li>setCompensation()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">svo::SparseImgAlignBase</a>\n</li>\n<li>setconstrain()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f\">vikit_py.transformations.Arcball</a>\n</li>\n<li>setDetectorOccupiedCells()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">svo::FrameHandlerBase</a>\n</li>\n<li>setFirstFrames()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">svo::FrameHandlerBase</a>\n</li>\n<li>setInitialCamPose()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">svo::FrameHandlerBase</a>\n</li>\n<li>setInitialImuPose()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">svo::FrameHandlerBase</a>\n</li>\n<li>setKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">svo::Frame</a>\n</li>\n<li>setKeyPoints()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">svo::Frame</a>\n</li>\n<li>setLabel()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">vk::cameras::NCamera</a>\n</li>\n<li>setMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>setMaxNumFeaturesToAlign()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">svo::SparseImgAlignBase</a>\n</li>\n<li>setNFrameIndex()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">svo::Frame</a>\n</li>\n<li>setPatchSizeSideEffects()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">svo::SparseImgAlign</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">svo::SparseImgAlignBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">svo::SparseImgAlignGpu</a>\n</li>\n<li>setPrior()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>setTrackingQuality()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">svo::FrameHandlerBase</a>\n</li>\n<li>setupVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>size()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">svo::Map</a>\n</li>\n<li>solve()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>solveDefaultImpl()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>stage()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">svo::FrameHandlerBase</a>\n</li>\n<li>start()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">vk::Timer</a>\n</li>\n<li>startCommandCallback()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>startThread()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062\">svo::BackendInterface</a>\n, <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854\">svo::DepthFilter</a>\n</li>\n<li>stop()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">vk::Timer</a>\n, <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">vk::UserInputThread</a>\n</li>\n<li>stopThread()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb\">svo::DepthFilter</a>\n</li>\n<li>synthesizeAndPublishDepth()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridContrast()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridGradMag()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridLinf()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\"></a>- t -</h3><ul>\n<li>T_cam_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">svo::Frame</a>\n</li>\n<li>T_cam_world()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">svo::Frame</a>\n</li>\n<li>T_imu_cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">svo::Frame</a>\n</li>\n<li>T_imu_world()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">svo::Frame</a>\n</li>\n<li>T_world_cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">svo::Frame</a>\n</li>\n<li>T_world_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">svo::Frame</a>\n</li>\n<li>tfCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">Tracker</a>\n</li>\n<li>Timer()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">vk::Timer</a>\n</li>\n<li>trackAndDetect()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">svo::FeatureTracker</a>\n</li>\n<li>Tracker()\n: <a class=\"el\" href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker</a>\n</li>\n<li>trackFrame()\n: <a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">LKSE3</a>\n</li>\n<li>trackFrameBundle()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">svo::FeatureTracker</a>\n</li>\n<li>trackingQuality()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">svo::FrameHandlerBase</a>\n</li>\n<li>trackingThread()\n: <a class=\"el\" href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">Tracker</a>\n</li>\n<li>transform()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">svo::Map</a>\n</li>\n<li>triangulateLinear()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc\">svo::Point</a>\n</li>\n<li>type()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">svo::Point</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\"></a>- u -</h3><ul>\n<li>unregister()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>update()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">Mosaic</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>updateHessianGradientUnitPlane()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd\">svo::Point</a>\n</li>\n<li>updateHessianGradientUnitSphere()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e\">svo::Point</a>\n</li>\n<li>updateMap()\n: <a class=\"el\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">Tracker</a>\n</li>\n<li>updateSeeds()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2\">svo::DepthFilter</a>\n</li>\n<li>updateSeedsLoop()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1\">svo::DepthFilter</a>\n</li>\n<li>updateTransformation()\n: <a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">LKSE3</a>\n</li>\n<li>updateZMSSD()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424\">svo::Matcher</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_func_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\"></a>- v -</h3><ul>\n<li>voteForCell()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voteForCellBilinear()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voxelGridAt()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_g\"></a>- g -</h3><ul>\n<li>g_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>get_T_C_B()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">vk::cameras::NCamera</a>\n</li>\n<li>get_T_W_B()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a\">svo::FrameBundle</a>\n</li>\n<li>getAbsoluteGradient()\n: <a class=\"el\" href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">Mosaic</a>\n</li>\n<li>getAccumulated()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">vk::Timer</a>\n</li>\n<li>getCamera()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">vk::cameras::NCamera</a>\n</li>\n<li>getCameraShared()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a615f3b14f9e3501071481444c4bbf325\">vk::cameras::NCamera</a>\n</li>\n<li>getCameraVector()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">vk::cameras::NCamera</a>\n</li>\n<li>getch()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">vk::UserInputThread</a>\n</li>\n<li>getch_()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">vk::UserInputThread</a>\n</li>\n<li>getche()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">vk::UserInputThread</a>\n</li>\n<li>getClosestKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">svo::Map</a>\n</li>\n<li>getClosestNKeyframesWithOberlap()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">svo::Map</a>\n</li>\n<li>getCloseViewObs()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38\">svo::Point</a>\n</li>\n<li>getconstrain()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4\">vikit_py.transformations.Arcball</a>\n</li>\n<li>getCurrentTime()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">vk::Timer</a>\n</li>\n<li>getCurrentTimeStr()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">vk::Timer</a>\n</li>\n<li>getDepthVector()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n</li>\n<li>getDetailedStatus()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">vk::cameras::ProjectionResult</a>\n</li>\n<li>getDistortionParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getError()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>getFilteredPose()\n: <a class=\"el\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">Tracker</a>\n</li>\n<li>getFurthestKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">svo::Map</a>\n</li>\n<li>getHessian()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>getInitialAttitude()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a\">svo::ImuHandler</a>\n</li>\n<li>getInput()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">vk::UserInputThread</a>\n</li>\n<li>getIntrinsicParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getKeyframeById()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">svo::Map</a>\n</li>\n<li>getLabel()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">vk::cameras::NCamera</a>\n</li>\n<li>getLastKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">svo::Map</a>\n</li>\n<li>getMask()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e\">svo::Frame</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>getMatcher()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3\">svo::DepthFilter</a>\n</li>\n<li>getMeasurements()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9\">svo::ImuHandler</a>\n</li>\n<li>getMedianDisparity()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">svo::SparseImgAlignGpu</a>\n</li>\n<li>getMilliseconds()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">vk::Timer</a>\n</li>\n<li>getMinTimestampNanoseconds()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f\">svo::FrameBundle</a>\n</li>\n<li>getMotionPrior()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066\">svo::FrameHandlerBase</a>\n</li>\n<li>getNCamera()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9\">svo::FrameHandlerBase</a>\n</li>\n<li>getNFrameIndex()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8\">svo::Frame</a>\n</li>\n<li>getNumCameras()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">vk::cameras::NCamera</a>\n</li>\n<li>getNumTrackedAndDisparityPerFrame()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9\">svo::FeatureTracker</a>\n</li>\n<li>getOverlapKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">svo::Map</a>\n</li>\n<li>getPoseAt()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>getReconstructedImage()\n: <a class=\"el\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">Mosaic</a>\n</li>\n<li>getRelativeRotationPrior()\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02\">svo::ImuHandler</a>\n</li>\n<li>getSeedDepth()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d\">svo::Frame</a>\n</li>\n<li>getSeedFrame()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7\">svo::Point</a>\n</li>\n<li>getSeedPosInFrame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577\">svo::Frame</a>\n</li>\n<li>getSortedKeyframes()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">svo::Map</a>\n</li>\n<li>getTime()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">vk::Timer</a>\n</li>\n<li>getTimestampNSec()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46\">svo::Frame</a>\n</li>\n<li>getTimestampSec()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528\">svo::Frame</a>\n</li>\n<li>getTransformationVector()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">vk::cameras::NCamera</a>\n</li>\n<li>getTriangulationParallax()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6\">svo::Point</a>\n</li>\n<li>getType()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>grad\n: <a class=\"el\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">Mosaic</a>\n, <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">svo::FeatureWrapper</a>\n</li>\n<li>grad_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">svo::Frame</a>\n</li>\n<li>gravity_magnitude\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">svo::ImuCalibration</a>\n</li>\n<li>gyro_bias_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">svo::ViNodeState</a>\n</li>\n<li>gyro_bias_random_walk_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">svo::ImuCalibration</a>\n</li>\n<li>gyro_noise_density\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">svo::ImuCalibration</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_h\"></a>- h -</h3><ul>\n<li>h_\n: <a class=\"el\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">Mosaic</a>\n</li>\n<li>H_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>h_inv_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">svo::Matcher</a>\n</li>\n<li>h_virt_\n: <a class=\"el\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">Mosaic</a>\n</li>\n<li>hasMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>hasStarted()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd\">svo::FrameHandlerBase</a>\n</li>\n<li>have_depth_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">svo::AbstractInitialization</a>\n</li>\n<li>have_rotation_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">svo::AbstractInitialization</a>\n</li>\n<li>have_translation_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">svo::AbstractInitialization</a>\n</li>\n<li>height_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_i\"></a>- i -</h3><ul>\n<li>I_prior_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>id()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">svo::Point</a>\n</li>\n<li>id_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">svo::Point</a>\n</li>\n<li>idle_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">Tracker</a>\n</li>\n<li>image\n: <a class=\"el\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">Mosaic</a>\n</li>\n<li>imageCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>imageHeight()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>imageWidth()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>img()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f\">svo::Frame</a>\n</li>\n<li>img_align_est_illumination_gain\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3\">svo::BaseOptions</a>\n</li>\n<li>img_align_max_level\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764\">svo::BaseOptions</a>\n</li>\n<li>img_align_max_num_features\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5\">svo::BaseOptions</a>\n</li>\n<li>img_align_min_level\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f\">svo::BaseOptions</a>\n</li>\n<li>img_align_prior_lambda_rot\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57\">svo::BaseOptions</a>\n</li>\n<li>img_align_prior_lambda_trans\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020\">svo::BaseOptions</a>\n</li>\n<li>img_align_robustification\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6\">svo::BaseOptions</a>\n</li>\n<li>img_align_use_distortion_jacobian\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b\">svo::BaseOptions</a>\n</li>\n<li>img_pyr_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">svo::Frame</a>\n</li>\n<li>imu_integration_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">svo::ImuCalibration</a>\n</li>\n<li>imu_rate\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">svo::ImuCalibration</a>\n</li>\n<li>imu_timestamps_ns_\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">svo::FrameBundle</a>\n</li>\n<li>imuPos()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab\">svo::Frame</a>\n</li>\n<li>in_ba_graph_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b\">svo::Point</a>\n</li>\n<li>init_cov_\n: <a class=\"el\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">Mosaic</a>\n</li>\n<li>init_disparity_pivot_ratio\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4\">svo::InitializationOptions</a>\n</li>\n<li>init_map_scale\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc\">svo::BaseOptions</a>\n</li>\n<li>init_min_disparity\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a\">svo::InitializationOptions</a>\n</li>\n<li>init_min_features\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36\">svo::InitializationOptions</a>\n</li>\n<li>init_min_features_factor\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace\">svo::InitializationOptions</a>\n</li>\n<li>init_min_inliers\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb\">svo::InitializationOptions</a>\n</li>\n<li>init_min_tracked\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2\">svo::InitializationOptions</a>\n</li>\n<li>init_type\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136\">svo::InitializationOptions</a>\n</li>\n<li>init_use_att_and_depth\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4\">svo::BaseOptions</a>\n</li>\n<li>initFrame()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd\">svo::Frame</a>\n</li>\n<li>initGpuData()\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a\">svo::FrameGpu</a>\n</li>\n<li>initialize()\n: <a class=\"el\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">Tracker</a>\n</li>\n<li>initializeNewTracks()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25\">svo::FeatureTracker</a>\n</li>\n<li>initInternal()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">vk::cameras::NCamera</a>\n</li>\n<li>initNormal()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4\">svo::Point</a>\n</li>\n<li>initTermios()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">vk::UserInputThread</a>\n</li>\n<li>integrateEvents()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>integratingThread()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>invmu_sigma2_a_b_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">svo::Frame</a>\n</li>\n<li>is_keyframe_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">svo::Frame</a>\n</li>\n<li>isam_wait_time_ms\n: <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">svo::BackendInterfaceOptions</a>\n</li>\n<li>isKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2\">svo::Frame</a>\n</li>\n<li>isKeypointVisible()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">vk::cameras::ProjectionResult</a>\n</li>\n<li>isKeypointVisibleWithMargin()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>isMasked()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>isPatchWithinImage()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e\">svo::Matcher</a>\n</li>\n<li>isRotationValid()\n: <a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">cv::HomographyDecomposition::HomographyDecomp</a>\n</li>\n<li>isTrackedLandmark()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137\">svo::Frame</a>\n</li>\n<li>isVisible()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7\">svo::Frame</a>\n</li>\n<li>iter_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_j\"></a>- j -</h3><ul>\n<li>J\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">LKSE3::Keypoint</a>\n</li>\n<li>jacobian()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">vk::cameras::RadialTangentialDistortion</a>\n</li>\n<li>jacobian_proj_cache_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">svo::SparseImgAlign</a>\n</li>\n<li>jacobian_xyz2f()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">svo::Point</a>\n</li>\n<li>jacobian_xyz2f_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2image_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2img_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf\">svo::Frame</a>\n</li>\n<li>jacobian_xyz2uv()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">svo::Point</a>\n</li>\n<li>jacobian_xyz2uv_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e\">svo::Frame</a>\n</li>\n<li>JJt\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">LKSE3::Keypoint</a>\n</li>\n<li>Job()\n: <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">svo::DepthFilter::Job</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_k\"></a>- k -</h3><ul>\n<li>K_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">Mosaic</a>\n</li>\n<li>K_virt_\n: <a class=\"el\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">Mosaic</a>\n</li>\n<li>key_pts_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">svo::Frame</a>\n</li>\n<li>keyframes_\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">svo::Map</a>\n</li>\n<li>keypoints_\n: <a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">LKSE3</a>\n</li>\n<li>kf_visibility_\n: <a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">LKSE3</a>\n</li>\n<li>kfselect_criterion\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_angle\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_dist\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_dist_metric\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe\">svo::BaseOptions</a>\n</li>\n<li>kfselect_numkfs_lower_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1\">svo::BaseOptions</a>\n</li>\n<li>kfselect_numkfs_upper_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8\">svo::BaseOptions</a>\n</li>\n<li>Kinv_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>KInv_\n: <a class=\"el\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">Mosaic</a>\n</li>\n<li>KInv_virt_\n: <a class=\"el\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">Mosaic</a>\n</li>\n<li>klt_max_iter\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_max_level\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_min_level\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_min_update_squared\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_patch_sizes\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_template_is_first_observation\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">svo::FeatureTrackerOptions</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_l\"></a>- l -</h3><ul>\n<li>label_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">vk::cameras::NCamera</a>\n</li>\n<li>landmark_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">svo::Frame</a>\n</li>\n<li>last_ba_update_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad\">svo::Point</a>\n</li>\n<li>last_frames_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">svo::FrameHandlerBase</a>\n</li>\n<li>last_kf_update_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>last_projected_kf_id_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">svo::Point</a>\n</li>\n<li>last_published_ts_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a\">svo::Point</a>\n</li>\n<li>last_structure_optim_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc\">svo::Point</a>\n</li>\n<li>lastFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712\">svo::FrameHandlerMono</a>\n</li>\n<li>lastFrames()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a\">svo::FrameHandlerStereo</a>\n</li>\n<li>lastNumObservations()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10\">svo::FrameHandlerBase</a>\n</li>\n<li>lastProcessingTime()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc\">svo::FrameHandlerBase</a>\n</li>\n<li>level\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">svo::Corner</a>\n, <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">svo::FeatureWrapper</a>\n</li>\n<li>level_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">svo::SparseImgAlignBase</a>\n</li>\n<li>level_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">svo::Frame</a>\n</li>\n<li>loadFromYaml()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">vk::cameras::NCamera</a>\n</li>\n<li>loadMapFromBundleAdjustment()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423\">svo::BackendInterface</a>\n</li>\n<li>loadMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>local_frame_size_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_m\"></a>- m -</h3><ul>\n<li>map()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1\">svo::FrameHandlerBase</a>\n</li>\n<li>map_\n: <a class=\"el\" href=\"classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">Mosaic</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">svo::FrameHandlerBase</a>\n</li>\n<li>map_blur_\n: <a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">Mosaic</a>\n</li>\n<li>map_local_\n: <a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">LKSE3</a>\n</li>\n<li>map_sub_\n: <a class=\"el\" href=\"classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">Tracker</a>\n</li>\n<li>mapCallback()\n: <a class=\"el\" href=\"classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">Tracker</a>\n</li>\n<li>matrix()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2\">vikit_py.transformations.Arcball</a>\n</li>\n<li>max_depth_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>max_epi_length_optim\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81\">svo::Matcher::Options</a>\n</li>\n<li>max_epi_search_steps\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b\">svo::Matcher::Options</a>\n</li>\n<li>max_imu_delta_t\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">svo::ImuCalibration</a>\n</li>\n<li>max_iter\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>max_iterations_\n: <a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">LKSE3</a>\n</li>\n<li>max_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d\">svo::DetectorOptions</a>\n</li>\n<li>max_n_features_per_frame\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8\">svo::ReprojectorOptions</a>\n</li>\n<li>max_n_kfs\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">svo::BaseOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3\">svo::ReprojectorOptions</a>\n</li>\n<li>max_n_seeds_per_frame\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">svo::DepthFilterOptions</a>\n</li>\n<li>max_num_features_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">svo::SparseImgAlignBase</a>\n</li>\n<li>max_search_level\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">svo::DepthFilterOptions</a>\n</li>\n<li>max_trials\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>measurements_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">svo::ImuHandler</a>\n</li>\n<li>median_filter_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_depth_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386\">svo::DetectorOptions</a>\n</li>\n<li>min_num_neighbors_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_tracks_to_detect_new_features\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">svo::FeatureTrackerOptions</a>\n</li>\n<li>Mosaic()\n: <a class=\"el\" href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic</a>\n</li>\n<li>mu_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>mu_init\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>mut_\n: <a class=\"el\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">svo::GraphManager</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_n\"></a>- n -</h3><ul>\n<li>n\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>n_failed_reproj_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6\">svo::Point</a>\n</li>\n<li>n_meas_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>n_reproj\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc\">svo::Reprojector::Candidate</a>\n</li>\n<li>n_succeeded_reproj_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e\">svo::Point</a>\n</li>\n<li>n_visible_\n: <a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">LKSE3</a>\n</li>\n<li>need_new_kf_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">svo::FrameHandlerBase</a>\n</li>\n<li>needNewKf()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497\">svo::FrameHandlerBase</a>\n</li>\n<li>new_frames_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">svo::FrameHandlerBase</a>\n</li>\n<li>new_img_\n: <a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">LKSE3</a>\n</li>\n<li>newest_processed_event_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>newest_tracked_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>next()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c\">vikit_py.transformations.Arcball</a>\n</li>\n<li>nframe_index_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">svo::Frame</a>\n</li>\n<li>nh_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>normal_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">svo::Point</a>\n</li>\n<li>normal_information_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">svo::Point</a>\n</li>\n<li>normal_set_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0\">svo::Point</a>\n</li>\n<li>nRefs()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">svo::Point</a>\n</li>\n<li>nu_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>nu_init\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>num_depth_cells_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>num_features_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">svo::Frame</a>\n</li>\n<li>num_obs_last_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">svo::FrameHandlerBase</a>\n</li>\n<li>num_pyramid_levels\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>numCameras()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">vk::cameras::NCamera</a>\n</li>\n<li>numFeatures()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064\">svo::FrameBundle</a>\n</li>\n<li>numLandmarks()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9\">svo::FrameBundle</a>\n</li>\n<li>numTrackedFeatures()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da\">svo::FrameBundle</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_o\"></a>- o -</h3><ul>\n<li>obs_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">svo::Point</a>\n</li>\n<li>ofs_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">svo::ImuHandler</a>\n</li>\n<li>ofs_reproj_errors_\n: <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">svo::PoseOptimizer</a>\n</li>\n<li>omega_bias\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f\">svo::ImuInitialization</a>\n</li>\n<li>omega_bias_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">svo::ImuHandler</a>\n</li>\n<li>omega_bias_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61\">svo::ImuInitialization</a>\n</li>\n<li>omega_coriolis\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">svo::ImuCalibration</a>\n</li>\n<li>on_bootstrap_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_copilot_state_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_map_expansion_changed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_start_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_switch_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>on_update_button_pressed()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>operator bool()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02\">vk::cameras::ProjectionResult</a>\n</li>\n<li>operator&lt;&lt;\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">vk::cameras::ProjectionResult</a>\n</li>\n<li>operator==()\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">vk::cameras::ProjectionResult</a>\n</li>\n<li>optimize()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7\">svo::Point</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>optimizeGaussNewton()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>optimizeLevenbergMarquardt()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>options_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">svo::AbstractInitialization</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">svo::FrameHandlerBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_p\"></a>- p -</h3><ul>\n<li>P\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">LKSE3::Keypoint</a>\n</li>\n<li>pauseBootstrapper()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>pc_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pc_global_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pcl_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>PinholeCamera()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>pixel_value\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">LKSE3::Keypoint</a>\n</li>\n<li>place()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732\">vikit_py.transformations.Arcball</a>\n</li>\n<li>Point()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7\">svo::Point</a>\n</li>\n<li>pos()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">svo::Point</a>\n</li>\n<li>pos_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">svo::Point</a>\n</li>\n<li>poseoptim_prior_lambda\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70\">svo::BaseOptions</a>\n</li>\n<li>poseoptim_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed\">svo::BaseOptions</a>\n</li>\n<li>poseoptim_using_unit_sphere\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310\">svo::BaseOptions</a>\n</li>\n<li>poses_pub_\n: <a class=\"el\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">Tracker</a>\n</li>\n<li>postBootstrapCalled()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>postCameraLoaded()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">Tracker</a>\n</li>\n<li>precomputed_rectified_points_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>precomputeRectificationMap()\n: <a class=\"el\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">Mosaic</a>\n</li>\n<li>precomputeRectifiedPoints()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>precomputeReferenceFrame()\n: <a class=\"el\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">LKSE3</a>\n</li>\n<li>print()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc\">svo::Point</a>\n</li>\n<li>printParameters()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">vk::cameras::NCamera</a>\n</li>\n<li>processEventArray()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>processEventQueue()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>processFirstFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273\">svo::FrameHandlerStereo</a>\n</li>\n<li>processFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1\">svo::FrameHandlerStereo</a>\n</li>\n<li>processFrameBundle()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c\">svo::FrameHandlerArray</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa\">svo::FrameHandlerStereo</a>\n</li>\n<li>project()\n: <a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e\">vikit_py.pinhole_camera.PinholeCamera</a>\n</li>\n<li>project3()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34\">vk::cameras::CameraGeometry&lt; Projection &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>project3dToPixel()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>projectEventsToVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>projectMap()\n: <a class=\"el\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">LKSE3</a>\n</li>\n<li>projectPixelTo3dRay()\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>pub_depth_\n: <a class=\"el\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">Mosaic</a>\n</li>\n<li>pub_depth_map_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pub_img_\n: <a class=\"el\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">Mosaic</a>\n</li>\n<li>pub_pc_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>pub_pc_global_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pub_tf_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>pub_voxel_grid_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>publishDepthmap()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">Mosaic</a>\n</li>\n<li>publishEventImage()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>publishGlobalMap()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>publishImageReconstruction()\n: <a class=\"el\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">Mosaic</a>\n</li>\n<li>publishMapOverlapThread()\n: <a class=\"el\" href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">Tracker</a>\n</li>\n<li>publishOpticalFlowVectors()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>publishPcl()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>publishPose()\n: <a class=\"el\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">Tracker</a>\n</li>\n<li>publishTF()\n: <a class=\"el\" href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">Tracker</a>\n</li>\n<li>publishVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pushBack()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe\">svo::FeatureTrack</a>\n</li>\n<li>px\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">svo::FeatureWrapper</a>\n</li>\n<li>px_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">svo::Frame</a>\n</li>\n<li>pyr_new_\n: <a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">LKSE3</a>\n</li>\n<li>pyramid_levels_\n: <a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_q\"></a>- q -</h3><ul>\n<li>quality_max_fts_drop\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6\">svo::BaseOptions</a>\n</li>\n<li>quality_min_fts\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0\">svo::BaseOptions</a>\n</li>\n<li>quitThread()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79\">svo::BackendInterface</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_r\"></a>- r -</h3><ul>\n<li>R\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>R_cur_world_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">svo::AbstractInitialization</a>\n</li>\n<li>R_imu_world_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">svo::Frame</a>\n</li>\n<li>radius_search_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>rect_\n: <a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">LKSE3</a>\n</li>\n<li>rectification_map_\n: <a class=\"el\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">Mosaic</a>\n</li>\n<li>ref_frame\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">svo::Reprojector::Candidate</a>\n</li>\n<li>ref_frames_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">svo::SparseImgAlignBase</a>\n</li>\n<li>ref_img_\n: <a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">LKSE3</a>\n</li>\n<li>ref_index\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">svo::Reprojector::Candidate</a>\n</li>\n<li>ref_voxel_grid_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>register()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>regular_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>relocalization_max_trials\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe\">svo::BaseOptions</a>\n</li>\n<li>relocalization_n_trials_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">svo::FrameHandlerBase</a>\n</li>\n<li>relocalizeFrame()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777\">svo::FrameHandlerMono</a>\n</li>\n<li>remote_key_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>remote_key_pub_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>remote_sub_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#ade9360c0b7392539943229150027677a\">Tracker</a>\n</li>\n<li>remoteCallback()\n: <a class=\"el\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">Tracker</a>\n</li>\n<li>remoteKeyCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>remove_unconstrained_points\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8\">svo::ReprojectorOptions</a>\n</li>\n<li>removeKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">svo::Map</a>\n</li>\n<li>removeObservation()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c\">svo::Point</a>\n</li>\n<li>reproj_error_thresh\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56\">svo::InitializationOptions</a>\n</li>\n<li>reproject_unconverged_seeds\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3\">svo::ReprojectorOptions</a>\n</li>\n<li>reprojectDepthmap()\n: <a class=\"el\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">Mosaic</a>\n</li>\n<li>reprojectFrames()\n: <a class=\"el\" href=\"classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66\">svo::Reprojector</a>\n</li>\n<li>reset()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n, <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59\">svo::BackendInterface</a>\n, <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4\">svo::DepthFilter</a>\n, <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40\">svo::FeatureTracker</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">svo::Map</a>\n, <a class=\"el\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">Tracker</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n, <a class=\"el\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">vk::Timer</a>\n</li>\n<li>reset_before_detection\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">svo::FeatureTrackerOptions</a>\n</li>\n<li>resetAll()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919\">svo::FrameHandlerArray</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9\">svo::FrameHandlerMono</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe\">svo::FrameHandlerStereo</a>\n</li>\n<li>resetCommon()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10\">svo::FrameHandlerBase</a>\n</li>\n<li>resetMapper()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>resetTermios()\n: <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">vk::UserInputThread</a>\n</li>\n<li>resetVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>resizeFeatureStorage()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32\">svo::Frame</a>\n</li>\n<li>resume()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">vk::Timer</a>\n</li>\n<li>rho_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>run()\n: <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">svo::PoseOptimizer</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b\">svo::SparseImgAlignGpu</a>\n</li>\n<li>runPass()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_rela.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Related Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>operator&lt;&lt;\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">vk::cameras::ProjectionResult</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_s\"></a>- s -</h3><ul>\n<li>safeDeletePoint()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">svo::Map</a>\n</li>\n<li>sampling_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e\">svo::DetectorOptions</a>\n</li>\n<li>saturation_accel_max\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">svo::ImuCalibration</a>\n</li>\n<li>saturation_omega_max\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">svo::ImuCalibration</a>\n</li>\n<li>scan_epi_unit_sphere\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">svo::DepthFilterOptions</a>\n</li>\n<li>scanEpipolarLine()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5\">svo::Matcher</a>\n</li>\n<li>scanEpipolarUnitPlane()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b\">svo::Matcher</a>\n</li>\n<li>scanEpipolarUnitSphere()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0\">svo::Matcher</a>\n</li>\n<li>score\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">svo::Corner</a>\n, <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">svo::Reprojector::Candidate</a>\n</li>\n<li>score_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">svo::Frame</a>\n</li>\n<li>seed_convergence_sigma2_thresh\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">svo::DepthFilterOptions</a>\n</li>\n<li>seed_ref_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">svo::Frame</a>\n</li>\n<li>selectOptimalExposureCallback()\n: <a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2\">evo_utils.select_exposure_DAVIS.ExposureSelector</a>\n</li>\n<li>send_command()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>sensor_size\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>set_reset_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">svo::FrameHandlerBase</a>\n</li>\n<li>set_start_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">svo::FrameHandlerBase</a>\n</li>\n<li>set_T_cam_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940\">svo::Frame</a>\n</li>\n<li>set_T_W_B()\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677\">svo::FrameBundle</a>\n</li>\n<li>setAlphaInitialValue()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">svo::SparseImgAlignBase</a>\n</li>\n<li>setaxes()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7\">vikit_py.transformations.Arcball</a>\n</li>\n<li>setBetaInitialValue()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">svo::SparseImgAlignBase</a>\n</li>\n<li>setBundleAdjuster()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff\">svo::FrameHandlerBase</a>\n</li>\n<li>setCamModel()\n: <a class=\"el\" href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">Mosaic</a>\n</li>\n<li>setCompensation()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">svo::SparseImgAlignBase</a>\n</li>\n<li>setconstrain()\n: <a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f\">vikit_py.transformations.Arcball</a>\n</li>\n<li>setDetectorOccupiedCells()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850\">svo::FrameHandlerBase</a>\n</li>\n<li>setFirstFrames()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d\">svo::FrameHandlerBase</a>\n</li>\n<li>setInitialCamPose()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4\">svo::FrameHandlerBase</a>\n</li>\n<li>setInitialImuPose()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c\">svo::FrameHandlerBase</a>\n</li>\n<li>setKeyframe()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000\">svo::Frame</a>\n</li>\n<li>setKeyPoints()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8\">svo::Frame</a>\n</li>\n<li>setLabel()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd\">vk::cameras::CameraGeometryBase</a>\n, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">vk::cameras::NCamera</a>\n</li>\n<li>setMask()\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57\">vk::cameras::CameraGeometryBase</a>\n</li>\n<li>setMaxNumFeaturesToAlign()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">svo::SparseImgAlignBase</a>\n</li>\n<li>setNFrameIndex()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e\">svo::Frame</a>\n</li>\n<li>setPatchSizeSideEffects()\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">svo::SparseImgAlign</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d\">svo::SparseImgAlignBase</a>\n, <a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">svo::SparseImgAlignGpu</a>\n</li>\n<li>setPrior()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>setTrackingQuality()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c\">svo::FrameHandlerBase</a>\n</li>\n<li>setupVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>size()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a>\n, <a class=\"el\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">svo::Map</a>\n</li>\n<li>solve()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>solveDefaultImpl()\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>stage()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890\">svo::FrameHandlerBase</a>\n</li>\n<li>stage_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">svo::FrameHandlerBase</a>\n</li>\n<li>start()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a\">svo::FrameHandlerBase</a>\n, <a class=\"el\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">vk::Timer</a>\n</li>\n<li>startCommandCallback()\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>startThread()\n: <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b\">svo::AbstractBundleAdjustment</a>\n, <a class=\"el\" href=\"classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062\">svo::BackendInterface</a>\n, <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854\">svo::DepthFilter</a>\n</li>\n<li>state_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>Status\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">vk::cameras::ProjectionResult</a>\n</li>\n<li>status_\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">vk::cameras::ProjectionResult</a>\n</li>\n<li>stop()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">vk::Timer</a>\n, <a class=\"el\" href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">vk::UserInputThread</a>\n</li>\n<li>stop_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>stop_when_error_increases\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>stopThread()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb\">svo::DepthFilter</a>\n</li>\n<li>strategy\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>structure_optimization_max_pts\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225\">svo::BaseOptions</a>\n</li>\n<li>subpix_refinement\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb\">svo::Matcher::Options</a>\n</li>\n<li>synthesizeAndPublishDepth()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGrid()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridContrast()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridGradMag()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>synthesizePointCloudFromVoxelGridLinf()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_t\"></a>- t -</h3><ul>\n<li>t\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>T_body_cam_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">svo::Frame</a>\n</li>\n<li>T_C_B_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">vk::cameras::NCamera</a>\n</li>\n<li>T_cam_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15\">svo::Frame</a>\n</li>\n<li>T_cam_world()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f\">svo::Frame</a>\n</li>\n<li>T_cur_from_ref_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">svo::AbstractInitialization</a>\n</li>\n<li>T_cur_ref_\n: <a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">LKSE3</a>\n</li>\n<li>T_f_w_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">svo::Frame</a>\n</li>\n<li>T_icur_iref\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">svo::SparseImgAlignState</a>\n</li>\n<li>T_imu_cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f\">svo::Frame</a>\n</li>\n<li>T_imu_world()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a\">svo::Frame</a>\n</li>\n<li>T_iref_world_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">svo::SparseImgAlignBase</a>\n</li>\n<li>T_kf_ref_\n: <a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">LKSE3</a>\n</li>\n<li>t_lastimu_newimu_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">svo::FrameHandlerBase</a>\n</li>\n<li>T_ref_cam_\n: <a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">LKSE3</a>\n</li>\n<li>t_ref_cur_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">svo::AbstractInitialization</a>\n</li>\n<li>T_ref_w_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>T_W_B_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">svo::ViNodeState</a>\n</li>\n<li>T_world_cam()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e\">svo::Frame</a>\n</li>\n<li>T_world_imu()\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5\">svo::Frame</a>\n</li>\n<li>T_world_imuinit\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">svo::FrameHandlerBase</a>\n</li>\n<li>T_world_kf_\n: <a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">LKSE3</a>\n</li>\n<li>tf_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a\">DvsReconstruction</a>\n</li>\n<li>tf_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">Tracker</a>\n</li>\n<li>tfCallback()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">Tracker</a>\n</li>\n<li>threshold_primary\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b\">svo::DetectorOptions</a>\n</li>\n<li>threshold_secondary\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89\">svo::DetectorOptions</a>\n</li>\n<li>Timer()\n: <a class=\"el\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">vk::Timer</a>\n</li>\n<li>timer_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">svo::FrameHandlerBase</a>\n</li>\n<li>timestamp_\n: <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">svo::ImuMeasurement</a>\n</li>\n<li>trace_dir\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857\">svo::BaseOptions</a>\n</li>\n<li>track_id_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">svo::Frame</a>\n</li>\n<li>trackAndDetect()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0\">svo::FeatureTracker</a>\n</li>\n<li>Tracker()\n: <a class=\"el\" href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker</a>\n</li>\n<li>tracker_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">svo::AbstractInitialization</a>\n</li>\n<li>trackFrame()\n: <a class=\"el\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">LKSE3</a>\n</li>\n<li>trackFrameBundle()\n: <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde\">svo::FeatureTracker</a>\n</li>\n<li>tracking_quality_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">svo::FrameHandlerBase</a>\n</li>\n<li>trackingQuality()\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035\">svo::FrameHandlerBase</a>\n</li>\n<li>trackingThread()\n: <a class=\"el\" href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">Tracker</a>\n</li>\n<li>transform()\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">svo::Map</a>\n</li>\n<li>trials_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>triangulateLinear()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc\">svo::Point</a>\n</li>\n<li>ts_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>ts_ref_\n: <a class=\"el\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">Mosaic</a>\n</li>\n<li>type\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">svo::FeatureWrapper</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">svo::Point</a>\n, <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">svo::Reprojector::Candidate</a>\n</li>\n<li>type_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a\">svo::Point</a>\n</li>\n<li>type_focus_measure_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>type_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">svo::Frame</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_u\"></a>- u -</h3><ul>\n<li>undistort_mapx_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>undistort_mapy_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>unregister()\n: <a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c\">rqt_evo.evo_widget.EvoWidget</a>\n</li>\n<li>update()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">Mosaic</a>\n, <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>update_3d_point\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">svo::DepthFilterOptions</a>\n</li>\n<li>update_seeds_with_old_keyframes\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9\">svo::BaseOptions</a>\n</li>\n<li>updateHessianGradientUnitPlane()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd\">svo::Point</a>\n</li>\n<li>updateHessianGradientUnitSphere()\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e\">svo::Point</a>\n</li>\n<li>updateMap()\n: <a class=\"el\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">Tracker</a>\n</li>\n<li>updateSeeds()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2\">svo::DepthFilter</a>\n</li>\n<li>updateSeedsLoop()\n: <a class=\"el\" href=\"classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1\">svo::DepthFilter</a>\n</li>\n<li>updateTransformation()\n: <a class=\"el\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">LKSE3</a>\n</li>\n<li>updateZMSSD()\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424\">svo::Matcher</a>\n</li>\n<li>use_async_reprojectors\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5\">svo::BaseOptions</a>\n</li>\n<li>use_imu\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c\">svo::BaseOptions</a>\n</li>\n<li>use_inverse_depth\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">svo::DepthFilterOptions</a>\n</li>\n<li>use_threaded_depthfilter\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">svo::DepthFilterOptions</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_v\"></a>- v -</h3><ul>\n<li>velocity\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e\">svo::ImuInitialization</a>\n</li>\n<li>velocity_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e\">svo::ImuInitialization</a>\n</li>\n<li>verbose\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">svo::DepthFilterOptions</a>\n, <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>virtual_cam_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>virtual_height_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>virtual_width_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voteForCell()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voteForCellBilinear()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voxel_filter_leaf_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voxelGridAt()\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\"></a>- a -</h3><ul>\n<li>A_cur_ref_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">svo::Matcher</a>\n</li>\n<li>acc_bias\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a\">svo::ImuInitialization</a>\n</li>\n<li>acc_bias_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">svo::ImuHandler</a>\n, <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64\">svo::ViNodeState</a>\n</li>\n<li>acc_bias_random_walk_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">svo::ImuCalibration</a>\n</li>\n<li>acc_bias_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698\">svo::ImuInitialization</a>\n</li>\n<li>acc_frame_timings_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e\">svo::FrameHandlerBase</a>\n</li>\n<li>acc_noise_density\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">svo::ImuCalibration</a>\n</li>\n<li>acc_num_obs_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1\">svo::FrameHandlerBase</a>\n</li>\n<li>adaptive_threshold_c_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>adaptive_threshold_kernel_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>affine_est_offset\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">svo::DepthFilterOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d\">svo::ReprojectorOptions</a>\n</li>\n<li>align_1d\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71\">svo::Matcher::Options</a>\n</li>\n<li>align_max_iter\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e\">svo::Matcher::Options</a>\n</li>\n<li>alpha\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf\">svo::SparseImgAlignState</a>\n</li>\n<li>angle\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">svo::Corner</a>\n</li>\n<li>auto_trigger_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\"></a>- b -</h3><ul>\n<li>batch_size_\n: <a class=\"el\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">LKSE3</a>\n</li>\n<li>batches_\n: <a class=\"el\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">LKSE3</a>\n</li>\n<li>beta\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81\">svo::SparseImgAlignState</a>\n</li>\n<li>bootstrap_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>border\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391\">svo::DetectorOptions</a>\n</li>\n<li>buffer_\n: <a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f\">svo::CsvDatasetReader</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\"></a>- c -</h3><ul>\n<li>c_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">Mosaic</a>\n</li>\n<li>cam_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df\">svo::Frame</a>\n</li>\n<li>camera_info_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">Tracker</a>\n</li>\n<li>cameras_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">vk::cameras::NCamera</a>\n</li>\n<li>cams_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d\">svo::FrameHandlerBase</a>\n</li>\n<li>cell_size\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c\">svo::DetectorOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9\">svo::ReprojectorOptions</a>\n</li>\n<li>chi2_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>confidence_mask_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>copilot_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>cov\n: <a class=\"el\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">Mosaic</a>\n</li>\n<li>criteria\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>cu_img_pyramid_copy_\n: <a class=\"el\" href=\"classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f\">svo::FrameGpu</a>\n</li>\n<li>cur_ev_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d\">DvsReconstruction</a>\n</li>\n<li>cur_frames_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">svo::SparseImgAlignBase</a>\n</li>\n<li>cur_px\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">svo::Reprojector::Candidate</a>\n</li>\n<li>current_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>cx_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">LKSE3</a>\n</li>\n<li>cy_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\"></a>- d -</h3><ul>\n<li>data_mutex_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">Tracker</a>\n</li>\n<li>delay_imu_cam\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">svo::ImuCalibration</a>\n</li>\n<li>depth_\n: <a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">svo::PatchNormal</a>\n</li>\n<li>depth_at_current_frame_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">svo::AbstractInitialization</a>\n</li>\n<li>depth_median_\n: <a class=\"el\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">Mosaic</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20\">svo::FrameHandlerBase</a>\n</li>\n<li>depth_min_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab\">svo::FrameHandlerBase</a>\n</li>\n<li>depth_ref_\n: <a class=\"el\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">LKSE3</a>\n</li>\n<li>depthmap\n: <a class=\"el\" href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">Mosaic</a>\n</li>\n<li>depths_vec_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>detector_type\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20\">svo::DetectorOptions</a>\n</li>\n<li>dvs_cam_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>dx_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\"></a>- e -</h3><ul>\n<li>enable_visuals_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>epi_image_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">svo::Matcher</a>\n</li>\n<li>epi_length_pyramid_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">svo::Matcher</a>\n</li>\n<li>eps\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>event_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">Tracker</a>\n</li>\n<li>eventQueue_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>events_\n: <a class=\"el\" href=\"classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">Tracker</a>\n</li>\n<li>events_for_reconstruction_\n: <a class=\"el\" href=\"classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3\">DvsReconstruction</a>\n</li>\n<li>events_to_recreate_kf_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\"></a>- f -</h3><ul>\n<li>f\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">svo::FeatureWrapper</a>\n</li>\n<li>f_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf\">svo::Frame</a>\n</li>\n<li>frame_counter_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208\">svo::FrameHandlerBase</a>\n</li>\n<li>frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">Mosaic</a>\n</li>\n<li>frame_ref_\n: <a class=\"el\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">svo::PatchNormal</a>\n</li>\n<li>frame_size_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>frames_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>frames_ref_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">svo::AbstractInitialization</a>\n</li>\n<li>fx_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">LKSE3</a>\n</li>\n<li>fy_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\"></a>- g -</h3><ul>\n<li>g_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>grad\n: <a class=\"el\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">Mosaic</a>\n, <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">svo::FeatureWrapper</a>\n</li>\n<li>grad_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6\">svo::Frame</a>\n</li>\n<li>gravity_magnitude\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">svo::ImuCalibration</a>\n</li>\n<li>gyro_bias_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de\">svo::ViNodeState</a>\n</li>\n<li>gyro_bias_random_walk_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">svo::ImuCalibration</a>\n</li>\n<li>gyro_noise_density\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">svo::ImuCalibration</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_h\"></a>- h -</h3><ul>\n<li>h_\n: <a class=\"el\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">Mosaic</a>\n</li>\n<li>H_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>h_inv_\n: <a class=\"el\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">svo::Matcher</a>\n</li>\n<li>h_virt_\n: <a class=\"el\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">Mosaic</a>\n</li>\n<li>have_depth_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">svo::AbstractInitialization</a>\n</li>\n<li>have_rotation_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">svo::AbstractInitialization</a>\n</li>\n<li>have_translation_prior_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">svo::AbstractInitialization</a>\n</li>\n<li>height_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\"></a>- i -</h3><ul>\n<li>I_prior_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>id_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">svo::Point</a>\n</li>\n<li>idle_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">Tracker</a>\n</li>\n<li>image\n: <a class=\"el\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">Mosaic</a>\n</li>\n<li>img_align_est_illumination_gain\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3\">svo::BaseOptions</a>\n</li>\n<li>img_align_max_level\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764\">svo::BaseOptions</a>\n</li>\n<li>img_align_max_num_features\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5\">svo::BaseOptions</a>\n</li>\n<li>img_align_min_level\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f\">svo::BaseOptions</a>\n</li>\n<li>img_align_prior_lambda_rot\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57\">svo::BaseOptions</a>\n</li>\n<li>img_align_prior_lambda_trans\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020\">svo::BaseOptions</a>\n</li>\n<li>img_align_robustification\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6\">svo::BaseOptions</a>\n</li>\n<li>img_align_use_distortion_jacobian\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b\">svo::BaseOptions</a>\n</li>\n<li>img_pyr_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987\">svo::Frame</a>\n</li>\n<li>imu_integration_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">svo::ImuCalibration</a>\n</li>\n<li>imu_rate\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">svo::ImuCalibration</a>\n</li>\n<li>imu_timestamps_ns_\n: <a class=\"el\" href=\"classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721\">svo::FrameBundle</a>\n</li>\n<li>in_ba_graph_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b\">svo::Point</a>\n</li>\n<li>init_cov_\n: <a class=\"el\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">Mosaic</a>\n</li>\n<li>init_disparity_pivot_ratio\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4\">svo::InitializationOptions</a>\n</li>\n<li>init_map_scale\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc\">svo::BaseOptions</a>\n</li>\n<li>init_min_disparity\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a\">svo::InitializationOptions</a>\n</li>\n<li>init_min_features\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36\">svo::InitializationOptions</a>\n</li>\n<li>init_min_features_factor\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace\">svo::InitializationOptions</a>\n</li>\n<li>init_min_inliers\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb\">svo::InitializationOptions</a>\n</li>\n<li>init_min_tracked\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2\">svo::InitializationOptions</a>\n</li>\n<li>init_type\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136\">svo::InitializationOptions</a>\n</li>\n<li>init_use_att_and_depth\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4\">svo::BaseOptions</a>\n</li>\n<li>invmu_sigma2_a_b_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301\">svo::Frame</a>\n</li>\n<li>is_keyframe_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0\">svo::Frame</a>\n</li>\n<li>isam_wait_time_ms\n: <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">svo::BackendInterfaceOptions</a>\n</li>\n<li>iter_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_j\"></a>- j -</h3><ul>\n<li>J\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">LKSE3::Keypoint</a>\n</li>\n<li>jacobian_proj_cache_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">svo::SparseImgAlign</a>\n</li>\n<li>JJt\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">LKSE3::Keypoint</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_k\"></a>- k -</h3><ul>\n<li>K_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">Mosaic</a>\n</li>\n<li>K_virt_\n: <a class=\"el\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">Mosaic</a>\n</li>\n<li>key_pts_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0\">svo::Frame</a>\n</li>\n<li>keyframes_\n: <a class=\"el\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">svo::Map</a>\n</li>\n<li>keypoints_\n: <a class=\"el\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">LKSE3</a>\n</li>\n<li>kf_visibility_\n: <a class=\"el\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">LKSE3</a>\n</li>\n<li>kfselect_criterion\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_angle\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_dist\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde\">svo::BaseOptions</a>\n</li>\n<li>kfselect_min_dist_metric\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe\">svo::BaseOptions</a>\n</li>\n<li>kfselect_numkfs_lower_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1\">svo::BaseOptions</a>\n</li>\n<li>kfselect_numkfs_upper_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8\">svo::BaseOptions</a>\n</li>\n<li>Kinv_\n: <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566\">evo_utils::camera::PinholeCamera</a>\n</li>\n<li>KInv_\n: <a class=\"el\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">Mosaic</a>\n</li>\n<li>KInv_virt_\n: <a class=\"el\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">Mosaic</a>\n</li>\n<li>klt_max_iter\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_max_level\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_min_level\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_min_update_squared\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_patch_sizes\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">svo::FeatureTrackerOptions</a>\n</li>\n<li>klt_template_is_first_observation\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">svo::FeatureTrackerOptions</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\"></a>- l -</h3><ul>\n<li>label_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">vk::cameras::NCamera</a>\n</li>\n<li>landmark_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437\">svo::Frame</a>\n</li>\n<li>last_ba_update_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad\">svo::Point</a>\n</li>\n<li>last_frames_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4\">svo::FrameHandlerBase</a>\n</li>\n<li>last_kf_update_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>last_projected_kf_id_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">svo::Point</a>\n</li>\n<li>last_published_ts_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9\">svo::Frame</a>\n, <a class=\"el\" href=\"classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a\">svo::Point</a>\n</li>\n<li>last_structure_optim_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc\">svo::Point</a>\n</li>\n<li>level\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">svo::Corner</a>\n, <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">svo::FeatureWrapper</a>\n</li>\n<li>level_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">svo::SparseImgAlignBase</a>\n</li>\n<li>level_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d\">svo::Frame</a>\n</li>\n<li>local_frame_size_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\"></a>- m -</h3><ul>\n<li>map_\n: <a class=\"el\" href=\"classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">Mosaic</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91\">svo::FrameHandlerBase</a>\n</li>\n<li>map_blur_\n: <a class=\"el\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">LKSE3</a>\n, <a class=\"el\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">Mosaic</a>\n</li>\n<li>map_local_\n: <a class=\"el\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">LKSE3</a>\n</li>\n<li>map_sub_\n: <a class=\"el\" href=\"classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">Tracker</a>\n</li>\n<li>max_depth_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>max_epi_length_optim\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81\">svo::Matcher::Options</a>\n</li>\n<li>max_epi_search_steps\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b\">svo::Matcher::Options</a>\n</li>\n<li>max_imu_delta_t\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">svo::ImuCalibration</a>\n</li>\n<li>max_iter\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>max_iterations_\n: <a class=\"el\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">LKSE3</a>\n</li>\n<li>max_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d\">svo::DetectorOptions</a>\n</li>\n<li>max_n_features_per_frame\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8\">svo::ReprojectorOptions</a>\n</li>\n<li>max_n_kfs\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">svo::BaseOptions</a>\n, <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3\">svo::ReprojectorOptions</a>\n</li>\n<li>max_n_seeds_per_frame\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">svo::DepthFilterOptions</a>\n</li>\n<li>max_num_features_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">svo::SparseImgAlignBase</a>\n</li>\n<li>max_search_level\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">svo::DepthFilterOptions</a>\n</li>\n<li>max_trials\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>measurements_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">svo::ImuHandler</a>\n</li>\n<li>median_filter_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_depth_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386\">svo::DetectorOptions</a>\n</li>\n<li>min_num_neighbors_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>min_tracks_to_detect_new_features\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">svo::FeatureTrackerOptions</a>\n</li>\n<li>mu_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>mu_init\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>mut_\n: <a class=\"el\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">svo::GraphManager</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\"></a>- n -</h3><ul>\n<li>n\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>n_failed_reproj_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6\">svo::Point</a>\n</li>\n<li>n_meas_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>n_reproj\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc\">svo::Reprojector::Candidate</a>\n</li>\n<li>n_succeeded_reproj_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e\">svo::Point</a>\n</li>\n<li>n_visible_\n: <a class=\"el\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">LKSE3</a>\n</li>\n<li>need_new_kf_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a\">svo::FrameHandlerBase</a>\n</li>\n<li>new_frames_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af\">svo::FrameHandlerBase</a>\n</li>\n<li>new_img_\n: <a class=\"el\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">LKSE3</a>\n</li>\n<li>newest_processed_event_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>newest_tracked_event_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>nframe_index_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170\">svo::Frame</a>\n</li>\n<li>nh_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>normal_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">svo::Point</a>\n</li>\n<li>normal_information_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">svo::Point</a>\n</li>\n<li>normal_set_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0\">svo::Point</a>\n</li>\n<li>nu_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>nu_init\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>num_depth_cells_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>num_features_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63\">svo::Frame</a>\n</li>\n<li>num_obs_last_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e\">svo::FrameHandlerBase</a>\n</li>\n<li>num_pyramid_levels\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">motion_correction::WarpUpdateParams</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_o\"></a>- o -</h3><ul>\n<li>obs_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">svo::Point</a>\n</li>\n<li>ofs_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">svo::ImuHandler</a>\n</li>\n<li>ofs_reproj_errors_\n: <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">svo::PoseOptimizer</a>\n</li>\n<li>omega_bias\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f\">svo::ImuInitialization</a>\n</li>\n<li>omega_bias_\n: <a class=\"el\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">svo::ImuHandler</a>\n</li>\n<li>omega_bias_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61\">svo::ImuInitialization</a>\n</li>\n<li>omega_coriolis\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">svo::ImuCalibration</a>\n</li>\n<li>options_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">svo::AbstractInitialization</a>\n, <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69\">svo::FrameHandlerBase</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\"></a>- p -</h3><ul>\n<li>P\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">LKSE3::Keypoint</a>\n</li>\n<li>pc_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pc_global_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pcl_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>pixel_value\n: <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">LKSE3::Keypoint</a>\n</li>\n<li>pos_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">svo::Point</a>\n</li>\n<li>poseoptim_prior_lambda\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70\">svo::BaseOptions</a>\n</li>\n<li>poseoptim_thresh\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed\">svo::BaseOptions</a>\n</li>\n<li>poseoptim_using_unit_sphere\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310\">svo::BaseOptions</a>\n</li>\n<li>poses_pub_\n: <a class=\"el\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">Tracker</a>\n</li>\n<li>precomputed_rectified_points_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pub_depth_\n: <a class=\"el\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">Mosaic</a>\n</li>\n<li>pub_depth_map_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pub_img_\n: <a class=\"el\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">Mosaic</a>\n</li>\n<li>pub_pc_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>pub_pc_global_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>pub_tf_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275\">dvs_bootstrapping::FrontoPlanarBootstrapper</a>\n</li>\n<li>pub_voxel_grid_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>px\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">svo::FeatureWrapper</a>\n</li>\n<li>px_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97\">svo::Frame</a>\n</li>\n<li>pyr_new_\n: <a class=\"el\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">LKSE3</a>\n</li>\n<li>pyramid_levels_\n: <a class=\"el\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">LKSE3</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\"></a>- q -</h3><ul>\n<li>quality_max_fts_drop\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6\">svo::BaseOptions</a>\n</li>\n<li>quality_min_fts\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0\">svo::BaseOptions</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\"></a>- r -</h3><ul>\n<li>R\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>R_cur_world_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">svo::AbstractInitialization</a>\n</li>\n<li>R_imu_world_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36\">svo::Frame</a>\n</li>\n<li>radius_search_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>rect_\n: <a class=\"el\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">LKSE3</a>\n</li>\n<li>rectification_map_\n: <a class=\"el\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">Mosaic</a>\n</li>\n<li>ref_frame\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">svo::Reprojector::Candidate</a>\n</li>\n<li>ref_frames_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">svo::SparseImgAlignBase</a>\n</li>\n<li>ref_img_\n: <a class=\"el\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">LKSE3</a>\n</li>\n<li>ref_index\n: <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">svo::Reprojector::Candidate</a>\n</li>\n<li>ref_voxel_grid_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>regular_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>relocalization_max_trials\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe\">svo::BaseOptions</a>\n</li>\n<li>relocalization_n_trials_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f\">svo::FrameHandlerBase</a>\n</li>\n<li>remote_key_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>remote_key_pub_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490\">dvs_bootstrapping::Bootstrapper</a>\n</li>\n<li>remote_sub_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classTracker.html#ade9360c0b7392539943229150027677a\">Tracker</a>\n</li>\n<li>remove_unconstrained_points\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8\">svo::ReprojectorOptions</a>\n</li>\n<li>reproj_error_thresh\n: <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56\">svo::InitializationOptions</a>\n</li>\n<li>reproject_unconverged_seeds\n: <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3\">svo::ReprojectorOptions</a>\n</li>\n<li>reset_before_detection\n: <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">svo::FeatureTrackerOptions</a>\n</li>\n<li>rho_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\"></a>- s -</h3><ul>\n<li>sampling_level\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e\">svo::DetectorOptions</a>\n</li>\n<li>saturation_accel_max\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">svo::ImuCalibration</a>\n</li>\n<li>saturation_omega_max\n: <a class=\"el\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">svo::ImuCalibration</a>\n</li>\n<li>scan_epi_unit_sphere\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">svo::DepthFilterOptions</a>\n</li>\n<li>score\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">svo::Corner</a>\n, <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">svo::Reprojector::Candidate</a>\n</li>\n<li>score_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb\">svo::Frame</a>\n</li>\n<li>seed_convergence_sigma2_thresh\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">svo::DepthFilterOptions</a>\n</li>\n<li>seed_ref_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95\">svo::Frame</a>\n</li>\n<li>sensor_size\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>set_reset_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795\">svo::FrameHandlerBase</a>\n</li>\n<li>set_start_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad\">svo::FrameHandlerBase</a>\n</li>\n<li>stage_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98\">svo::FrameHandlerBase</a>\n</li>\n<li>state_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>status_\n: <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">vk::cameras::ProjectionResult</a>\n</li>\n<li>stop_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>stop_when_error_increases\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>strategy\n: <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>structure_optimization_max_pts\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225\">svo::BaseOptions</a>\n</li>\n<li>subpix_refinement\n: <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb\">svo::Matcher::Options</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\"></a>- t -</h3><ul>\n<li>t\n: <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">cv::HomographyDecomposition::_CameraMotion</a>\n</li>\n<li>T_body_cam_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1\">svo::Frame</a>\n</li>\n<li>T_C_B_\n: <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">vk::cameras::NCamera</a>\n</li>\n<li>T_cur_from_ref_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">svo::AbstractInitialization</a>\n</li>\n<li>T_cur_ref_\n: <a class=\"el\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">LKSE3</a>\n</li>\n<li>T_f_w_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33\">svo::Frame</a>\n</li>\n<li>T_icur_iref\n: <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">svo::SparseImgAlignState</a>\n</li>\n<li>T_iref_world_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">svo::SparseImgAlignBase</a>\n</li>\n<li>T_kf_ref_\n: <a class=\"el\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">LKSE3</a>\n</li>\n<li>t_lastimu_newimu_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632\">svo::FrameHandlerBase</a>\n</li>\n<li>T_ref_cam_\n: <a class=\"el\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">LKSE3</a>\n</li>\n<li>t_ref_cur_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">svo::AbstractInitialization</a>\n</li>\n<li>T_ref_w_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>T_W_B_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380\">svo::ViNodeState</a>\n</li>\n<li>T_world_imuinit\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e\">svo::FrameHandlerBase</a>\n</li>\n<li>T_world_kf_\n: <a class=\"el\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">LKSE3</a>\n</li>\n<li>tf_\n: <a class=\"el\" href=\"classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a\">DvsReconstruction</a>\n</li>\n<li>tf_sub_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">Tracker</a>\n</li>\n<li>threshold_primary\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b\">svo::DetectorOptions</a>\n</li>\n<li>threshold_secondary\n: <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89\">svo::DetectorOptions</a>\n</li>\n<li>timer_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0\">svo::FrameHandlerBase</a>\n</li>\n<li>timestamp_\n: <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">svo::ImuMeasurement</a>\n</li>\n<li>trace_dir\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857\">svo::BaseOptions</a>\n</li>\n<li>track_id_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8\">svo::Frame</a>\n</li>\n<li>tracker_\n: <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">svo::AbstractInitialization</a>\n</li>\n<li>tracking_quality_\n: <a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e\">svo::FrameHandlerBase</a>\n</li>\n<li>trials_\n: <a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a>\n</li>\n<li>ts_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>ts_ref_\n: <a class=\"el\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">Mosaic</a>\n</li>\n<li>type\n: <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">svo::FeatureWrapper</a>\n, <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">svo::Reprojector::Candidate</a>\n</li>\n<li>type_\n: <a class=\"el\" href=\"classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a\">svo::Point</a>\n</li>\n<li>type_focus_measure_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>type_vec_\n: <a class=\"el\" href=\"classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c\">svo::Frame</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\"></a>- u -</h3><ul>\n<li>undistort_mapx_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>undistort_mapy_\n: <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n</li>\n<li>update_3d_point\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">svo::DepthFilterOptions</a>\n</li>\n<li>update_seeds_with_old_keyframes\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9\">svo::BaseOptions</a>\n</li>\n<li>use_async_reprojectors\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5\">svo::BaseOptions</a>\n</li>\n<li>use_imu\n: <a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c\">svo::BaseOptions</a>\n</li>\n<li>use_inverse_depth\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">svo::DepthFilterOptions</a>\n</li>\n<li>use_threaded_depthfilter\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">svo::DepthFilterOptions</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\"></a>- v -</h3><ul>\n<li>velocity\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e\">svo::ImuInitialization</a>\n</li>\n<li>velocity_sigma\n: <a class=\"el\" href=\"classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e\">svo::ImuInitialization</a>\n</li>\n<li>verbose\n: <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">svo::DepthFilterOptions</a>\n, <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6\">vk::solver::MiniLeastSquaresSolverOptions</a>\n</li>\n<li>virtual_cam_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>virtual_height_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>virtual_width_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n<li>voxel_filter_leaf_size_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56\">depth_from_defocus::DepthFromDefocusNode</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_w\"></a>- w -</h3><ul>\n<li>w_\n: <a class=\"el\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">Mosaic</a>\n</li>\n<li>W_v_B_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">svo::ViNodeState</a>\n</li>\n<li>w_virt_\n: <a class=\"el\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">Mosaic</a>\n</li>\n<li>warp_mode\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>weight_scale_rot_\n: <a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">LKSE3</a>\n</li>\n<li>weight_scale_trans_\n: <a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">LKSE3</a>\n</li>\n<li>width_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">LKSE3</a>\n</li>\n<li>window_size_\n: <a class=\"el\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">Mosaic</a>\n</li>\n<li>world_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">Mosaic</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_x\"></a>- x -</h3><ul>\n<li>x\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">svo::Corner</a>\n</li>\n<li>x_\n: <a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">LKSE3</a>\n</li>\n<li>xyz_ref_cache_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">svo::SparseImgAlign</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_vars_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_y\"></a>- y -</h3><ul>\n<li>y\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">svo::Corner</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_w\"></a>- w -</h3><ul>\n<li>w_\n: <a class=\"el\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">Mosaic</a>\n</li>\n<li>W_v_B_\n: <a class=\"el\" href=\"classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3\">svo::ViNodeState</a>\n</li>\n<li>w_virt_\n: <a class=\"el\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">Mosaic</a>\n</li>\n<li>warp_mode\n: <a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">motion_correction::WarpUpdateParams</a>\n</li>\n<li>weight_scale_rot_\n: <a class=\"el\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">LKSE3</a>\n</li>\n<li>weight_scale_trans_\n: <a class=\"el\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">LKSE3</a>\n</li>\n<li>width_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3\">dvs_bootstrapping::EventsFramesBootstrapper</a>\n, <a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f\">evo_utils::camera::PinholeCamera</a>\n, <a class=\"el\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">LKSE3</a>\n</li>\n<li>window_size_\n: <a class=\"el\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">Mosaic</a>\n</li>\n<li>world_frame_id_\n: <a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54\">depth_from_defocus::DepthFromDefocusNode</a>\n, <a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3\">dvs_bootstrapping::Bootstrapper</a>\n, <a class=\"el\" href=\"classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802\">DvsReconstruction</a>\n, <a class=\"el\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">Mosaic</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_x\"></a>- x -</h3><ul>\n<li>x\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">svo::Corner</a>\n</li>\n<li>x_\n: <a class=\"el\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">LKSE3</a>\n</li>\n<li>xyz_ref_cache_\n: <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">svo::SparseImgAlign</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/functions_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented class members with links to the class documentation for each member:</div>\n\n<h3><a id=\"index_y\"></a>- y -</h3><ul>\n<li>y\n: <a class=\"el\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">svo::Corner</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/geometry_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/evo_utils/geometry.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">geometry.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceevo__utils_1_1geometry.html\">evo_utils::geometry</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">using</span> Transformation = kindr::minimal::QuatTransformation;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">using</span> Quaternion = kindr::minimal::RotationQuaternion;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// Aliases for clarity</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">float</span> Depth;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">float</span> InverseDepth;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keywordtype\">void</span> naiveMedianFilter(<span class=\"keyword\">const</span> cv::Mat&amp; img, cv::Mat&amp; out_img,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;                       <span class=\"keyword\">const</span> cv::Mat&amp; mask, <span class=\"keywordtype\">int</span> patch_size);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"keywordtype\">void</span> huangMedianFilter(<span class=\"keyword\">const</span> cv::Mat&amp; img, cv::Mat&amp; out_img,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;                       <span class=\"keyword\">const</span> cv::Mat&amp; mask, <span class=\"keywordtype\">int</span> patch_size);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;}  <span class=\"comment\">// namespace evo_utils::geometry</span></div><div class=\"ttc\" id=\"namespaceevo__utils_1_1geometry_html\"><div class=\"ttname\"><a href=\"namespaceevo__utils_1_1geometry.html\">evo_utils::geometry</a></div><div class=\"ttdef\"><b>Definition:</b> geometry.hpp:7</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/global_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/global.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">global.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;list&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">//#include &lt;cmath&gt;      // sin, cos</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span>     <span class=\"comment\">// shared_ptr</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;stdexcept&gt;</span>  <span class=\"comment\">// assert, runtime_error</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Geometry&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera.h&gt;</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;{</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"comment\">//using namespace Eigen;</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">using</span> Eigen::Vector2i;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">using</span> Eigen::Vector2f;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">using</span> Eigen::Vector2d;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">using</span> Eigen::Vector3d;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">using</span> Eigen::Matrix2f;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">using</span> Eigen::Matrix2d;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">using</span> Eigen::Matrix3d;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">using</span> Eigen::Matrix;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;vk::PerformanceMonitor&gt; PerformanceMonitorPtr;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"preprocessor\">#ifdef SVO_TRACE</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">extern</span> PerformanceMonitorPtr g_permon;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"preprocessor\">  #define SVO_LOG(name, value) g_permon-&gt;log(std::string(name),(value))</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"preprocessor\">  #define SVO_START_TIMER(name) g_permon-&gt;startTimer((name))</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">  #define SVO_STOP_TIMER(name) g_permon-&gt;stopTimer((name))</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">  #define SVO_LOG(name, v) (void) v</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">  #define SVO_START_TIMER(name)</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"preprocessor\">  #define SVO_STOP_TIMER(name)</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"comment\">// forward declaration of modules</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Frame&gt; FramePtr;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"keyword\">typedef</span> std::weak_ptr&lt;Frame&gt; FrameWeakPtr;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keyword\">class </span>FrameBundle;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;FrameBundle&gt; FrameBundlePtr;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keyword\">struct </span>Feature;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Feature&gt; FeaturePtr;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">typedef</span> std::weak_ptr&lt;Feature&gt; FeatureWeakPtr;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keyword\">class </span>Point;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Point&gt; PointPtr;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">class </span>ImuHandler;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;ImuHandler&gt; ImuHandlerPtr;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keyword\">class </span>SparseImgAlignBase;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;SparseImgAlignBase&gt; SparseImgAlignBasePtr;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keyword\">class </span>Map;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Map&gt; MapPtr;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keyword\">class </span>Matcher;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Matcher&gt; MatcherPtr;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keyword\">class </span>SeedInverse;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keyword\">typedef</span> SeedInverse SeedImplementation;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;SeedImplementation&gt; SeedPtr;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keyword\">typedef</span> std::vector&lt;SeedPtr&gt; Seeds;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keyword\">class </span>AbstractDetector;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;AbstractDetector&gt; DetectorPtr;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">typedef</span> std::vector&lt;cv::Mat&gt; ImgPyr;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keyword\">typedef</span> std::vector&lt;FeaturePtr&gt; Features;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <span class=\"keyword\">class </span>AbstractBundleAdjustment;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;AbstractBundleAdjustment&gt; AbstractBundleAdjustmentPtr;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keyword\">struct </span>DetectorOptions;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keyword\">struct </span>DepthFilterOptions;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keyword\">struct </span>ReprojectorOptions;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keyword\">struct </span>InitializationOptions;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keyword\">struct </span>FeatureTrackerOptions;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keyword\">struct </span>LoopClosureOptions;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  <span class=\"keyword\">class </span>AbstractInitialization;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_ptr&lt;AbstractInitialization&gt; InitializerPtr;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"keyword\">class </span>PoseOptimizer;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_ptr&lt;PoseOptimizer&gt; PoseOptimizerPtr;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  <span class=\"keyword\">class </span>SparseImgAlign;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_ptr&lt;SparseImgAlign&gt; SparseImgAlignPtr;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keyword\">class </span>DepthFilter;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_ptr&lt;DepthFilter&gt; DepthFilterPtr;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">class </span>Reprojector;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_ptr&lt;Reprojector&gt; ReprojectorPtr;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keyword\">class </span>LoopClosing;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <span class=\"keyword\">using</span> LoopClosingPtr = std::unique_ptr&lt;LoopClosing&gt;;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/gpu__types__cuda_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align/gpu_types_cuda.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">gpu_types_cuda.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;imp/core/pixel.hpp&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#define USE_SINGLE_PRECISION</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#ifdef USE_SINGLE_PRECISION</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">float</span> FloatTypeGpu;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">double</span> FloatTypeGpu;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#ifdef USE_SINGLE_PRECISION</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel32fC1 FloatPixelGpu;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">typedef</span> float2 Float2TypeGpu;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel32fC2 Float2PixelGpu;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">typedef</span> float3 Float3TypeGpu;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel32fC3 Float3PixelGpu;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">typedef</span> std::uint32_t UIntTypeGpu;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel32uC1 UIntPixelGpu;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> BoolTypeGpu;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel8uC1 BoolPixelGpu;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">// use double precision</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"comment\">// TODO: Define Pixel64 in imp</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel64fC1 FloatPixelGpu;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">typedef</span> double2 Float2TypeGpu;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel64fC2 Float2PixelGpu;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">typedef</span> double3 Float3TypeGpu;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel64fC3 Float3PixelGpu;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">typedef</span> std::uint32_t UIntTypeGpu;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel32uC1 UIntPixelGpu;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> BoolTypeGpu;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">typedef</span> imp::Pixel8uC1 BoolPixelGpu;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/graph__manager_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend/graph_manager.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">graph_manager.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/backend/smart_factors_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/geometry/Cal3_S2.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/nonlinear/NonlinearFactorGraph.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;gtsam/navigation/CombinedImuFactor.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">// fwd</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">struct </span>ImuCalibration;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">struct </span>ImuInitialization;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">struct </span>ImuMeasurement;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">typedef</span> std::deque&lt;ImuMeasurement&gt; ImuMeasurements; <span class=\"comment\">// TODO(cfo)</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">class </span>Point;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1GraphManagerOptions.html\">   29</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;{</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keywordtype\">double</span> reproj_error_noise = 1.0/370.0;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keywordtype\">double</span> smart_reproj_threshold = 3.0/370.0; <span class=\"comment\">// set -1 to deactivate!</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">double</span> min_parallax_thresh = 5.0/180*M_PI;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">bool</span> trace_tracks = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">bool</span> use_robust_px_noise = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">double</span> init_pos_sigma = 0.001;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keywordtype\">double</span> init_roll_pitch_sigma = 0.03; <span class=\"comment\">// 2 / 180.0 * M_PI;</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">double</span> init_yaw_sigma = 0.78; <span class=\"comment\">// 45.0 / 180.0 * M_PI</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;};</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1GraphManager.html\">   41</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;{</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  </div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  </div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">using</span> NFramesId = int;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keyword\">using</span> Ptr = std::shared_ptr&lt;GraphManager&gt;;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keyword\">using</span> PreintegratedImuMeasurements = gtsam::PreintegratedCombinedMeasurements;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keyword\">using</span> CombinedPreintegratedMeasurementPtr = std::shared_ptr&lt;PreintegratedImuMeasurements&gt;;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">using</span> PointIdSmartFactorMap = std::unordered_map&lt;int, boost::shared_ptr&lt;SmartFactor&gt;&gt;;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <a class=\"code\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a>&amp; options);</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a>();</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <a class=\"code\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a> options_;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  gtsam::Cal3_S2::shared_ptr cam_calib_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  boost::shared_ptr&lt;PreintegratedImuMeasurements::Params&gt; preintegration_params_;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  std::vector&lt;gtsam::SharedNoiseModel&gt; px_noise_pyr_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  gtsam::SharedNoiseModel smart_noise_;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  gtsam::SharedNoiseModel imu_bias_prior_noise_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  gtsam::SharedNoiseModel velocity_prior_noise_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  gtsam::SharedNoiseModel zero_velocity_prior_noise_;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  Eigen::Matrix&lt;double, 6, 6&gt; pose_prior_covariance_;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  std::unique_ptr&lt;gtsam::SmartProjectionParams&gt; smart_factor_params_;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">   70</a></span>&#160;  std::mutex <a class=\"code\" href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">mut_</a>;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  gtsam::NonlinearFactorGraph new_factors_; <span class=\"comment\">// new factors to be added</span></div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  gtsam::Values new_values_;                <span class=\"comment\">// new states to be added</span></div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  PointIdSmartFactorMap new_smart_factors_; <span class=\"comment\">// pointId -&gt; {SmartFactorPtr}</span></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <a class=\"code\" href=\"classgtsam_1_1FastMap.html\">SmartFactorMap</a> smart_factors_map_;        <span class=\"comment\">// pointId -&gt; {SmartFactorPtr, SlotIndex}</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  BundleId last_added_state_index_ = -1;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keywordtype\">void</span> initialize();</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  <span class=\"keywordtype\">void</span> initializeImuNoiseModels(</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;        <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>&amp; imu_calib,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;        <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a>&amp; imu_init);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"comment\">// Landmarks</span></div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordtype\">void</span> addLandmark(<a class=\"code\" href=\"classsvo_1_1Point.html\">svo::Point</a>&amp; point);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  <span class=\"keywordtype\">void</span> addObservationToLandmark(</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <a class=\"code\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> keypoint_index);</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <span class=\"keywordtype\">void</span> addSmartLandmark(<a class=\"code\" href=\"classsvo_1_1Point.html\">svo::Point</a>&amp; point);</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"keywordtype\">void</span> addObservationToSmartLandmark(</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      <a class=\"code\" href=\"classsvo_1_1Frame.html\">svo::Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> keypoint_index);</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <span class=\"keywordtype\">void</span> addCombinedImuFactor(</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; from_id,</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; to_id,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; gyr_bias,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> to_timestamp_sec,</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keyword\">const</span> ImuMeasurements&amp; imu_measurements);</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"comment\">// Prior Factors</span></div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <span class=\"keywordtype\">void</span> addPosePriorFactor(</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_W_B);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordtype\">void</span> addBiasPriorFactor(</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; gyro_bias);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <span class=\"keywordtype\">void</span> addVelocityPriorFactor(</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; W_v);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"keywordtype\">void</span> addZeroVelocityPriorFactor(</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index);</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"comment\">// Augment State</span></div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  <span class=\"keywordtype\">void</span> augmentStateWithPose(</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_W_B);</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  <span class=\"keywordtype\">void</span> augmentStateWithVelocityAndBias(</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      <span class=\"keyword\">const</span> NFramesId&amp; state_index,</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; W_v,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; gyr_bias);</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;  <span class=\"comment\">// Retrieval (Always lock mut_ when using)</span></div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordtype\">void</span> getUpdatesCopy(</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      gtsam::NonlinearFactorGraph&amp; graph_updates,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      gtsam::Values&amp; value_updates,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      std::vector&lt;size_t&gt;&amp; delete_indices,</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;      std::vector&lt;int&gt;&amp; smart_factor_point_ids);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">void</span> updateFactorSlots(</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      <span class=\"keyword\">const</span> gtsam::FastVector&lt;size_t&gt;&amp; new_slots,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;int&gt;&amp; smart_factor_point_ids);</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;};</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classgtsam_1_1FastMap_html\"><div class=\"ttname\"><a href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap&lt; int, std::pair&lt; boost::shared_ptr&lt; SmartFactor &gt;, int &gt; &gt;</a></div></div>\n<div class=\"ttc\" id=\"classsvo_1_1GraphManager_html\"><div class=\"ttname\"><a href=\"classsvo_1_1GraphManager.html\">svo::GraphManager</a></div><div class=\"ttdef\"><b>Definition:</b> graph_manager.h:41</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></div><div class=\"ttdoc\">Settings for the IMU statistics Check the following references for more information about the IMU par...</div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1GraphManagerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> graph_manager.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1GraphManager_html_a5c8f65e0321daab9129367a1d39a1959\"><div class=\"ttname\"><a href=\"classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959\">svo::GraphManager::mut_</a></div><div class=\"ttdeci\">std::mutex mut_</div><div class=\"ttdef\"><b>Definition:</b> graph_manager.h:70</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html\">svo::Point</a></div><div class=\"ttdoc\">A 3D point on the surface of the scene. </div><div class=\"ttdef\"><b>Definition:</b> point.h:55</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuInitialization_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:73</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/graph_legend.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Graph Legend</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Graph Legend</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<p>This page explains how to interpret the graphs that are generated by doxygen.</p>\n<p>Consider the following example: </p><div class=\"fragment\"><div class=\"line\">/*! Invisible class because of truncation */</div><div class=\"line\">class Invisible { };</div><div class=\"line\"></div><div class=\"line\">/*! Truncated class, inheritance relation is hidden */</div><div class=\"line\">class Truncated : public Invisible { };</div><div class=\"line\"></div><div class=\"line\">/* Class not documented with doxygen comments */</div><div class=\"line\">class Undocumented { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using public inheritance */</div><div class=\"line\">class PublicBase : public Truncated { };</div><div class=\"line\"></div><div class=\"line\">/*! A template class */</div><div class=\"line\">template&lt;class T&gt; class Templ { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using protected inheritance */</div><div class=\"line\">class ProtectedBase { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is inherited using private inheritance */</div><div class=\"line\">class PrivateBase { };</div><div class=\"line\"></div><div class=\"line\">/*! Class that is used by the Inherited class */</div><div class=\"line\">class Used { };</div><div class=\"line\"></div><div class=\"line\">/*! Super class that inherits a number of other classes */</div><div class=\"line\">class Inherited : public PublicBase,</div><div class=\"line\">                  protected ProtectedBase,</div><div class=\"line\">                  private PrivateBase,</div><div class=\"line\">                  public Undocumented,</div><div class=\"line\">                  public Templ&lt;int&gt;</div><div class=\"line\">{</div><div class=\"line\">  private:</div><div class=\"line\">    Used *m_usedClass;</div><div class=\"line\">};</div></div><!-- fragment --><p> This will result in the following graph:</p>\n<center><div class=\"image\">\n<img src=\"graph_legend.png\"/>\n</div>\n</center><p>The boxes in the above graph have the following meaning: </p>\n<ul>\n<li>\nA filled gray box represents the struct or class for which the graph is generated. </li>\n<li>\nA box with a black border denotes a documented struct or class. </li>\n<li>\nA box with a gray border denotes an undocumented struct or class. </li>\n<li>\nA box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>\n</ul>\n<p>The arrows have the following meaning: </p>\n<ul>\n<li>\nA dark blue arrow is used to visualize a public inheritance relation between two classes. </li>\n<li>\nA dark green arrow is used for protected inheritance. </li>\n<li>\nA dark red arrow is used for private inheritance. </li>\n<li>\nA purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>\n<li>\nA yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/graph_legend.md5",
    "content": "387ff8eb65306fa251338d3c9bd7bfff"
  },
  {
    "path": "docs/hierarchy.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Hierarchy</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Class Hierarchy</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">\n<p><a href=\"inherits.html\">Go to the graphical class hierarchy</a></p>\nThis inheritance list is sorted roughly, but not completely, alphabetically:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\" target=\"_self\">cv::HomographyDecomposition::_CameraMotion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_1_\" class=\"arrow\" onclick=\"toggleFolder('1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>_Functor</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\" target=\"_self\">aslam::common::NumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"desc\">Modified numerical differentiation code from unsupported/Eigen library </td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_2_\" class=\"arrow\" onclick=\"toggleFolder('2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\" target=\"_self\">svo::AbstractBundleAdjustment</a></td><td class=\"desc\">EXPERIMENTAL Defines interface for various bundle adjustment methods </td></tr>\n<tr id=\"row_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\" target=\"_self\">svo::BackendInterface</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_3_\" class=\"arrow\" onclick=\"toggleFolder('3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\" target=\"_self\">svo::AbstractDetector</a></td><td class=\"desc\">All detectors should derive from this abstract class </td></tr>\n<tr id=\"row_3_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\" target=\"_self\">svo::AllPixelsDetector</a></td><td class=\"desc\">Dummy detector that selects all pixels </td></tr>\n<tr id=\"row_3_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\" target=\"_self\">svo::CannyDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FastDetector.html\" target=\"_self\">svo::FastDetector</a></td><td class=\"desc\">FAST detector by Edward Rosten </td></tr>\n<tr id=\"row_3_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\" target=\"_self\">svo::FastGradDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\" target=\"_self\">svo::GradientDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\" target=\"_self\">svo::GradientDetectorGrid</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\" target=\"_self\">svo::GradientHuangMumfordDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\" target=\"_self\">svo::SobelDetector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_4_\" class=\"arrow\" onclick=\"toggleFolder('4_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\" target=\"_self\">svo::AbstractInitialization</a></td><td class=\"desc\">Bootstrapping the map from the first two views </td></tr>\n<tr id=\"row_4_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\" target=\"_self\">svo::ArrayInitGeometric</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\" target=\"_self\">svo::ArrayInitOptimization</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\" target=\"_self\">svo::FivePointInit</a></td><td class=\"desc\">Tracks features using KLT and then estimate the relative pose using 5pt RANSAC </td></tr>\n<tr id=\"row_4_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\" target=\"_self\">svo::HomographyInit</a></td><td class=\"desc\">Tracks features using Lucas-Kanade tracker and then estimates a homography </td></tr>\n<tr id=\"row_4_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\" target=\"_self\">svo::OneShotInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1StereoInit.html\" target=\"_self\">svo::StereoInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\" target=\"_self\">svo::TwoPointInit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1Aligned.html\" target=\"_self\">aslam::Aligned&lt; Container, Type &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\" target=\"_self\">aslam::AlignedMap&lt; KeyType, ValueType &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\" target=\"_self\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structArgumentType.html\" target=\"_self\">ArgumentType&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\" target=\"_self\">ArgumentType&lt; T(U)&gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\" target=\"_self\">vk::cameras::AtanDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\" target=\"_self\">svo::BackendInterfaceOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\" target=\"_self\">svo::BackendOptimizer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_13_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\" target=\"_self\">svo::BackendVisualizer</a></td><td class=\"desc\">Publish visualisation messages to ROS </td></tr>\n<tr id=\"row_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\" target=\"_self\">svo::BaseOptions</a></td><td class=\"desc\">Options for base frame handler module. Sets tracing and quality options </td></tr>\n<tr id=\"row_15_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classpose__to__tf_1_1Boostrapper.html\" target=\"_self\">pose_to_tf.Boostrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_16_\" class=\"arrow\" onclick=\"toggleFolder('16_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" target=\"_self\">dvs_bootstrapping::Bootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_16_0_\" class=\"arrow\" onclick=\"toggleFolder('16_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" target=\"_self\">dvs_bootstrapping::EventsFramesBootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\" target=\"_self\">dvs_bootstrapping::FrontoPlanarBootstrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\" target=\"_self\">rpg_common::CallbackHost&lt; CallbackArgs &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_18_\" class=\"arrow\" onclick=\"toggleFolder('18_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1CallbackHost.html\" target=\"_self\">rpg_common::CallbackHost&lt; const FrameBundlePtr &amp;&gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_18_0_\" class=\"arrow\" onclick=\"toggleFolder('18_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\" target=\"_self\">svo::FrameHandlerBase</a></td><td class=\"desc\">Base class for various VO pipelines. Manages the map and the state machine </td></tr>\n<tr id=\"row_18_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\" target=\"_self\">svo::FrameHandlerArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\" target=\"_self\">svo::FrameHandlerMono</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\" target=\"_self\">svo::FrameHandlerStereo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_19_\" class=\"arrow\" onclick=\"toggleFolder('19_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" target=\"_self\">vk::cameras::CameraGeometryBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_19_0_\" class=\"arrow\" onclick=\"toggleFolder('19_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" target=\"_self\">vk::cameras::CameraGeometry&lt; EquidistantFisheyeProjection &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\" target=\"_self\">vk::cameras::EquidistantFisheyeGeometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_19_1_\" class=\"arrow\" onclick=\"toggleFolder('19_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" target=\"_self\">vk::cameras::CameraGeometry&lt; OmniProjection &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\" target=\"_self\">vk::cameras::OmniGeometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_19_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" target=\"_self\">vk::cameras::CameraGeometry&lt; Projection &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\" target=\"_self\">svo::Reprojector::Candidate</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_21_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\" target=\"_self\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\" target=\"_self\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_23_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\" target=\"_self\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\" target=\"_self\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_25_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\" target=\"_self\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\" target=\"_self\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_27_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\" target=\"_self\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_28_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\" target=\"_self\">YAML::convert&lt; vk::cameras::NCamera &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_29_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Corner.html\" target=\"_self\">svo::Corner</a></td><td class=\"desc\">Temporary container used for corner detection. Features are initialized from these </td></tr>\n<tr id=\"row_30_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\" target=\"_self\">svo::CsvDatasetReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_31_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\" target=\"_self\">svo::DepthFilter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_32_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\" target=\"_self\">svo::DepthFilterOptions</a></td><td class=\"desc\">Depth-filter config parameters </td></tr>\n<tr id=\"row_33_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\" target=\"_self\">depth_from_defocus::DepthFromDefocusNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_34_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\" target=\"_self\">depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_35_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_35_\" class=\"arrow\" onclick=\"toggleFolder('35_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\" target=\"_self\">depth_from_defocus::DepthVector&lt; InverseDepthVector &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_35_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\" target=\"_self\">depth_from_defocus::InverseDepthVector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_36_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_36_\" class=\"arrow\" onclick=\"toggleFolder('36_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DepthVector.html\" target=\"_self\">depth_from_defocus::DepthVector&lt; LinearDepthVector &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_36_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\" target=\"_self\">depth_from_defocus::LinearDepthVector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_37_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\" target=\"_self\">svo::DetectorOptions</a></td><td class=\"desc\">Common options of all feature detectors </td></tr>\n<tr id=\"row_38_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classDvsReconstruction.html\" target=\"_self\">DvsReconstruction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_39_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\" target=\"_self\">vk::cameras::EquidistantDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_40_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\" target=\"_self\">vk::cameras::EquidistantFisheyeProjection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_41_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\" target=\"_self\">evo_utils.select_exposure_DAVIS.ExposureSelector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_42_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1FastMap.html\" target=\"_self\">gtsam::FastMap&lt; KEY, VALUE &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_43_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1FastMap.html\" target=\"_self\">gtsam::FastMap&lt; int, std::pair&lt; boost::shared_ptr&lt; SmartFactor &gt;, int &gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_44_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\" target=\"_self\">svo::FeatureRef</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_45_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\" target=\"_self\">svo::FeatureTrack</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_46_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\" target=\"_self\">svo::FeatureTracker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_47_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\" target=\"_self\">svo::FeatureTrackerOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_48_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\" target=\"_self\">svo::FeatureWrapper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_49_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_49_\" class=\"arrow\" onclick=\"toggleFolder('49_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Frame.html\" target=\"_self\">svo::Frame</a></td><td class=\"desc\">A frame saves the image, the associated features and the estimated pose </td></tr>\n<tr id=\"row_49_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\" target=\"_self\">svo::FrameGpu</a></td><td class=\"desc\">Adds GPU data members to the frame base class </td></tr>\n<tr id=\"row_50_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\" target=\"_self\">svo::FrameBundle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_51_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1GenericProjectionFactor.html\" target=\"_self\">gtsam::GenericProjectionFactor&lt; POSE, LANDMARK, CALIBRATION &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_52_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1GraphManager.html\" target=\"_self\">svo::GraphManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_53_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\" target=\"_self\">svo::GraphManagerOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\" target=\"_self\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_55_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1Homography.html\" target=\"_self\">vk::Homography</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_56_\" class=\"arrow\" onclick=\"toggleFolder('56_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" target=\"_self\">cv::HomographyDecomposition::HomographyDecomp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\" target=\"_self\">cv::HomographyDecomposition::HomographyDecompInria</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\" target=\"_self\">cv::HomographyDecomposition::HomographyDecompZhang</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_57_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\" target=\"_self\">svo::HostCacheHandler</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_58_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\" target=\"_self\">svo::ImuCalibration</a></td><td class=\"desc\">Settings for the IMU statistics Check the following references for more information about the IMU parameters: </td></tr>\n<tr id=\"row_59_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\" target=\"_self\">svo::ImuHandler</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_60_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\" target=\"_self\">svo::ImuInitialization</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_61_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\" target=\"_self\">svo::ImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_62_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\" target=\"_self\">svo::InitializationOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_63_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\" target=\"_self\">svo::DepthFilter::Job</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_64_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\" target=\"_self\">LKSE3::Keypoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_65_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\" target=\"_self\">svo::KeypointIdentifier</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_66_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_66_\" class=\"arrow\" onclick=\"toggleFolder('66_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classLKSE3.html\" target=\"_self\">LKSE3</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_66_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classTracker.html\" target=\"_self\">Tracker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_67_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1LogItem.html\" target=\"_self\">vk::LogItem</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_68_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Map.html\" target=\"_self\">svo::Map</a></td><td class=\"desc\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> object which saves all keyframes which are in a map </td></tr>\n<tr id=\"row_69_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Matcher.html\" target=\"_self\">svo::Matcher</a></td><td class=\"desc\">Patch-matcher for reprojection-matching and epipolar search in triangulation </td></tr>\n<tr id=\"row_70_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_70_\" class=\"arrow\" onclick=\"toggleFolder('70_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" target=\"_self\">svo::dataset::MeasurementBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_70_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\" target=\"_self\">svo::dataset::CameraMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_70_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\" target=\"_self\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_70_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\" target=\"_self\">svo::dataset::ImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_71_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolver&lt; D, T, Implementation &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_72_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_72_\" class=\"arrow\" onclick=\"toggleFolder('72_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_72_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\" target=\"_self\">svo::DepthEstimator</a></td><td class=\"desc\">Depth estimation by minimizing photometric error </td></tr>\n<tr id=\"row_73_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_73_\" class=\"arrow\" onclick=\"toggleFolder('73_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_73_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\" target=\"_self\">svo::PatchNormal</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_74_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_74_\" class=\"arrow\" onclick=\"toggleFolder('74_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_74_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\" target=\"_self\">svo::PoseOptimizer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_75_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_75_\" class=\"arrow\" onclick=\"toggleFolder('75_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_75_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_75_0_\" class=\"arrow\" onclick=\"toggleFolder('75_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\" target=\"_self\">svo::SparseImgAlignBase</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_75_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\" target=\"_self\">svo::SparseImgAlign</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_75_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\" target=\"_self\">svo::SparseImgAlignGpu</a></td><td class=\"desc\">Optimize the pose of the frame by minimizing the photometric error of feature patches </td></tr>\n<tr id=\"row_76_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" target=\"_self\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_77_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classMosaic.html\" target=\"_self\">Mosaic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_78_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\" target=\"_self\">vk::cameras::NCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_79_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_79_\" class=\"arrow\" onclick=\"toggleFolder('79_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>Nodelet</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_79_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\" target=\"_self\">depth_from_defocus::DvsMappingNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_79_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classDvsTrackingNodelet.html\" target=\"_self\">DvsTrackingNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_79_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\" target=\"_self\">svo::SvoNodelet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_80_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1NoDistortion.html\" target=\"_self\">vk::cameras::NoDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_81_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\" target=\"_self\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_82_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\" target=\"_self\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_83_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\" target=\"_self\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_84_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\" target=\"_self\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_85_\" class=\"arrow\" onclick=\"toggleFolder('85_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>object</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\" target=\"_self\">vikit_py.transformations.Arcball</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_86_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\" target=\"_self\">svo::OccupandyGrid2D</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_87_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1OmniProjection.html\" target=\"_self\">vk::cameras::OmniProjection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_88_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\" target=\"_self\">svo::OptimizerBackendOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_89_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\" target=\"_self\">svo::Matcher::Options</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_90_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\" target=\"_self\">vk::PerformanceMonitor</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_91_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\" target=\"_self\">vikit_py.pinhole_camera.PinholeCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_92_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\" target=\"_self\">evo_utils::camera::PinholeCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_93_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\" target=\"_self\">vk::cameras::PinholeProjection&lt; Distortion &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_94_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Point.html\" target=\"_self\">svo::Point</a></td><td class=\"desc\">A 3D point on the surface of the scene </td></tr>\n<tr id=\"row_95_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\" target=\"_self\">svo::PointIdProvider</a></td><td class=\"desc\">Thread-safe point-ID provider </td></tr>\n<tr id=\"row_96_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\" target=\"_self\">svo::PreintegratedImuMeasurement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_97_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\" target=\"_self\">vk::cameras::ProjectionResult</a></td><td class=\"desc\">This struct is returned by the camera projection methods and holds the result state of the projection operation </td></tr>\n<tr id=\"row_98_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\" target=\"_self\">vk::cameras::RadialTangentialDistortion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_99_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1RealtimeWorker.html\" target=\"_self\">rpg_common::RealtimeWorker&lt; DataType &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_100_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Reprojector.html\" target=\"_self\">svo::Reprojector</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_101_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\" target=\"_self\">svo::ReprojectorOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_102_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1RingBuffer.html\" target=\"_self\">vk::RingBuffer&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_103_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1RingBuffer.html\" target=\"_self\">vk::RingBuffer&lt; double &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1RingBuffer.html\" target=\"_self\">vk::RingBuffer&lt; size_t &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_105_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\" target=\"_self\">vikit_py.ros_node.RosNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_106_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1Sample.html\" target=\"_self\">vk::Sample</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_107_\" class=\"arrow\" onclick=\"toggleFolder('107_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" target=\"_self\">vk::solver::ScaleEstimator</a></td><td class=\"desc\">Scale Estimators to estimate standard deviation of a distribution of errors </td></tr>\n<tr id=\"row_107_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\" target=\"_self\">vk::solver::MADScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\" target=\"_self\">vk::solver::NormalDistributionScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\" target=\"_self\">vk::solver::UnitScaleEstimator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_108_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SeedRef.html\" target=\"_self\">svo::SeedRef</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_109_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\" target=\"_self\">gtsam::SmartProjectionPoseFactor&lt; CALIBRATION &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_110_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1snakify_1_1snakify.html\" target=\"_self\">evo_utils.snakify.snakify</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_111_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\" target=\"_self\">svo::SparseImgAlignOptions</a></td><td class=\"desc\">Sparse Image Alignment Options </td></tr>\n<tr id=\"row_112_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\" target=\"_self\">svo::SparseImgAlignState</a></td><td class=\"desc\">State to be estimated </td></tr>\n<tr id=\"row_113_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\" target=\"_self\">svo::PoseOptimizer::Statistics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_114_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\" target=\"_self\">svo::Reprojector::Statistics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_115_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\" target=\"_self\">svo::StereoTriangulation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_116_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\" target=\"_self\">svo::StereoTriangulationOptions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_117_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_117_\" class=\"arrow\" onclick=\"toggleFolder('117_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\" target=\"_self\">svo::SvoInterface</a></td><td class=\"desc\">SVO Interface </td></tr>\n<tr id=\"row_117_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\" target=\"_self\">svo::BenchmarkNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_118_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo__ros_1_1SvoNodeBase.html\" target=\"_self\">svo_ros::SvoNodeBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_119_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_119_\" class=\"arrow\" onclick=\"toggleFolder('119_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>Test</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_119_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classCamerasTest.html\" target=\"_self\">CamerasTest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_119_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classMedianFilterTest.html\" target=\"_self\">MedianFilterTest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_120_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_120_\" class=\"arrow\" onclick=\"toggleFolder('120_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>TestCase</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_120_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\" target=\"_self\">vikit_py.test_transformations.TestTransformations</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_121_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\" target=\"_self\">evo_utils.tf_to_camera_markers.tfToCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_122_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1ThreadSafeQueue.html\" target=\"_self\">rpg_common::ThreadSafeQueue&lt; DataType &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_123_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1Timer.html\" target=\"_self\">vk::Timer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_124_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\" target=\"_self\">trigger_map_expansion.TriggerMapExpansion</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_125_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1UserInputThread.html\" target=\"_self\">vk::UserInputThread</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_126_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\" target=\"_self\">svo::ViNodeState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_127_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1Visualizer.html\" target=\"_self\">svo::Visualizer</a></td><td class=\"desc\">Publish visualisation messages to ROS </td></tr>\n<tr id=\"row_128_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classmotion__correction_1_1WarpUpdateParams.html\" target=\"_self\">motion_correction::WarpUpdateParams</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_129_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_129_\" class=\"arrow\" onclick=\"toggleFolder('129_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1WeightFunction.html\" target=\"_self\">vk::solver::WeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_129_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\" target=\"_self\">vk::solver::HuberWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_129_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\" target=\"_self\">vk::solver::TukeyWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_129_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\" target=\"_self\">vk::solver::UnitWeightFunction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_130_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_130_\" class=\"arrow\" onclick=\"toggleFolder('130_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1WorkerBase.html\" target=\"_self\">rpg_common::WorkerBase</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_130_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrpg__common_1_1BatchWorker.html\" target=\"_self\">rpg_common::BatchWorker&lt; DataType &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_131_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\" target=\"_self\">aslam::common::ZeroNumericalDiff&lt; _Functor, mode &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_132_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\" target=\"_self\">svo::patch_score::ZMSSD&lt; HALF_PATCH_SIZE &gt;</a></td><td class=\"desc\">Zero Mean Sum of Squared Differences Cost </td></tr>\n<tr id=\"row_133_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_133_\" class=\"arrow\" onclick=\"toggleFolder('133_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>Plugin</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_133_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__evo_1_1evo_1_1Evo.html\" target=\"_self\">rqt_evo.evo.Evo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_133_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__svo_1_1svo_1_1Svo.html\" target=\"_self\">rqt_svo.svo.Svo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_134_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_134_\" class=\"arrow\" onclick=\"toggleFolder('134_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>QWidget</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_134_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\" target=\"_self\">rqt_evo.evo_widget.EvoWidget</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_134_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\" target=\"_self\">rqt_svo.svo_widget.SvoWidget</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/homography_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/homography.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">homography.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * homography.cpp</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> * Adaptation of PTAM-GPL HomographyInit class.</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> * https://github.com/Oxford-PTAM/PTAM-GPL</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> * Licence: GPLv3</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> * Copyright 2008 Isis Innovation Limited</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\"> *  Created on: Sep 2, 2012</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\"> *      by: cforster</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\"> * This class implements the homography decomposition of Faugeras and Lustman&#39;s</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\"> * 1988 tech report. Code converted to Eigen from PTAM.</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_HOMOGRAPHY_H_</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#define VIKIT_HOMOGRAPHY_H_</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">using</span> BearingVector = Eigen::Vector3d;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">using</span> Bearings = Eigen::Matrix&lt;double, 3, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1Homography.html\">   27</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structvk_1_1Homography.html\">Homography</a></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;{</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  Eigen::Vector3d t_cur_ref;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  Eigen::Matrix3d R_cur_ref;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  Eigen::Vector3d n_cur;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">double</span> score;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <a class=\"code\" href=\"structvk_1_1Homography.html\">Homography</a>()</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    : t_cur_ref()</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    , R_cur_ref()</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    , n_cur()</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    , score(0.0)</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  {}</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;};</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<a class=\"code\" href=\"structvk_1_1Homography.html\">Homography</a> estimateHomography(</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keyword\">const</span> Bearings&amp; f_cur,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> Bearings&amp; f_ref,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> focal_length,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reproj_error_thresh,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> min_num_inliers);</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_HOMOGRAPHY_H_</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structvk_1_1Homography_html\"><div class=\"ttname\"><a href=\"structvk_1_1Homography.html\">vk::Homography</a></div><div class=\"ttdef\"><b>Definition:</b> homography.h:27</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/homography__decomp_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/homography_decomp.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">homography_decomp.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*M///////////////////////////////////////////////////////////////////////////////////////</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> // This is a homography decomposition implementation contributed to OpenCV</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> // by Samson Yilma. It implements the homography decomposition algorithm</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> // descriped in the research report:</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> // Malis, E and Vargas, M, &quot;Deeper understanding of the homography decomposition</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\"> // for vision-based control&quot;, Research Report 6303, INRIA (2007)</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\"> //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\"> //  By downloading, copying, installing or using the software you agree to this license.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\"> //  If you do not agree to this license, do not download, install,</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\"> //  copy or use the software.</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\"> //                           License Agreement</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\"> //                For Open Source Computer Vision Library</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\"> // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved.</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\"> // Third party copyrights are property of their respective owners.</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\"> // Redistribution and use in source and binary forms, with or without modification,</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"comment\"> // are permitted provided that the following conditions are met:</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\"> //   * Redistribution&#39;s of source code must retain the above copyright notice,</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"comment\"> //     this list of conditions and the following disclaimer.</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"comment\"> //   * Redistribution&#39;s in binary form must reproduce the above copyright notice,</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"comment\"> //     this list of conditions and the following disclaimer in the documentation</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"comment\"> //     and/or other materials provided with the distribution.</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"comment\"> //   * The name of the copyright holders may not be used to endorse or promote products</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"comment\"> //     derived from this software without specific prior written permission.</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"comment\"> // This software is provided by the copyright holders and contributors &quot;as is&quot; and</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"comment\"> // any express or implied warranties, including, but not limited to, the implied</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"comment\"> // warranties of merchantability and fitness for a particular purpose are disclaimed.</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"comment\"> // In no event shall the Intel Corporation or contributors be liable for any direct,</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"comment\"> // indirect, incidental, special, exemplary, or consequential damages</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"comment\"> // (including, but not limited to, procurement of substitute goods or services;</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"comment\"> // loss of use, data, or profits; or business interruption) however caused</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"comment\"> // and on any theory of liability, whether in contract, strict liability,</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"comment\"> // or tort (including negligence or otherwise) arising in any way out of</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"comment\"> // the use of this software, even if advised of the possibility of such damage.</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"comment\"> //</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"comment\"> //M*/</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacecv.html\">cv</a></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;{</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;<span class=\"keyword\">namespace </span>HomographyDecomposition</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;{</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"comment\">//struct to hold solutions of homography decomposition</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">   59</a></span>&#160;<span class=\"keyword\">typedef</span> <span class=\"keyword\">struct </span><a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">_CameraMotion</a> {</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">   60</a></span>&#160;    cv::Matx33d <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>; </div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">   61</a></span>&#160;    cv::Vec3d <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>; </div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">   62</a></span>&#160;    cv::Vec3d <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a>; </div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;} <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a>;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> signd(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> x)</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;{</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keywordflow\">return</span> ( x &gt;= 0 ? 1 : -1 );</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;}</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">   70</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a> {</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a>() {}</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a>() {}</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> decomposeHomography(<span class=\"keyword\">const</span> cv::Matx33d&amp; H, <span class=\"keyword\">const</span> cv::Matx33d&amp; K,</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;                                     std::vector&lt;CameraMotion&gt;&amp; camMotions);</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keywordtype\">bool</span> isRotationValid(<span class=\"keyword\">const</span> cv::Matx33d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>,  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> epsilon=0.01);</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordtype\">bool</span> passesSameSideOfPlaneConstraint(<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a>&amp; motion);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> decompose(std::vector&lt;CameraMotion&gt;&amp; camMotions) = 0;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;    <span class=\"keyword\">const</span> cv::Matx33d&amp; getHnorm()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;        <span class=\"keywordflow\">return</span> _Hnorm;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    }</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    cv::Matx33d normalize(<span class=\"keyword\">const</span> cv::Matx33d&amp; H, <span class=\"keyword\">const</span> cv::Matx33d&amp; K);</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keywordtype\">void</span> removeScale();</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    cv::Matx33d _Hnorm;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;};</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">   92</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a> {</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a>():<a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a>() {}</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">HomographyDecompZhang</a>() {}</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> decompose(std::vector&lt;CameraMotion&gt;&amp; camMotions);</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"keywordtype\">bool</span> findMotionFrom_tstar_n(<span class=\"keyword\">const</span> cv::Vec3d&amp; tstar, <span class=\"keyword\">const</span> cv::Vec3d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>, <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a>&amp; motion);</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;};</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">  103</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a> {</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a>():<a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">HomographyDecomp</a>() {}</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a>() {}</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> decompose(std::vector&lt;CameraMotion&gt;&amp; camMotions);</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"keywordtype\">double</span> oppositeOfMinor(<span class=\"keyword\">const</span> cv::Matx33d&amp; M, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> row, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> col);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keywordtype\">void</span> findRmatFrom_tstar_n(<span class=\"keyword\">const</span> cv::Vec3d&amp; tstar, <span class=\"keyword\">const</span> cv::Vec3d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> v, cv::Matx33d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>);</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;};</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;<span class=\"comment\">// normalizes homography with intrinsic camera parameters</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;Matx33d HomographyDecomp::normalize(<span class=\"keyword\">const</span> Matx33d&amp; H, <span class=\"keyword\">const</span> Matx33d&amp; K)</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;{</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    <span class=\"keywordflow\">return</span> K.inv() * H * K;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;}</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;<span class=\"keywordtype\">void</span> HomographyDecomp::removeScale()</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;{</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    Mat W;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;    SVD::compute(_Hnorm, W);</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    _Hnorm = _Hnorm * (1.0/W.at&lt;<span class=\"keywordtype\">double</span>&gt;(1));</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;}</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">  131</a></span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">HomographyDecomp::isRotationValid</a>(<span class=\"keyword\">const</span> Matx33d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> epsilon)</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;{</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    Matx33d RtR = R.t() * <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    Matx33d I(1,0,0, 0,1,0, 0,0,1);</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keywordflow\">if</span> (norm(RtR, I, NORM_INF) &gt; epsilon)</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;        <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    <span class=\"keywordflow\">return</span> (fabs(determinant(R) - 1.0) &lt; epsilon);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;}</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;<span class=\"keywordtype\">bool</span> HomographyDecomp::passesSameSideOfPlaneConstraint(<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a>&amp; motion)</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;{</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    <span class=\"keyword\">typedef</span> Matx&lt;double, 1, 1&gt; Matx11d;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    Matx31d <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a> = Matx31d(motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a>);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    Matx31d <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a> = Matx31d(motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>);</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    Matx11d proj = n.t() * motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>.t() * <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a>;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keywordflow\">if</span> ( (1 + proj(0, 0) ) &lt;= 0 )</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;        <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;}</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">  152</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">HomographyDecomp::decomposeHomography</a>(<span class=\"keyword\">const</span> Matx33d&amp; H, <span class=\"keyword\">const</span> cv::Matx33d&amp; K,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;                                           std::vector&lt;CameraMotion&gt;&amp; camMotions)</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;{</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"comment\">//normalize homography matrix with intrinsic camera matrix</span></div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    _Hnorm = normalize(H, K);</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;    <span class=\"comment\">//remove scale of the normalized homography</span></div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;    removeScale();</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;    <span class=\"comment\">//apply decomposition</span></div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;    decompose(camMotions);</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;}</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;<span class=\"comment\">/* function computes R&amp;t from tstar, and plane normal(n) using</span></div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;<span class=\"comment\"> R = H * inv(I + tstar*transpose(n) );</span></div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;<span class=\"comment\"> t = R * tstar;</span></div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;<span class=\"comment\"> returns true if computed R&amp;t is a valid solution</span></div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;<span class=\"keywordtype\">bool</span> HomographyDecompZhang::findMotionFrom_tstar_n(<span class=\"keyword\">const</span> cv::Vec3d&amp; tstar, <span class=\"keyword\">const</span> cv::Vec3d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>, <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a>&amp; motion)</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;{</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;    Matx31d tstar_m = Mat(tstar);</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;    Matx31d n_m = Mat(n);</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;    Matx33d temp = tstar_m * n_m.t();</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;    temp(0, 0) += 1.0;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;    temp(1, 1) += 1.0;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    temp(2, 2) += 1.0;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a> = getHnorm() * temp.inv();</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;    motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a> = motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a> * tstar;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;    motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a> = <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;    <span class=\"keywordflow\">return</span> passesSameSideOfPlaneConstraint(motion);</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;}</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">  182</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">HomographyDecompZhang::decompose</a>(std::vector&lt;CameraMotion&gt;&amp; camMotions)</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;{</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    Mat W, U, Vt;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;    SVD::compute(getHnorm(), W, U, Vt);</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    <span class=\"keywordtype\">double</span> lambda1=W.at&lt;<span class=\"keywordtype\">double</span>&gt;(0);</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;    <span class=\"keywordtype\">double</span> lambda3=W.at&lt;<span class=\"keywordtype\">double</span>&gt;(2);</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;    <span class=\"keywordtype\">double</span> lambda1m3 =  (lambda1-lambda3);</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;    <span class=\"keywordtype\">double</span> lambda1m3_2 = lambda1m3*lambda1m3;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    <span class=\"keywordtype\">double</span> lambda1t3 = lambda1*lambda3;</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;    <span class=\"keywordtype\">double</span> t1 = 1.0/(2.0*lambda1t3);</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;    <span class=\"keywordtype\">double</span> t2 = sqrt(1.0+4.0*lambda1t3/lambda1m3_2);</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;    <span class=\"keywordtype\">double</span> t12 = t1*t2;</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;    <span class=\"keywordtype\">double</span> e1 = -t1 + t12; <span class=\"comment\">//t1*(-1.0f + t2 );</span></div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;    <span class=\"keywordtype\">double</span> e3 = -t1 - t12; <span class=\"comment\">//t1*(-1.0f - t2);</span></div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;    <span class=\"keywordtype\">double</span> e1_2 = e1*e1;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;    <span class=\"keywordtype\">double</span> e3_2 = e3*e3;</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;    <span class=\"keywordtype\">double</span> nv1p = sqrt(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0);</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;    <span class=\"keywordtype\">double</span> nv3p = sqrt(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0);</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;    <span class=\"keywordtype\">double</span> v1p[3], v3p[3];</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;    v1p[0]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(0)*nv1p, v1p[1]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(1)*nv1p, v1p[2]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(2)*nv1p;</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;    v3p[0]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(6)*nv3p, v3p[1]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(7)*nv3p, v3p[2]=Vt.at&lt;<span class=\"keywordtype\">double</span>&gt;(8)*nv3p;</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;    <span class=\"comment\">/*The eight solutions are</span></div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;<span class=\"comment\">     (A): tstar = +- (v1p - v3p)/(e1 -e3), n = +- (e1*v3p - e3*v1p)/(e1-e3)</span></div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;<span class=\"comment\">     (B): tstar = +- (v1p + v3p)/(e1 -e3), n = +- (e1*v3p + e3*v1p)/(e1-e3)</span></div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;<span class=\"comment\">     */</span></div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;    <span class=\"keywordtype\">double</span> v1pmv3p[3], v1ppv3p[3];</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;    <span class=\"keywordtype\">double</span> e1v3me3v1[3], e1v3pe3v1[3];</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;    <span class=\"keywordtype\">double</span> inv_e1me3 = 1.0/(e1-e3);</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> kk=0;kk&lt;3;++kk){</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;        v1pmv3p[kk] = v1p[kk]-v3p[kk];</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;        v1ppv3p[kk] = v1p[kk]+v3p[kk];</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;    }</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> kk=0; kk&lt;3; ++kk){</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;        <span class=\"keywordtype\">double</span> e1v3 = e1*v3p[kk];</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;        <span class=\"keywordtype\">double</span> e3v1=e3*v1p[kk];</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;        e1v3me3v1[kk] = e1v3-e3v1;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;        e1v3pe3v1[kk] = e1v3+e3v1;</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;    }</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;    Vec3d tstar_p, tstar_n;</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;    Vec3d n_p, n_n;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> kk=0; kk&lt;3; ++kk) {</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;        tstar_p[kk] = v1pmv3p[kk]*inv_e1me3;</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;        tstar_n[kk] = -tstar_p[kk];</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;        n_p[kk] = e1v3me3v1[kk]*inv_e1me3;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;        n_n[kk] = -n_p[kk];</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;    }</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;    <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> cmotion;</div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\">  240</span>&#160;    <span class=\"comment\">//(A) Four different combinations for solution A</span></div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;    <span class=\"comment\">// (i)  (+, +)</span></div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_p, n_p, cmotion))</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;    <span class=\"comment\">// (ii)  (+, -)</span></div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_p, n_n, cmotion))</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;    <span class=\"comment\">// (iii)  (-, +)</span></div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_n, n_p, cmotion))</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;    <span class=\"comment\">// (iv)  (-, -)</span></div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_n, n_n, cmotion))</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> kk=0;kk&lt;3;++kk){</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;        tstar_p[kk] = v1ppv3p[kk]*inv_e1me3;</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;        tstar_n[kk] = -tstar_p[kk];</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;        n_p[kk] = e1v3pe3v1[kk]*inv_e1me3;</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;        n_n[kk] = -n_p[kk];</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;    }</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;    <span class=\"comment\">//(B) Four different combinations for solution B</span></div><div class=\"line\"><a name=\"l00266\"></a><span class=\"lineno\">  266</span>&#160;    <span class=\"comment\">// (i)  (+, +)</span></div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\">  267</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_p, n_p, cmotion))</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;    <span class=\"comment\">// (ii)  (+, -)</span></div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\">  271</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_p, n_n, cmotion))</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;    <span class=\"comment\">// (iii)  (-, +)</span></div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_n, n_p, cmotion))</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;    <span class=\"comment\">// (iv)  (-, -)</span></div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;    <span class=\"keywordflow\">if</span> (findMotionFrom_tstar_n(tstar_n, n_n, cmotion))</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;        camMotions.push_back(cmotion);</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;}</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;<span class=\"keywordtype\">double</span> HomographyDecompInria::oppositeOfMinor(<span class=\"keyword\">const</span> Matx33d&amp; M, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> row, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> col)</div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;{</div><div class=\"line\"><a name=\"l00285\"></a><span class=\"lineno\">  285</span>&#160;    <span class=\"keywordtype\">int</span> x1 = col == 0 ? 1 : 0;</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;    <span class=\"keywordtype\">int</span> x2 = col == 2 ? 1 : 2;</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;    <span class=\"keywordtype\">int</span> y1 = row == 0 ? 1 : 0;</div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;    <span class=\"keywordtype\">int</span> y2 = row == 2 ? 1 : 2;</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;</div><div class=\"line\"><a name=\"l00290\"></a><span class=\"lineno\">  290</span>&#160;    <span class=\"keywordflow\">return</span> (M(y1, x2) * M(y2, x1) - M(y1, x1) * M(y2, x2));</div><div class=\"line\"><a name=\"l00291\"></a><span class=\"lineno\">  291</span>&#160;}</div><div class=\"line\"><a name=\"l00292\"></a><span class=\"lineno\">  292</span>&#160;</div><div class=\"line\"><a name=\"l00293\"></a><span class=\"lineno\">  293</span>&#160;<span class=\"comment\">//computes R = H( I - (2/v)*te_star*ne_t )</span></div><div class=\"line\"><a name=\"l00294\"></a><span class=\"lineno\">  294</span>&#160;<span class=\"keywordtype\">void</span> HomographyDecompInria::findRmatFrom_tstar_n(<span class=\"keyword\">const</span> cv::Vec3d&amp; tstar, <span class=\"keyword\">const</span> cv::Vec3d&amp; n, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> v, cv::Matx33d&amp; <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>)</div><div class=\"line\"><a name=\"l00295\"></a><span class=\"lineno\">  295</span>&#160;{</div><div class=\"line\"><a name=\"l00296\"></a><span class=\"lineno\">  296</span>&#160;    Matx31d tstar_m = Matx31d(tstar);</div><div class=\"line\"><a name=\"l00297\"></a><span class=\"lineno\">  297</span>&#160;    Matx31d n_m = Matx31d(n);</div><div class=\"line\"><a name=\"l00298\"></a><span class=\"lineno\">  298</span>&#160;    Matx33d I(1.0, 0.0, 0.0,</div><div class=\"line\"><a name=\"l00299\"></a><span class=\"lineno\">  299</span>&#160;              0.0, 1.0, 0.0,</div><div class=\"line\"><a name=\"l00300\"></a><span class=\"lineno\">  300</span>&#160;              0.0, 0.0, 1.0);</div><div class=\"line\"><a name=\"l00301\"></a><span class=\"lineno\">  301</span>&#160;</div><div class=\"line\"><a name=\"l00302\"></a><span class=\"lineno\">  302</span>&#160;    R = getHnorm() * (I - (2/v) * tstar_m * n_m.t() );</div><div class=\"line\"><a name=\"l00303\"></a><span class=\"lineno\">  303</span>&#160;}</div><div class=\"line\"><a name=\"l00304\"></a><span class=\"lineno\">  304</span>&#160;</div><div class=\"line\"><a name=\"l00305\"></a><span class=\"lineno\"><a class=\"line\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">  305</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">HomographyDecompInria::decompose</a>(std::vector&lt;CameraMotion&gt;&amp; camMotions)</div><div class=\"line\"><a name=\"l00306\"></a><span class=\"lineno\">  306</span>&#160;{</div><div class=\"line\"><a name=\"l00307\"></a><span class=\"lineno\">  307</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> epsilon = 0.001;</div><div class=\"line\"><a name=\"l00308\"></a><span class=\"lineno\">  308</span>&#160;    Matx33d S;</div><div class=\"line\"><a name=\"l00309\"></a><span class=\"lineno\">  309</span>&#160;</div><div class=\"line\"><a name=\"l00310\"></a><span class=\"lineno\">  310</span>&#160;    <span class=\"comment\">//S = H&#39;H - I</span></div><div class=\"line\"><a name=\"l00311\"></a><span class=\"lineno\">  311</span>&#160;    S = getHnorm().t() * getHnorm();</div><div class=\"line\"><a name=\"l00312\"></a><span class=\"lineno\">  312</span>&#160;    S(0, 0) -= 1.0;</div><div class=\"line\"><a name=\"l00313\"></a><span class=\"lineno\">  313</span>&#160;    S(1, 1) -= 1.0;</div><div class=\"line\"><a name=\"l00314\"></a><span class=\"lineno\">  314</span>&#160;    S(2, 2) -= 1.0;</div><div class=\"line\"><a name=\"l00315\"></a><span class=\"lineno\">  315</span>&#160;</div><div class=\"line\"><a name=\"l00316\"></a><span class=\"lineno\">  316</span>&#160;    <span class=\"comment\">//check if H is rotation matrix</span></div><div class=\"line\"><a name=\"l00317\"></a><span class=\"lineno\">  317</span>&#160;    <span class=\"keywordflow\">if</span>( norm(S, NORM_INF) &lt; epsilon) {</div><div class=\"line\"><a name=\"l00318\"></a><span class=\"lineno\">  318</span>&#160;        <a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">CameraMotion</a> motion;</div><div class=\"line\"><a name=\"l00319\"></a><span class=\"lineno\">  319</span>&#160;        motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a> = Matx33d(getHnorm());</div><div class=\"line\"><a name=\"l00320\"></a><span class=\"lineno\">  320</span>&#160;        motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a> = Vec3d(0, 0, 0);</div><div class=\"line\"><a name=\"l00321\"></a><span class=\"lineno\">  321</span>&#160;        motion.<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a> = Vec3d(0, 0, 0);</div><div class=\"line\"><a name=\"l00322\"></a><span class=\"lineno\">  322</span>&#160;        camMotions.push_back(motion);</div><div class=\"line\"><a name=\"l00323\"></a><span class=\"lineno\">  323</span>&#160;        <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00324\"></a><span class=\"lineno\">  324</span>&#160;    }</div><div class=\"line\"><a name=\"l00325\"></a><span class=\"lineno\">  325</span>&#160;</div><div class=\"line\"><a name=\"l00327\"></a><span class=\"lineno\">  327</span>&#160;    Vec3d npa, npb;</div><div class=\"line\"><a name=\"l00328\"></a><span class=\"lineno\">  328</span>&#160;</div><div class=\"line\"><a name=\"l00329\"></a><span class=\"lineno\">  329</span>&#160;    <span class=\"keywordtype\">double</span> M00 = oppositeOfMinor(S, 0, 0);</div><div class=\"line\"><a name=\"l00330\"></a><span class=\"lineno\">  330</span>&#160;    <span class=\"keywordtype\">double</span> M11 = oppositeOfMinor(S, 1, 1);</div><div class=\"line\"><a name=\"l00331\"></a><span class=\"lineno\">  331</span>&#160;    <span class=\"keywordtype\">double</span> M22 = oppositeOfMinor(S, 2, 2);</div><div class=\"line\"><a name=\"l00332\"></a><span class=\"lineno\">  332</span>&#160;</div><div class=\"line\"><a name=\"l00333\"></a><span class=\"lineno\">  333</span>&#160;    <span class=\"keywordtype\">double</span> rtM00 = sqrt(M00);</div><div class=\"line\"><a name=\"l00334\"></a><span class=\"lineno\">  334</span>&#160;    <span class=\"keywordtype\">double</span> rtM11 = sqrt(M11);</div><div class=\"line\"><a name=\"l00335\"></a><span class=\"lineno\">  335</span>&#160;    <span class=\"keywordtype\">double</span> rtM22 = sqrt(M22);</div><div class=\"line\"><a name=\"l00336\"></a><span class=\"lineno\">  336</span>&#160;</div><div class=\"line\"><a name=\"l00337\"></a><span class=\"lineno\">  337</span>&#160;    <span class=\"keywordtype\">double</span> M01 = oppositeOfMinor(S, 0, 1);</div><div class=\"line\"><a name=\"l00338\"></a><span class=\"lineno\">  338</span>&#160;    <span class=\"keywordtype\">double</span> M12 = oppositeOfMinor(S, 1, 2);</div><div class=\"line\"><a name=\"l00339\"></a><span class=\"lineno\">  339</span>&#160;    <span class=\"keywordtype\">double</span> M02 = oppositeOfMinor(S, 0, 2);</div><div class=\"line\"><a name=\"l00340\"></a><span class=\"lineno\">  340</span>&#160;</div><div class=\"line\"><a name=\"l00341\"></a><span class=\"lineno\">  341</span>&#160;    <span class=\"keywordtype\">int</span> e12 = signd(M12);</div><div class=\"line\"><a name=\"l00342\"></a><span class=\"lineno\">  342</span>&#160;    <span class=\"keywordtype\">int</span> e02 = signd(M02);</div><div class=\"line\"><a name=\"l00343\"></a><span class=\"lineno\">  343</span>&#160;    <span class=\"keywordtype\">int</span> e01 = signd(M01);</div><div class=\"line\"><a name=\"l00344\"></a><span class=\"lineno\">  344</span>&#160;</div><div class=\"line\"><a name=\"l00345\"></a><span class=\"lineno\">  345</span>&#160;    <span class=\"keywordtype\">double</span> nS00 = std::abs(S(0, 0));</div><div class=\"line\"><a name=\"l00346\"></a><span class=\"lineno\">  346</span>&#160;    <span class=\"keywordtype\">double</span> nS11 = std::abs(S(1, 1));</div><div class=\"line\"><a name=\"l00347\"></a><span class=\"lineno\">  347</span>&#160;    <span class=\"keywordtype\">double</span> nS22 = std::abs(S(2, 2));</div><div class=\"line\"><a name=\"l00348\"></a><span class=\"lineno\">  348</span>&#160;</div><div class=\"line\"><a name=\"l00349\"></a><span class=\"lineno\">  349</span>&#160;    <span class=\"comment\">//find max( |Sii| ), i=0, 1, 2</span></div><div class=\"line\"><a name=\"l00350\"></a><span class=\"lineno\">  350</span>&#160;    <span class=\"keywordtype\">int</span> indx = 0;</div><div class=\"line\"><a name=\"l00351\"></a><span class=\"lineno\">  351</span>&#160;    <span class=\"keywordflow\">if</span>(nS00 &lt; nS11){</div><div class=\"line\"><a name=\"l00352\"></a><span class=\"lineno\">  352</span>&#160;        indx = 1;</div><div class=\"line\"><a name=\"l00353\"></a><span class=\"lineno\">  353</span>&#160;        <span class=\"keywordflow\">if</span>( nS11 &lt; nS22 )</div><div class=\"line\"><a name=\"l00354\"></a><span class=\"lineno\">  354</span>&#160;            indx = 2;</div><div class=\"line\"><a name=\"l00355\"></a><span class=\"lineno\">  355</span>&#160;    }</div><div class=\"line\"><a name=\"l00356\"></a><span class=\"lineno\">  356</span>&#160;    <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00357\"></a><span class=\"lineno\">  357</span>&#160;        <span class=\"keywordflow\">if</span>(nS00 &lt; nS22 )</div><div class=\"line\"><a name=\"l00358\"></a><span class=\"lineno\">  358</span>&#160;            indx = 2;</div><div class=\"line\"><a name=\"l00359\"></a><span class=\"lineno\">  359</span>&#160;    }</div><div class=\"line\"><a name=\"l00360\"></a><span class=\"lineno\">  360</span>&#160;</div><div class=\"line\"><a name=\"l00361\"></a><span class=\"lineno\">  361</span>&#160;    <span class=\"keywordflow\">switch</span> (indx) {</div><div class=\"line\"><a name=\"l00362\"></a><span class=\"lineno\">  362</span>&#160;        <span class=\"keywordflow\">case</span> 0:</div><div class=\"line\"><a name=\"l00363\"></a><span class=\"lineno\">  363</span>&#160;            npa[0] = S(0, 0),               npb[0] = S(0, 0);</div><div class=\"line\"><a name=\"l00364\"></a><span class=\"lineno\">  364</span>&#160;            npa[1] = S(0, 1) + rtM22,       npb[1] = S(0, 1) - rtM22;</div><div class=\"line\"><a name=\"l00365\"></a><span class=\"lineno\">  365</span>&#160;            npa[2] = S(0, 2) + e12 * rtM11, npb[2] = S(0, 2) - e12 * rtM11;</div><div class=\"line\"><a name=\"l00366\"></a><span class=\"lineno\">  366</span>&#160;            <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00367\"></a><span class=\"lineno\">  367</span>&#160;        <span class=\"keywordflow\">case</span> 1:</div><div class=\"line\"><a name=\"l00368\"></a><span class=\"lineno\">  368</span>&#160;            npa[0] = S(0, 1) + rtM22,       npb[0] = S(0, 1) - rtM22;</div><div class=\"line\"><a name=\"l00369\"></a><span class=\"lineno\">  369</span>&#160;            npa[1] = S(1, 1),               npb[1] = S(1, 1);</div><div class=\"line\"><a name=\"l00370\"></a><span class=\"lineno\">  370</span>&#160;            npa[2] = S(1, 2) - e02 * rtM00, npb[2] = S(1, 2) + e02 * rtM00;</div><div class=\"line\"><a name=\"l00371\"></a><span class=\"lineno\">  371</span>&#160;            <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00372\"></a><span class=\"lineno\">  372</span>&#160;        <span class=\"keywordflow\">case</span> 2:</div><div class=\"line\"><a name=\"l00373\"></a><span class=\"lineno\">  373</span>&#160;            npa[0] = S(0, 2) + e01 * rtM11, npb[0] = S(0, 2) - e01 * rtM11;</div><div class=\"line\"><a name=\"l00374\"></a><span class=\"lineno\">  374</span>&#160;            npa[1] = S(1, 2) + rtM00,       npb[1] = S(1, 2) - rtM00;</div><div class=\"line\"><a name=\"l00375\"></a><span class=\"lineno\">  375</span>&#160;            npa[2] = S(2, 2),               npb[2] = S(2, 2);</div><div class=\"line\"><a name=\"l00376\"></a><span class=\"lineno\">  376</span>&#160;            <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00377\"></a><span class=\"lineno\">  377</span>&#160;        <span class=\"keywordflow\">default</span>:</div><div class=\"line\"><a name=\"l00378\"></a><span class=\"lineno\">  378</span>&#160;            <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00379\"></a><span class=\"lineno\">  379</span>&#160;    }</div><div class=\"line\"><a name=\"l00380\"></a><span class=\"lineno\">  380</span>&#160;</div><div class=\"line\"><a name=\"l00381\"></a><span class=\"lineno\">  381</span>&#160;    <span class=\"keywordtype\">double</span> traceS = S(0, 0) + S(1, 1) + S(2, 2);</div><div class=\"line\"><a name=\"l00382\"></a><span class=\"lineno\">  382</span>&#160;    <span class=\"keywordtype\">double</span> v = 2.0 * sqrt(1 + traceS - M00 - M11 - M22);</div><div class=\"line\"><a name=\"l00383\"></a><span class=\"lineno\">  383</span>&#160;</div><div class=\"line\"><a name=\"l00384\"></a><span class=\"lineno\">  384</span>&#160;    <span class=\"keywordtype\">double</span> ESii = signd(S(indx, indx)) ;</div><div class=\"line\"><a name=\"l00385\"></a><span class=\"lineno\">  385</span>&#160;    <span class=\"keywordtype\">double</span> r_2 = 2 + traceS + v;</div><div class=\"line\"><a name=\"l00386\"></a><span class=\"lineno\">  386</span>&#160;    <span class=\"keywordtype\">double</span> nt_2 = 2 + traceS - v;</div><div class=\"line\"><a name=\"l00387\"></a><span class=\"lineno\">  387</span>&#160;</div><div class=\"line\"><a name=\"l00388\"></a><span class=\"lineno\">  388</span>&#160;    <span class=\"keywordtype\">double</span> r = sqrt(r_2);</div><div class=\"line\"><a name=\"l00389\"></a><span class=\"lineno\">  389</span>&#160;    <span class=\"keywordtype\">double</span> n_t = sqrt(nt_2);</div><div class=\"line\"><a name=\"l00390\"></a><span class=\"lineno\">  390</span>&#160;</div><div class=\"line\"><a name=\"l00391\"></a><span class=\"lineno\">  391</span>&#160;    Vec3d na = npa / norm(npa);</div><div class=\"line\"><a name=\"l00392\"></a><span class=\"lineno\">  392</span>&#160;    Vec3d nb = npb / norm(npb);</div><div class=\"line\"><a name=\"l00393\"></a><span class=\"lineno\">  393</span>&#160;</div><div class=\"line\"><a name=\"l00394\"></a><span class=\"lineno\">  394</span>&#160;    <span class=\"keywordtype\">double</span> half_nt = 0.5 * n_t;</div><div class=\"line\"><a name=\"l00395\"></a><span class=\"lineno\">  395</span>&#160;    <span class=\"keywordtype\">double</span> esii_t_r = ESii * r;</div><div class=\"line\"><a name=\"l00396\"></a><span class=\"lineno\">  396</span>&#160;</div><div class=\"line\"><a name=\"l00397\"></a><span class=\"lineno\">  397</span>&#160;    Vec3d ta_star = half_nt * (esii_t_r * nb - n_t * na);</div><div class=\"line\"><a name=\"l00398\"></a><span class=\"lineno\">  398</span>&#160;    Vec3d tb_star = half_nt * (esii_t_r * na - n_t * nb);</div><div class=\"line\"><a name=\"l00399\"></a><span class=\"lineno\">  399</span>&#160;</div><div class=\"line\"><a name=\"l00400\"></a><span class=\"lineno\">  400</span>&#160;    camMotions.resize(4);</div><div class=\"line\"><a name=\"l00401\"></a><span class=\"lineno\">  401</span>&#160;</div><div class=\"line\"><a name=\"l00402\"></a><span class=\"lineno\">  402</span>&#160;    Matx33d Ra, Rb;</div><div class=\"line\"><a name=\"l00403\"></a><span class=\"lineno\">  403</span>&#160;    Vec3d ta, tb;</div><div class=\"line\"><a name=\"l00404\"></a><span class=\"lineno\">  404</span>&#160;</div><div class=\"line\"><a name=\"l00405\"></a><span class=\"lineno\">  405</span>&#160;    <span class=\"comment\">//Ra, ta, na</span></div><div class=\"line\"><a name=\"l00406\"></a><span class=\"lineno\">  406</span>&#160;    findRmatFrom_tstar_n(ta_star, na, v, Ra);</div><div class=\"line\"><a name=\"l00407\"></a><span class=\"lineno\">  407</span>&#160;    ta = Ra * ta_star;</div><div class=\"line\"><a name=\"l00408\"></a><span class=\"lineno\">  408</span>&#160;</div><div class=\"line\"><a name=\"l00409\"></a><span class=\"lineno\">  409</span>&#160;    camMotions[0].R = Ra;</div><div class=\"line\"><a name=\"l00410\"></a><span class=\"lineno\">  410</span>&#160;    camMotions[0].t = ta;</div><div class=\"line\"><a name=\"l00411\"></a><span class=\"lineno\">  411</span>&#160;    camMotions[0].n = na;</div><div class=\"line\"><a name=\"l00412\"></a><span class=\"lineno\">  412</span>&#160;</div><div class=\"line\"><a name=\"l00413\"></a><span class=\"lineno\">  413</span>&#160;    <span class=\"comment\">//Ra, -ta, -na</span></div><div class=\"line\"><a name=\"l00414\"></a><span class=\"lineno\">  414</span>&#160;    camMotions[1].R = Ra;</div><div class=\"line\"><a name=\"l00415\"></a><span class=\"lineno\">  415</span>&#160;    camMotions[1].t = -ta;</div><div class=\"line\"><a name=\"l00416\"></a><span class=\"lineno\">  416</span>&#160;    camMotions[1].n = -na;</div><div class=\"line\"><a name=\"l00417\"></a><span class=\"lineno\">  417</span>&#160;</div><div class=\"line\"><a name=\"l00418\"></a><span class=\"lineno\">  418</span>&#160;    <span class=\"comment\">//Rb, tb, nb</span></div><div class=\"line\"><a name=\"l00419\"></a><span class=\"lineno\">  419</span>&#160;    findRmatFrom_tstar_n(tb_star, nb, v, Rb);</div><div class=\"line\"><a name=\"l00420\"></a><span class=\"lineno\">  420</span>&#160;    tb = Rb * tb_star;</div><div class=\"line\"><a name=\"l00421\"></a><span class=\"lineno\">  421</span>&#160;</div><div class=\"line\"><a name=\"l00422\"></a><span class=\"lineno\">  422</span>&#160;    camMotions[2].R = Rb;</div><div class=\"line\"><a name=\"l00423\"></a><span class=\"lineno\">  423</span>&#160;    camMotions[2].t = tb;</div><div class=\"line\"><a name=\"l00424\"></a><span class=\"lineno\">  424</span>&#160;    camMotions[2].n = nb;</div><div class=\"line\"><a name=\"l00425\"></a><span class=\"lineno\">  425</span>&#160;</div><div class=\"line\"><a name=\"l00426\"></a><span class=\"lineno\">  426</span>&#160;    <span class=\"comment\">//Rb, -tb, -nb</span></div><div class=\"line\"><a name=\"l00427\"></a><span class=\"lineno\">  427</span>&#160;    camMotions[3].R = Rb;</div><div class=\"line\"><a name=\"l00428\"></a><span class=\"lineno\">  428</span>&#160;    camMotions[3].t = -tb;</div><div class=\"line\"><a name=\"l00429\"></a><span class=\"lineno\">  429</span>&#160;    camMotions[3].n = -nb;</div><div class=\"line\"><a name=\"l00430\"></a><span class=\"lineno\">  430</span>&#160;}</div><div class=\"line\"><a name=\"l00431\"></a><span class=\"lineno\">  431</span>&#160;</div><div class=\"line\"><a name=\"l00432\"></a><span class=\"lineno\">  432</span>&#160;} <span class=\"comment\">//namespace HomographyDecomposition</span></div><div class=\"line\"><a name=\"l00433\"></a><span class=\"lineno\">  433</span>&#160;</div><div class=\"line\"><a name=\"l00434\"></a><span class=\"lineno\">  434</span>&#160;<span class=\"comment\">// function decomposes image-to-image homography to rotation and translation matrices</span></div><div class=\"line\"><a name=\"l00435\"></a><span class=\"lineno\">  435</span>&#160;<span class=\"keywordtype\">int</span> decomposeHomographyMat(InputArray _H,</div><div class=\"line\"><a name=\"l00436\"></a><span class=\"lineno\">  436</span>&#160;                       InputArray _K,</div><div class=\"line\"><a name=\"l00437\"></a><span class=\"lineno\">  437</span>&#160;                       OutputArrayOfArrays _rotations,</div><div class=\"line\"><a name=\"l00438\"></a><span class=\"lineno\">  438</span>&#160;                       OutputArrayOfArrays _translations,</div><div class=\"line\"><a name=\"l00439\"></a><span class=\"lineno\">  439</span>&#160;                       OutputArrayOfArrays _normals)</div><div class=\"line\"><a name=\"l00440\"></a><span class=\"lineno\">  440</span>&#160;{</div><div class=\"line\"><a name=\"l00441\"></a><span class=\"lineno\">  441</span>&#160;    <span class=\"keyword\">using namespace </span><a class=\"code\" href=\"namespacestd.html\">std</a>;</div><div class=\"line\"><a name=\"l00442\"></a><span class=\"lineno\">  442</span>&#160;    <span class=\"keyword\">using namespace </span>HomographyDecomposition;</div><div class=\"line\"><a name=\"l00443\"></a><span class=\"lineno\">  443</span>&#160;</div><div class=\"line\"><a name=\"l00444\"></a><span class=\"lineno\">  444</span>&#160;    Mat H = _H.getMat().reshape(1, 3);</div><div class=\"line\"><a name=\"l00445\"></a><span class=\"lineno\">  445</span>&#160;    CV_Assert(H.cols == 3 &amp;&amp; H.rows == 3);</div><div class=\"line\"><a name=\"l00446\"></a><span class=\"lineno\">  446</span>&#160;</div><div class=\"line\"><a name=\"l00447\"></a><span class=\"lineno\">  447</span>&#160;    Mat K = _K.getMat().reshape(1, 3);</div><div class=\"line\"><a name=\"l00448\"></a><span class=\"lineno\">  448</span>&#160;    CV_Assert(K.cols == 3 &amp;&amp; K.rows == 3);</div><div class=\"line\"><a name=\"l00449\"></a><span class=\"lineno\">  449</span>&#160;</div><div class=\"line\"><a name=\"l00450\"></a><span class=\"lineno\">  450</span>&#160;    unique_ptr&lt;HomographyDecomp&gt; hdecomp(<span class=\"keyword\">new</span> <a class=\"code\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">HomographyDecompInria</a>);</div><div class=\"line\"><a name=\"l00451\"></a><span class=\"lineno\">  451</span>&#160;</div><div class=\"line\"><a name=\"l00452\"></a><span class=\"lineno\">  452</span>&#160;    vector&lt;CameraMotion&gt; motions;</div><div class=\"line\"><a name=\"l00453\"></a><span class=\"lineno\">  453</span>&#160;    hdecomp-&gt;decomposeHomography(H, K, motions);</div><div class=\"line\"><a name=\"l00454\"></a><span class=\"lineno\">  454</span>&#160;</div><div class=\"line\"><a name=\"l00455\"></a><span class=\"lineno\">  455</span>&#160;    <span class=\"keywordtype\">int</span> nsols = <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">int</span><span class=\"keyword\">&gt;</span>(motions.size());</div><div class=\"line\"><a name=\"l00456\"></a><span class=\"lineno\">  456</span>&#160;    <span class=\"keywordtype\">int</span> depth = CV_64F; <span class=\"comment\">//double precision matrices used in CameraMotion struct</span></div><div class=\"line\"><a name=\"l00457\"></a><span class=\"lineno\">  457</span>&#160;</div><div class=\"line\"><a name=\"l00458\"></a><span class=\"lineno\">  458</span>&#160;    <span class=\"keywordflow\">if</span> (_rotations.needed()) {</div><div class=\"line\"><a name=\"l00459\"></a><span class=\"lineno\">  459</span>&#160;        _rotations.create(nsols, 1, depth);</div><div class=\"line\"><a name=\"l00460\"></a><span class=\"lineno\">  460</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> k = 0; k &lt; nsols; ++k ) {</div><div class=\"line\"><a name=\"l00461\"></a><span class=\"lineno\">  461</span>&#160;            _rotations.getMatRef(k) = Mat(motions[k].<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a>);</div><div class=\"line\"><a name=\"l00462\"></a><span class=\"lineno\">  462</span>&#160;        }</div><div class=\"line\"><a name=\"l00463\"></a><span class=\"lineno\">  463</span>&#160;    }</div><div class=\"line\"><a name=\"l00464\"></a><span class=\"lineno\">  464</span>&#160;</div><div class=\"line\"><a name=\"l00465\"></a><span class=\"lineno\">  465</span>&#160;    <span class=\"keywordflow\">if</span> (_translations.needed()) {</div><div class=\"line\"><a name=\"l00466\"></a><span class=\"lineno\">  466</span>&#160;        _translations.create(nsols, 1, depth);</div><div class=\"line\"><a name=\"l00467\"></a><span class=\"lineno\">  467</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> k = 0; k &lt; nsols; ++k ) {</div><div class=\"line\"><a name=\"l00468\"></a><span class=\"lineno\">  468</span>&#160;            _translations.getMatRef(k) = Mat(motions[k].<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a>);</div><div class=\"line\"><a name=\"l00469\"></a><span class=\"lineno\">  469</span>&#160;        }</div><div class=\"line\"><a name=\"l00470\"></a><span class=\"lineno\">  470</span>&#160;    }</div><div class=\"line\"><a name=\"l00471\"></a><span class=\"lineno\">  471</span>&#160;</div><div class=\"line\"><a name=\"l00472\"></a><span class=\"lineno\">  472</span>&#160;    <span class=\"keywordflow\">if</span> (_normals.needed()) {</div><div class=\"line\"><a name=\"l00473\"></a><span class=\"lineno\">  473</span>&#160;        _normals.create(nsols, 1, depth);</div><div class=\"line\"><a name=\"l00474\"></a><span class=\"lineno\">  474</span>&#160;        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> k = 0; k &lt; nsols; ++k ) {</div><div class=\"line\"><a name=\"l00475\"></a><span class=\"lineno\">  475</span>&#160;            _normals.getMatRef(k) = Mat(motions[k].<a class=\"code\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a>);</div><div class=\"line\"><a name=\"l00476\"></a><span class=\"lineno\">  476</span>&#160;        }</div><div class=\"line\"><a name=\"l00477\"></a><span class=\"lineno\">  477</span>&#160;    }</div><div class=\"line\"><a name=\"l00478\"></a><span class=\"lineno\">  478</span>&#160;</div><div class=\"line\"><a name=\"l00479\"></a><span class=\"lineno\">  479</span>&#160;    <span class=\"keywordflow\">return</span> nsols;</div><div class=\"line\"><a name=\"l00480\"></a><span class=\"lineno\">  480</span>&#160;}</div><div class=\"line\"><a name=\"l00481\"></a><span class=\"lineno\">  481</span>&#160;</div><div class=\"line\"><a name=\"l00482\"></a><span class=\"lineno\">  482</span>&#160;} <span class=\"comment\">//namespace cv</span></div><div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang_html_ad9d5cff3e5c64a5998162a64dc7abe79\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79\">cv::HomographyDecomposition::HomographyDecompZhang::decompose</a></div><div class=\"ttdeci\">virtual void decompose(std::vector&lt; CameraMotion &gt; &amp;camMotions)</div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:182</div></div>\n<div class=\"ttc\" id=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion_html_aa29316accee94975abdb4fadb3e6b1c5\"><div class=\"ttname\"><a href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">cv::HomographyDecomposition::_CameraMotion::R</a></div><div class=\"ttdeci\">cv::Matx33d R</div><div class=\"ttdoc\">rotation matrix </div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:60</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp_html\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\">cv::HomographyDecomposition::HomographyDecomp</a></div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:70</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria_html_a7ca4aa99a328cb296590ad1b59adce61\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61\">cv::HomographyDecomposition::HomographyDecompInria::decompose</a></div><div class=\"ttdeci\">virtual void decompose(std::vector&lt; CameraMotion &gt; &amp;camMotions)</div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:305</div></div>\n<div class=\"ttc\" id=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion_html_a5f876052e07dd5efd69a15db1f99e761\"><div class=\"ttname\"><a href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">cv::HomographyDecomposition::_CameraMotion::t</a></div><div class=\"ttdeci\">cv::Vec3d t</div><div class=\"ttdoc\">translation vector </div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:62</div></div>\n<div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"namespacecv_html\"><div class=\"ttname\"><a href=\"namespacecv.html\">cv</a></div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:52</div></div>\n<div class=\"ttc\" id=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion_html_ab9bc3b2afb4cf0f5250a207e09f3b98b\"><div class=\"ttname\"><a href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">cv::HomographyDecomposition::_CameraMotion::n</a></div><div class=\"ttdeci\">cv::Vec3d n</div><div class=\"ttdoc\">normal of the plane the camera is looking at </div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:61</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp_html_a237e5e1ab93f806ca8f836e5f547792d\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d\">cv::HomographyDecomposition::HomographyDecomp::decomposeHomography</a></div><div class=\"ttdeci\">virtual void decomposeHomography(const cv::Matx33d &amp;H, const cv::Matx33d &amp;K, std::vector&lt; CameraMotion &gt; &amp;camMotions)</div><div class=\"ttdoc\">main routine to decompose homography </div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:152</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria_html\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\">cv::HomographyDecomposition::HomographyDecompInria</a></div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:103</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp_html_a39d8f0efba934cf90855db28944d1ec1\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1\">cv::HomographyDecomposition::HomographyDecomp::isRotationValid</a></div><div class=\"ttdeci\">bool isRotationValid(const cv::Matx33d &amp;R, const double epsilon=0.01)</div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:131</div></div>\n<div class=\"ttc\" id=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion_html\"><div class=\"ttname\"><a href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">cv::HomographyDecomposition::_CameraMotion</a></div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:59</div></div>\n<div class=\"ttc\" id=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang_html\"><div class=\"ttname\"><a href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\">cv::HomographyDecomposition::HomographyDecompZhang</a></div><div class=\"ttdef\"><b>Definition:</b> homography_decomp.h:92</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/img__type__conversion_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/include/vikit/img_type_conversion.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cecfdde874a5fd435c34b7d3c386dfd0.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">img_type_conversion.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/image_encodings.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;cv_bridge/cv_bridge.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>img_type_conversion</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;{</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keywordtype\">int</span> sensorMsgsEncodingToOpenCVType(<span class=\"keyword\">const</span> std::string&amp; encoding);</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;std::string openCVTypeToSensorMsgsEncoding(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> opencv_type);</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;} <span class=\"comment\">// namespace img_type_conversion</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/imu__calibration_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/imu_calibration.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">imu_calibration.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;deque&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html\">   14</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;{</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;ImuCalibration&gt; Ptr;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">   21</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">delay_imu_cam</a> = 0.0;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">   24</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">max_imu_delta_t</a> = 0.01;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">   27</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">gyro_noise_density</a> = 0.00073088444;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">   30</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">acc_noise_density</a> = 0.01883649;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">   33</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">imu_integration_sigma</a> = 0.0;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">   36</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">gyro_bias_random_walk_sigma</a> = 0.00038765;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">   39</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">acc_bias_random_walk_sigma</a> = 0.012589254;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">   42</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">gravity_magnitude</a> = 9.81007;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">   45</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">omega_coriolis</a> = Eigen::Vector3d::Zero();</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">   48</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">saturation_accel_max</a> = 150;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">   51</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">saturation_omega_max</a> = 7.8;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">   54</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">imu_rate</a> = 20;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;IMU Calibration: &quot;</span>)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    std::cout &lt;&lt; s &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  delay_imu_cam = &quot;</span> &lt;&lt; delay_imu_cam &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  sigma_omega_c = &quot;</span> &lt;&lt; gyro_noise_density &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  sigma_acc_c = &quot;</span> &lt;&lt; acc_noise_density &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  sigma_integration_c = &quot;</span> &lt;&lt; imu_integration_sigma &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  sigma_omega_bias_c = &quot;</span> &lt;&lt; gyro_bias_random_walk_sigma &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  sigma_acc_bias_c = &quot;</span> &lt;&lt; acc_bias_random_walk_sigma &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  g = &quot;</span> &lt;&lt; gravity_magnitude &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  coriolis = &quot;</span> &lt;&lt; omega_coriolis.transpose() &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;};</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html\">   73</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;{</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  </div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  </div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;ImuInitialization&gt; Ptr;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e\">   82</a></span>&#160;  Eigen::Vector3d velocity = Eigen::Vector3d::Zero();</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f\">   85</a></span>&#160;  Eigen::Vector3d omega_bias = Eigen::Vector3d::Zero();</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a\">   88</a></span>&#160;  Eigen::Vector3d acc_bias = Eigen::Vector3d::Zero();</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e\">   91</a></span>&#160;  <span class=\"keywordtype\">double</span> velocity_sigma = 2.0;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61\">   94</a></span>&#160;  <span class=\"keywordtype\">double</span> omega_bias_sigma = 0.01;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698\">   97</a></span>&#160;  <span class=\"keywordtype\">double</span> acc_bias_sigma = 0.1;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;IMU Initialization: &quot;</span>)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    std::cout &lt;&lt; s &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  velocity = &quot;</span> &lt;&lt; velocity.transpose() &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  omega_bias = &quot;</span> &lt;&lt; omega_bias.transpose() &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  acc_bias = &quot;</span> &lt;&lt; acc_bias.transpose() &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  velocity_sigma = &quot;</span> &lt;&lt; velocity_sigma &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  omega_bias_sigma = &quot;</span> &lt;&lt; omega_bias_sigma &lt;&lt; std::endl</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;  acc_bias_sigma = &quot;</span> &lt;&lt; acc_bias_sigma &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  }</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;};</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;<span class=\"comment\">// TODO(cfo) Deprecate</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ImuMeasurement.html\">  112</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a></div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;{</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">  115</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">timestamp_</a>; </div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  Eigen::Vector3d angular_velocity_;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  Eigen::Vector3d linear_acceleration_;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>() {}</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>(</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> timestamp,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; angular_velocity,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; linear_acceleration)</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  : timestamp_(timestamp)</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  , angular_velocity_(angular_velocity)</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  , linear_acceleration_(linear_acceleration)</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  {}</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;};</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;<span class=\"keyword\">typedef</span> std::deque&lt;<a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;Eigen::aligned_allocator&lt;ImuMeasurement&gt; &gt; ImuMeasurements;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a979ab349721bf3ab17ba4f40089dea23\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23\">svo::ImuCalibration::acc_noise_density</a></div><div class=\"ttdeci\">double acc_noise_density</div><div class=\"ttdoc\">Accelerometer noise density (sigma). [m/s^2*1/sqrt(Hz)]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:30</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a32d0696e3ee54f6c8be8f4cb742d9ca4\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4\">svo::ImuCalibration::saturation_accel_max</a></div><div class=\"ttdeci\">double saturation_accel_max</div><div class=\"ttdoc\">Accelerometer saturation. [m/s^2]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:48</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a3326a38e075ec0cc109df53310a6e9ce\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce\">svo::ImuCalibration::omega_coriolis</a></div><div class=\"ttdeci\">Eigen::Vector3d omega_coriolis</div><div class=\"ttdoc\">Coriolis acceleration (earth rotation rate). </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:45</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_add2bac8746391be19ba67d32c6e8e372\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372\">svo::ImuCalibration::acc_bias_random_walk_sigma</a></div><div class=\"ttdeci\">double acc_bias_random_walk_sigma</div><div class=\"ttdoc\">Accelerometer bias random walk (sigma). [m/s^3*1/sqrt(Hz)]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:39</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a22131791196ceec4cae1cb378cff3875\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875\">svo::ImuCalibration::gravity_magnitude</a></div><div class=\"ttdeci\">double gravity_magnitude</div><div class=\"ttdoc\">Norm of the Gravitational acceleration. [m/s^2]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:42</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_aa3d8188fa92dc9cf54846285b0983545\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545\">svo::ImuCalibration::gyro_bias_random_walk_sigma</a></div><div class=\"ttdeci\">double gyro_bias_random_walk_sigma</div><div class=\"ttdoc\">Gyro bias random walk (sigma). [rad/s^2*1/sqrt(Hz)]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:36</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></div><div class=\"ttdoc\">Settings for the IMU statistics Check the following references for more information about the IMU par...</div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a82463fc28a3811d6937dfda915ea5d07\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07\">svo::ImuCalibration::imu_rate</a></div><div class=\"ttdeci\">double imu_rate</div><div class=\"ttdoc\">Expected IMU Rate [1/s]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:54</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1ImuMeasurement_html_a4d0ebc1bf8a4bce20cebd3b7e5e2be53\"><div class=\"ttname\"><a href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">svo::ImuMeasurement::timestamp_</a></div><div class=\"ttdeci\">EIGEN_MAKE_ALIGNED_OPERATOR_NEW double timestamp_</div><div class=\"ttdoc\">In seconds. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:115</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a58070c4f8e91bde3959f75fba3304030\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030\">svo::ImuCalibration::imu_integration_sigma</a></div><div class=\"ttdeci\">double imu_integration_sigma</div><div class=\"ttdoc\">IMU integration sigma (sigma). GTSAM preintegration option. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:33</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_aca9d15f26d109552dcefd13ac9121781\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781\">svo::ImuCalibration::delay_imu_cam</a></div><div class=\"ttdeci\">double delay_imu_cam</div><div class=\"ttdoc\">Camera-IMU delay: delay_imu_cam = cam_ts - cam_ts_delay. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:21</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_ae3fdc5a7c137367ba0d9f695b4a60498\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498\">svo::ImuCalibration::gyro_noise_density</a></div><div class=\"ttdeci\">double gyro_noise_density</div><div class=\"ttdoc\">Gyro noise density (sigma). [rad/s*1/sqrt(Hz)]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:27</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a65e8549d3d4fda4f6b1dc3ef76ac1566\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566\">svo::ImuCalibration::max_imu_delta_t</a></div><div class=\"ttdeci\">double max_imu_delta_t</div><div class=\"ttdoc\">Maximum delay camera-imu. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:24</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html_a1d86f9ebf7a9eded44a226b9310297ac\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac\">svo::ImuCalibration::saturation_omega_max</a></div><div class=\"ttdeci\">double saturation_omega_max</div><div class=\"ttdoc\">Gyroscope saturation. [rad/s]. </div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:51</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuInitialization_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:73</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1ImuMeasurement_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:112</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/imu__handler_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/imu_handler.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">imu_handler.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span>          <span class=\"comment\">// std::shared_ptr</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span>           <span class=\"comment\">// std::mutex</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;deque&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/imu_calibration.h&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">   22</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;{</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  Eigen::Vector3d omega_bias_;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  Eigen::Vector3d acc_bias_;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  Eigen::Vector3d delta_t_ij_;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  Eigen::Vector3d delta_v_ij_;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  Quaternion delta_R_ij_;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keywordtype\">double</span> dt_sum_;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <a class=\"code\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a>(</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; omega_bias,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">addMeasurement</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>&amp; m);</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">addMeasurements</a>(<span class=\"keyword\">const</span> ImuMeasurements&amp; ms);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordtype\">bool</span> last_imu_measurement_set_;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> last_imu_measurement;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;};</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuHandler.html\">   48</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;{</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;ImuHandler&gt; Ptr;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">typedef</span> std::mutex mutex_t;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keyword\">typedef</span> std::unique_lock&lt;mutex_t&gt; ulock_t;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> imu_calib_;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <a class=\"code\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> imu_init_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"comment\">// TODO: make private</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"keyword\">mutable</span> mutex_t bias_mut_;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">   61</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">acc_bias_</a>; </div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">   62</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">omega_bias_</a>; </div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <a class=\"code\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a>(</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a>&amp; imu_calib,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a>&amp; imu_init);</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a>();</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector3d&amp; getAccelerometerBias()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    ulock_t lock(bias_mut_);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keywordflow\">return</span> acc_bias_;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  }</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector3d&amp; getGyroscopeBias()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    ulock_t lock(bias_mut_);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    <span class=\"keywordflow\">return</span> omega_bias_;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  }</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">void</span> setAccelerometerBias(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; acc_bias)</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    ulock_t lock(bias_mut_);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    acc_bias_ = acc_bias;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  }</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordtype\">void</span> setGyroscopeBias(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; omega_bias)</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  {</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    ulock_t lock(bias_mut_);</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    omega_bias_ = omega_bias;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  }</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  ImuMeasurements getMeasurementsCopy()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    ulock_t lock(measurements_mut_);</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    <span class=\"keywordflow\">return</span> measurements_;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  }</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keywordtype\">bool</span> getMeasurements(</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> old_cam_timestamp, <span class=\"comment\">// seconds</span></div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> new_cam_timestamp, <span class=\"comment\">// seconds</span></div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> delete_old_measurements,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      ImuMeasurements&amp; measurements);</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <span class=\"keywordtype\">bool</span> getClosestMeasurement(</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> timestamp,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;      <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>&amp; measurement) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"comment\">// deprecated, use preintegrated imu measurement!</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;<span class=\"comment\"></span>  <span class=\"keywordtype\">bool</span> getRelativeRotationPrior(</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> old_cam_timestamp,</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> new_cam_timestamp,</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;      <span class=\"keywordtype\">bool</span> delete_old_measurements,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      Quaternion&amp; R_oldimu_newimu);</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"keywordtype\">bool</span> getAngularVelocity(</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keywordtype\">double</span> timestamp,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      Eigen::Vector3d&amp; omega) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keywordtype\">bool</span> getInitialAttitude(</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keywordtype\">double</span> timestamp,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      Quaternion&amp; R_imu_world) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keywordtype\">bool</span> addImuMeasurement(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a>&amp; measurement);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;  <span class=\"keywordtype\">bool</span> loadImuMeasurementsFromFile(<span class=\"keyword\">const</span> std::string&amp; filename);</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;  <span class=\"keywordtype\">bool</span> loadImuMeasurementsFromCsvFile(<span class=\"keyword\">const</span> std::string&amp; filename);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keyword\">static</span> Eigen::Matrix3d integrateGyroMeasurement(</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; omega_measured,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_cam_imu,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> delta_t);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a> loadCalibrationFromFile(<span class=\"keyword\">const</span> std::string&amp; filename);</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a> loadInitializationFromFile(<span class=\"keyword\">const</span> std::string&amp; filename);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;  <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;  <span class=\"keyword\">mutable</span> mutex_t measurements_mut_;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">  150</a></span>&#160;  ImuMeasurements <a class=\"code\" href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">measurements_</a>; </div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">  151</a></span>&#160;  std::ofstream <a class=\"code\" href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">ofs_</a>; </div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;};</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1PreintegratedImuMeasurement_html_a94fea1da507cb1e73bc1d05ba167738e\"><div class=\"ttname\"><a href=\"classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e\">svo::PreintegratedImuMeasurement::addMeasurement</a></div><div class=\"ttdeci\">void addMeasurement(const ImuMeasurement &amp;m)</div><div class=\"ttdoc\">Add single measurements to be integrated. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.cpp:30</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuHandler_html_a4b0c151b8efa51f23d533ca963179be7\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7\">svo::ImuHandler::measurements_</a></div><div class=\"ttdeci\">ImuMeasurements measurements_</div><div class=\"ttdoc\">Newest measurement is at the front of the list. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:150</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuHandler_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuHandler.html\">svo::ImuHandler</a></div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:48</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PreintegratedImuMeasurement_html\"><div class=\"ttname\"><a href=\"classsvo_1_1PreintegratedImuMeasurement.html\">svo::PreintegratedImuMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:22</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuHandler_html_a22b7c9121510c07cfabd4bf564d6d1a2\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2\">svo::ImuHandler::acc_bias_</a></div><div class=\"ttdeci\">Eigen::Vector3d acc_bias_</div><div class=\"ttdoc\">Accleration bias used during preintegration. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:61</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuHandler_html_a22cda8062d46a4a47161bf53ddf92851\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851\">svo::ImuHandler::omega_bias_</a></div><div class=\"ttdeci\">Eigen::Vector3d omega_bias_</div><div class=\"ttdoc\">Angular rate bias values used during preintegration. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:62</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuCalibration_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuCalibration.html\">svo::ImuCalibration</a></div><div class=\"ttdoc\">Settings for the IMU statistics Check the following references for more information about the IMU par...</div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:14</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuHandler_html_a0f966922d90b43adec9421e28ecd23ee\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee\">svo::ImuHandler::ofs_</a></div><div class=\"ttdeci\">std::ofstream ofs_</div><div class=\"ttdoc\">File stream for tracing the received measurments. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.h:151</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PreintegratedImuMeasurement_html_a57f1edd90eb61a5d849c50eedb3ce753\"><div class=\"ttname\"><a href=\"classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753\">svo::PreintegratedImuMeasurement::addMeasurements</a></div><div class=\"ttdeci\">void addMeasurements(const ImuMeasurements &amp;ms)</div><div class=\"ttdoc\">Add many measurements to be integrated. </div><div class=\"ttdef\"><b>Definition:</b> imu_handler.cpp:49</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ImuInitialization_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ImuInitialization.html\">svo::ImuInitialization</a></div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:73</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1ImuMeasurement_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></div><div class=\"ttdef\"><b>Definition:</b> imu_calibration.h:112</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Main Page</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">EVO: Event based Visual Odometry Documentation</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/inherit_graph_0.md5",
    "content": "6f7df42d7dea167b82b4273820641d83"
  },
  {
    "path": "docs/inherit_graph_1.md5",
    "content": "0c014b78f4d061940ab9a130a1f53b6f"
  },
  {
    "path": "docs/inherit_graph_10.md5",
    "content": "b14acbd6a110e63ea25ad7cc305c0006"
  },
  {
    "path": "docs/inherit_graph_100.md5",
    "content": "0f19d0347c98111e0acc6a2cf2688581"
  },
  {
    "path": "docs/inherit_graph_101.md5",
    "content": "463eea5543b9331578d532d859864b14"
  },
  {
    "path": "docs/inherit_graph_102.md5",
    "content": "0f06776375a9653a918824a8d295f871"
  },
  {
    "path": "docs/inherit_graph_103.md5",
    "content": "3eb0a2412194eab4eee9e102957a0bc9"
  },
  {
    "path": "docs/inherit_graph_104.md5",
    "content": "2896a9004f6a8a0d6fd2f13c3721ab68"
  },
  {
    "path": "docs/inherit_graph_105.md5",
    "content": "8039c84587e761a811b8bcaa2259e58e"
  },
  {
    "path": "docs/inherit_graph_106.md5",
    "content": "db9091353471d71b879cce270af57299"
  },
  {
    "path": "docs/inherit_graph_107.md5",
    "content": "51bfbf4110c88d26ab833f8aba431c48"
  },
  {
    "path": "docs/inherit_graph_108.md5",
    "content": "426de61c849b3d3e2382d296bc304773"
  },
  {
    "path": "docs/inherit_graph_109.md5",
    "content": "1077226727287ac3de66d2b0775076f6"
  },
  {
    "path": "docs/inherit_graph_11.md5",
    "content": "64d8182e8ac69f753c5eed96c5558546"
  },
  {
    "path": "docs/inherit_graph_110.md5",
    "content": "0c124bd544c6b915ee5a562f63556377"
  },
  {
    "path": "docs/inherit_graph_111.md5",
    "content": "933cd3f9e9ad29d0dbdaa536ade49651"
  },
  {
    "path": "docs/inherit_graph_112.md5",
    "content": "8ef1b0ca89b18d3d59cb8ff753fe2115"
  },
  {
    "path": "docs/inherit_graph_113.md5",
    "content": "2e773f5148abebf3a445c4d3b3925ec5"
  },
  {
    "path": "docs/inherit_graph_114.md5",
    "content": "b38112ecf39cd91c960867783a7d41a8"
  },
  {
    "path": "docs/inherit_graph_115.md5",
    "content": "91a43166e241c9a5989b21147341b40e"
  },
  {
    "path": "docs/inherit_graph_116.md5",
    "content": "5c72bc4ab814ff6c128b27825e721451"
  },
  {
    "path": "docs/inherit_graph_117.md5",
    "content": "b87a5584cc8fc07847b02c3215d98563"
  },
  {
    "path": "docs/inherit_graph_118.md5",
    "content": "2342d77d52c8ec82019022cd968ea121"
  },
  {
    "path": "docs/inherit_graph_119.md5",
    "content": "3661a8eae91fd9abbcae4956996411c9"
  },
  {
    "path": "docs/inherit_graph_12.md5",
    "content": "bf202249ac453bfdee4f81163017693c"
  },
  {
    "path": "docs/inherit_graph_120.md5",
    "content": "a19f3cb6694604578d1a4a8a95a22bda"
  },
  {
    "path": "docs/inherit_graph_121.md5",
    "content": "1d9dab308d2ce8ea64c3a2e527479594"
  },
  {
    "path": "docs/inherit_graph_122.md5",
    "content": "4b5fcac9fc1a96b8f71e9e8b53ee36e3"
  },
  {
    "path": "docs/inherit_graph_123.md5",
    "content": "5c9c3f4a0e1343c666ae6c781fdf45c9"
  },
  {
    "path": "docs/inherit_graph_124.md5",
    "content": "21f3e408a9b577f2efb6519a0d7718b4"
  },
  {
    "path": "docs/inherit_graph_125.md5",
    "content": "c99cd10c6204b305e6be89962a20f428"
  },
  {
    "path": "docs/inherit_graph_126.md5",
    "content": "b7797b2668858ca244cdef2ff14ec45a"
  },
  {
    "path": "docs/inherit_graph_127.md5",
    "content": "f79204a577e09ba2cc9059505aaefd1b"
  },
  {
    "path": "docs/inherit_graph_128.md5",
    "content": "83fb326be72345209a626c36b581b960"
  },
  {
    "path": "docs/inherit_graph_129.md5",
    "content": "8c3ba38bec8f203b4d0bcf2c1bd5578d"
  },
  {
    "path": "docs/inherit_graph_13.md5",
    "content": "bb8158c05d5a225d305ed13ae32eea60"
  },
  {
    "path": "docs/inherit_graph_130.md5",
    "content": "e98f295cabe6e5e4137e78901fbc8f3c"
  },
  {
    "path": "docs/inherit_graph_131.md5",
    "content": "c2956893c24b8909f656fcb5b871602d"
  },
  {
    "path": "docs/inherit_graph_132.md5",
    "content": "3ec514734af475f0a5bb7f3a60873e89"
  },
  {
    "path": "docs/inherit_graph_133.md5",
    "content": "eedc6123b400dacc4ffe638d8a9dd803"
  },
  {
    "path": "docs/inherit_graph_134.md5",
    "content": "5317ae9971439938521b37d18d70f850"
  },
  {
    "path": "docs/inherit_graph_14.md5",
    "content": "22024971975f5c85d06bf3e5dbd6551a"
  },
  {
    "path": "docs/inherit_graph_15.md5",
    "content": "fb32c2115975221328d52deb5a7088b3"
  },
  {
    "path": "docs/inherit_graph_16.md5",
    "content": "943ceadf739cc3363c95fe8624f5079f"
  },
  {
    "path": "docs/inherit_graph_17.md5",
    "content": "8331cb2a6ba9bc8113491e861a18b97f"
  },
  {
    "path": "docs/inherit_graph_18.md5",
    "content": "58140bc252c4440febc3744612d17c5b"
  },
  {
    "path": "docs/inherit_graph_19.md5",
    "content": "2c4274700d9252eb4fa03546315b1403"
  },
  {
    "path": "docs/inherit_graph_2.md5",
    "content": "3a2c1737138005f01d81b850be5c76ad"
  },
  {
    "path": "docs/inherit_graph_20.md5",
    "content": "23c00a12a83160e1ad38f7230f48afb2"
  },
  {
    "path": "docs/inherit_graph_21.md5",
    "content": "2e2ff34bff7cc74b7444b089a382777d"
  },
  {
    "path": "docs/inherit_graph_22.md5",
    "content": "4bc194ef8c63f2255f15928a128d6370"
  },
  {
    "path": "docs/inherit_graph_23.md5",
    "content": "73192f5b2612e7b381c585e19d90792a"
  },
  {
    "path": "docs/inherit_graph_24.md5",
    "content": "e52b99d6fb317843f08413d414f6fbbd"
  },
  {
    "path": "docs/inherit_graph_25.md5",
    "content": "07101970e564f48cd625c2f665760914"
  },
  {
    "path": "docs/inherit_graph_26.md5",
    "content": "b285e12fdb02deb179380b8379371e32"
  },
  {
    "path": "docs/inherit_graph_27.md5",
    "content": "2f49327c10702b0e339c4df75387607a"
  },
  {
    "path": "docs/inherit_graph_28.md5",
    "content": "bc33287949ca842ef0380000d89fb371"
  },
  {
    "path": "docs/inherit_graph_29.md5",
    "content": "f9c7d61b2223196b510214e1ca6860d6"
  },
  {
    "path": "docs/inherit_graph_3.md5",
    "content": "81599dfc6d6a371b7014a6e5821807b8"
  },
  {
    "path": "docs/inherit_graph_30.md5",
    "content": "178e038538b13330db9b29500fba00fc"
  },
  {
    "path": "docs/inherit_graph_31.md5",
    "content": "b447dc3ef0ab51a2d58c09cfee3eaa17"
  },
  {
    "path": "docs/inherit_graph_32.md5",
    "content": "90f2671077adfe755161e721ebca54ea"
  },
  {
    "path": "docs/inherit_graph_33.md5",
    "content": "79a4f531cdd5668913ef9e2b1e7ca377"
  },
  {
    "path": "docs/inherit_graph_34.md5",
    "content": "818ab32403320917188ec69957973322"
  },
  {
    "path": "docs/inherit_graph_35.md5",
    "content": "23d9e52fb1aff841cebc5ceb023e2806"
  },
  {
    "path": "docs/inherit_graph_36.md5",
    "content": "dfd0713878c976749fbbc973a9743107"
  },
  {
    "path": "docs/inherit_graph_37.md5",
    "content": "ccadd90587776d8b3517b1302df4ece0"
  },
  {
    "path": "docs/inherit_graph_38.md5",
    "content": "782fd6d62766fecb27bf0706cf6f7f91"
  },
  {
    "path": "docs/inherit_graph_39.md5",
    "content": "299d5d699914cd1e438b39544dd434ce"
  },
  {
    "path": "docs/inherit_graph_4.md5",
    "content": "8d8683f02808b8aba4aa6ed4fe449953"
  },
  {
    "path": "docs/inherit_graph_40.md5",
    "content": "8e2b6883030543dbfadee53696aee2b2"
  },
  {
    "path": "docs/inherit_graph_41.md5",
    "content": "11135003844d6402f3da3462c48a38e3"
  },
  {
    "path": "docs/inherit_graph_42.md5",
    "content": "0197c306168b8d371fb8ade8f52a52d5"
  },
  {
    "path": "docs/inherit_graph_43.md5",
    "content": "018bf29f529575cef5b78e4146845147"
  },
  {
    "path": "docs/inherit_graph_44.md5",
    "content": "87e929dd0f0c84d25309326e168706a3"
  },
  {
    "path": "docs/inherit_graph_45.md5",
    "content": "fa7ccf4557351f97b708b40266fb280b"
  },
  {
    "path": "docs/inherit_graph_46.md5",
    "content": "eaf47937793b50ecccee1728afed892b"
  },
  {
    "path": "docs/inherit_graph_47.md5",
    "content": "0da659b470058aad1a70349b5d2c9757"
  },
  {
    "path": "docs/inherit_graph_48.md5",
    "content": "88617380d41c6b31e831f7a88767efd4"
  },
  {
    "path": "docs/inherit_graph_49.md5",
    "content": "bf39b86df1b93e065c121793b0e8ba81"
  },
  {
    "path": "docs/inherit_graph_5.md5",
    "content": "dad49deb2861e54a2c48e7e7b23f0898"
  },
  {
    "path": "docs/inherit_graph_50.md5",
    "content": "35c7a442427f74f1e736033138c47a1c"
  },
  {
    "path": "docs/inherit_graph_51.md5",
    "content": "9f1705418370bcb8b0e749aa3ea0bf95"
  },
  {
    "path": "docs/inherit_graph_52.md5",
    "content": "ede7268a71ed08b615bfe2cbc08ea880"
  },
  {
    "path": "docs/inherit_graph_53.md5",
    "content": "204dcebbcb0e4b06c29db51d44c99070"
  },
  {
    "path": "docs/inherit_graph_54.md5",
    "content": "fa2fc86dbfdc84e3b29e4bdbbb8f04fb"
  },
  {
    "path": "docs/inherit_graph_55.md5",
    "content": "7ef001cf499b8dacbd709c6b21cd273f"
  },
  {
    "path": "docs/inherit_graph_56.md5",
    "content": "ff63fbab41426ca62028259a84c414ab"
  },
  {
    "path": "docs/inherit_graph_57.md5",
    "content": "c61148178bd78d0bfcd0480019085499"
  },
  {
    "path": "docs/inherit_graph_58.md5",
    "content": "6b38c02503c1bcdd3cb7d65d48c3d427"
  },
  {
    "path": "docs/inherit_graph_59.md5",
    "content": "5b651c39ba3d631674aeb4b38cff49d5"
  },
  {
    "path": "docs/inherit_graph_6.md5",
    "content": "a67e685ccb668751c6dae231a0a29100"
  },
  {
    "path": "docs/inherit_graph_60.md5",
    "content": "fca3f490f275fba25ea252f7fff7b690"
  },
  {
    "path": "docs/inherit_graph_61.md5",
    "content": "9208c2f3ea1abd5579b2c22830df30be"
  },
  {
    "path": "docs/inherit_graph_62.md5",
    "content": "ce54c9a16d09295b85f98a3e5e2b110f"
  },
  {
    "path": "docs/inherit_graph_63.md5",
    "content": "9471fe731fb969bd4970234d4263e2a5"
  },
  {
    "path": "docs/inherit_graph_64.md5",
    "content": "1e2efffad609eefb6d03f3199867f86a"
  },
  {
    "path": "docs/inherit_graph_65.md5",
    "content": "5daefbacd29a909c0cadb30598be178c"
  },
  {
    "path": "docs/inherit_graph_66.md5",
    "content": "ad803ef8f9b7f148235f09b79994c190"
  },
  {
    "path": "docs/inherit_graph_67.md5",
    "content": "d4f1ae44f65686f11414471f5a9517cc"
  },
  {
    "path": "docs/inherit_graph_68.md5",
    "content": "eb4be1cca781d9290df014ff11e71c81"
  },
  {
    "path": "docs/inherit_graph_69.md5",
    "content": "9aac18ec27dba2c6c0a1799ac3ee09ed"
  },
  {
    "path": "docs/inherit_graph_7.md5",
    "content": "c43a31e26ce5b8fbf1d5caa6f045e5a9"
  },
  {
    "path": "docs/inherit_graph_70.md5",
    "content": "435993a3ea0fedc80379e8c2fd939a74"
  },
  {
    "path": "docs/inherit_graph_71.md5",
    "content": "89d87ea7497fb9baf94bb76ec9d3ea4c"
  },
  {
    "path": "docs/inherit_graph_72.md5",
    "content": "d141591df37ea55a9ba6202a9c919b25"
  },
  {
    "path": "docs/inherit_graph_73.md5",
    "content": "d9fc81c29231d5aa3ed543cd01f6319a"
  },
  {
    "path": "docs/inherit_graph_74.md5",
    "content": "89fc3502f99648802bcfe7a36ca46984"
  },
  {
    "path": "docs/inherit_graph_75.md5",
    "content": "86d1e59b9c6d357aa0f6c31d20f1fc7f"
  },
  {
    "path": "docs/inherit_graph_76.md5",
    "content": "fb0d744d098ee4a8b4ee890ae97448cc"
  },
  {
    "path": "docs/inherit_graph_77.md5",
    "content": "10a730ecb8bf7fc0211093091ea78a69"
  },
  {
    "path": "docs/inherit_graph_78.md5",
    "content": "531e73f8392d2763fa9bc572d2d5894c"
  },
  {
    "path": "docs/inherit_graph_79.md5",
    "content": "7096c18cb6feebd1230394b178811459"
  },
  {
    "path": "docs/inherit_graph_8.md5",
    "content": "350e40cfbe30e3443c4390b044669776"
  },
  {
    "path": "docs/inherit_graph_80.md5",
    "content": "b0833d766972431e05a82e6b4856ab49"
  },
  {
    "path": "docs/inherit_graph_81.md5",
    "content": "6f8b858e974706ef5f73e9f7b2031ad2"
  },
  {
    "path": "docs/inherit_graph_82.md5",
    "content": "e412924893faaf07142c1394abb5cdee"
  },
  {
    "path": "docs/inherit_graph_83.md5",
    "content": "8be6685a96a1eafa9fc655949c64a04a"
  },
  {
    "path": "docs/inherit_graph_84.md5",
    "content": "dd954da9f879802288eda2d22a53e0b3"
  },
  {
    "path": "docs/inherit_graph_85.md5",
    "content": "d753e6de14367377b05396583bfb3f86"
  },
  {
    "path": "docs/inherit_graph_86.md5",
    "content": "0db839c3b79ac75f1987ae36f1b5c620"
  },
  {
    "path": "docs/inherit_graph_87.md5",
    "content": "e0bca3e0a88dff3d05bbba96edb53a41"
  },
  {
    "path": "docs/inherit_graph_88.md5",
    "content": "0f6ffc23f80ee9c8cfab3eec848be37d"
  },
  {
    "path": "docs/inherit_graph_89.md5",
    "content": "97bbffc30f41f1112d5d303731113c4b"
  },
  {
    "path": "docs/inherit_graph_9.md5",
    "content": "d068e32d884485d4f42d712aa31b3aa5"
  },
  {
    "path": "docs/inherit_graph_90.md5",
    "content": "def9b8cd786a64b26b7ba80d4ea5b2d6"
  },
  {
    "path": "docs/inherit_graph_91.md5",
    "content": "fbc44bf2ff913697b2a980e1610f5d6f"
  },
  {
    "path": "docs/inherit_graph_92.md5",
    "content": "532da81fa82ad4837fe543be9a01cabc"
  },
  {
    "path": "docs/inherit_graph_93.md5",
    "content": "08af7b8b80f2836e9799fb8ca12fa319"
  },
  {
    "path": "docs/inherit_graph_94.md5",
    "content": "3bb0a571e3044c26d51f80b74700c0f3"
  },
  {
    "path": "docs/inherit_graph_95.md5",
    "content": "7e779f9a2457807f10f96296ecae2905"
  },
  {
    "path": "docs/inherit_graph_96.md5",
    "content": "bc97ca2a37ab8ceed0b45b40ec0d8941"
  },
  {
    "path": "docs/inherit_graph_97.md5",
    "content": "d88170163d775ef6f5912e2cb44dccaf"
  },
  {
    "path": "docs/inherit_graph_98.md5",
    "content": "ae037659333707ba6e4a7dad991c4110"
  },
  {
    "path": "docs/inherit_graph_99.md5",
    "content": "2cddeebe3d34845deee6f5baef2c11ef"
  },
  {
    "path": "docs/inherits.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Class Hierarchy</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Class Hierarchy</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">\n<p><a href=\"hierarchy.html\">Go to the textual class hierarchy</a></p>\n</div><table border=\"0\" cellspacing=\"10\" cellpadding=\"0\">\n<tr><td><img src=\"inherit_graph_0.png\" border=\"0\" alt=\"\" usemap=\"#ArgumentType_3_01T_01_4\"/>\n<map name=\"ArgumentType_3_01T_01_4\" id=\"ArgumentType_3_01T_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structArgumentType.html\" title=\"ArgumentType\\&lt; T \\&gt;\" alt=\"\" coords=\"5,5,144,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_1.png\" border=\"0\" alt=\"\" usemap=\"#ArgumentType_3_01T_07U_08_4\"/>\n<map name=\"ArgumentType_3_01T_07U_08_4\" id=\"ArgumentType_3_01T_07U_08_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structArgumentType_3_01T_07U_08_4.html\" title=\"ArgumentType\\&lt; T(U)\\&gt;\" alt=\"\" coords=\"5,5,159,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_2.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1Aligned_3_01Container_00_01Type_01_4\"/>\n<map name=\"aslam_1_1Aligned_3_01Container_00_01Type_01_4\" id=\"aslam_1_1Aligned_3_01Container_00_01Type_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1Aligned.html\" title=\"aslam::Aligned\\&lt; Container,\\l Type \\&gt;\" alt=\"\" coords=\"5,5,185,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_3.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1AlignedMap_3_01KeyType_00_01ValueType_01_4\"/>\n<map name=\"aslam_1_1AlignedMap_3_01KeyType_00_01ValueType_01_4\" id=\"aslam_1_1AlignedMap_3_01KeyType_00_01ValueType_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1AlignedMap.html\" title=\"aslam::AlignedMap\\&lt;\\l KeyType, ValueType \\&gt;\" alt=\"\" coords=\"5,5,165,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_4.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1AlignedUnorderedMap_3_01KeyType_00_01ValueType_01_4\"/>\n<map name=\"aslam_1_1AlignedUnorderedMap_3_01KeyType_00_01ValueType_01_4\" id=\"aslam_1_1AlignedUnorderedMap_3_01KeyType_00_01ValueType_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1AlignedUnorderedMap.html\" title=\"aslam::AlignedUnorderedMap\\l\\&lt; KeyType, ValueType \\&gt;\" alt=\"\" coords=\"5,5,199,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_5.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1NumDiffFunctor_3_01NY_00_01NX_00_01__Scalar_01_4\"/>\n<map name=\"aslam_1_1common_1_1NumDiffFunctor_3_01NY_00_01NX_00_01__Scalar_01_4\" id=\"aslam_1_1common_1_1NumDiffFunctor_3_01NY_00_01NX_00_01__Scalar_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\" title=\"aslam::common::NumDiffFunctor\\l\\&lt; NY, NX, _Scalar \\&gt;\" alt=\"\" coords=\"5,5,221,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_6.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1NumericalDiff_3_01__Functor_00_01mode_01_4\"/>\n<map name=\"aslam_1_1common_1_1NumericalDiff_3_01__Functor_00_01mode_01_4\" id=\"aslam_1_1common_1_1NumericalDiff_3_01__Functor_00_01mode_01_4\">\n<area shape=\"rect\" id=\"node2\" href=\"classaslam_1_1common_1_1NumericalDiff.html\" title=\"Modified numerical differentiation code from unsupported/Eigen library. \" alt=\"\" coords=\"127,5,309,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_7.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1NumericalDiffTraits_3_01__Functor_00_01mode_01_4\"/>\n<map name=\"aslam_1_1common_1_1NumericalDiffTraits_3_01__Functor_00_01mode_01_4\" id=\"aslam_1_1common_1_1NumericalDiffTraits_3_01__Functor_00_01mode_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\" title=\"aslam::common::Numerical\\lDiffTraits\\&lt; _Functor,\\l mode \\&gt;\" alt=\"\" coords=\"5,5,188,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_8.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4\"/>\n<map name=\"aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4\" id=\"aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\" title=\"aslam::common::Numerical\\lDiffTraitsSelector\\&lt; _Functor,\\l mode, 0 \\&gt;\" alt=\"\" coords=\"5,5,196,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_9.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_01ValuesAtCompileTime_01_4\"/>\n<map name=\"aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_01ValuesAtCompileTime_01_4\" id=\"aslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_01ValuesAtCompileTime_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\" title=\"aslam::common::Numerical\\lDiffTraitsSelector\\&lt; _Functor,\\l mode, ValuesAtCompileTime \\&gt;\" alt=\"\" coords=\"5,5,213,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_10.png\" border=\"0\" alt=\"\" usemap=\"#aslam_1_1common_1_1ZeroNumericalDiff_3_01__Functor_00_01mode_01_4\"/>\n<map name=\"aslam_1_1common_1_1ZeroNumericalDiff_3_01__Functor_00_01mode_01_4\" id=\"aslam_1_1common_1_1ZeroNumericalDiff_3_01__Functor_00_01mode_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\" title=\"aslam::common::ZeroNumerical\\lDiff\\&lt; _Functor, mode \\&gt;\" alt=\"\" coords=\"5,5,213,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_11.png\" border=\"0\" alt=\"\" usemap=\"#CamerasTest\"/>\n<map name=\"CamerasTest\" id=\"CamerasTest\">\n<area shape=\"rect\" id=\"node2\" href=\"classCamerasTest.html\" title=\"CamerasTest\" alt=\"\" coords=\"110,5,211,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classMedianFilterTest.html\" title=\"MedianFilterTest\" alt=\"\" coords=\"101,56,220,83\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_12.png\" border=\"0\" alt=\"\" usemap=\"#cv_1_1HomographyDecomposition_1_1__CameraMotion\"/>\n<map name=\"cv_1_1HomographyDecomposition_1_1__CameraMotion\" id=\"cv_1_1HomographyDecomposition_1_1__CameraMotion\">\n<area shape=\"rect\" id=\"node1\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\" title=\"cv::HomographyDecomposition\\l::_CameraMotion\" alt=\"\" coords=\"5,5,211,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_13.png\" border=\"0\" alt=\"\" usemap=\"#cv_1_1HomographyDecomposition_1_1HomographyDecomp\"/>\n<map name=\"cv_1_1HomographyDecomposition_1_1HomographyDecomp\" id=\"cv_1_1HomographyDecomposition_1_1HomographyDecomp\">\n<area shape=\"rect\" id=\"node1\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecomp\" alt=\"\" coords=\"5,39,211,80\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecompInria\" alt=\"\" coords=\"259,5,464,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html\" title=\"cv::HomographyDecomposition\\l::HomographyDecompZhang\" alt=\"\" coords=\"259,71,464,112\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_14.png\" border=\"0\" alt=\"\" usemap=\"#depth__from__defocus_1_1DepthFromDefocusNode\"/>\n<map name=\"depth__from__defocus_1_1DepthFromDefocusNode\" id=\"depth__from__defocus_1_1DepthFromDefocusNode\">\n<area shape=\"rect\" id=\"node1\" href=\"classdepth__from__defocus_1_1DepthFromDefocusNode.html\" title=\"depth_from_defocus\\l::DepthFromDefocusNode\" alt=\"\" coords=\"5,5,180,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_15.png\" border=\"0\" alt=\"\" usemap=\"#depth__from__defocus_1_1DepthVector_3_01DerivedDepthVector_01_4\"/>\n<map name=\"depth__from__defocus_1_1DepthVector_3_01DerivedDepthVector_01_4\" id=\"depth__from__defocus_1_1DepthVector_3_01DerivedDepthVector_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; DerivedDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,5,200,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_16.png\" border=\"0\" alt=\"\" usemap=\"#depth__from__defocus_1_1DepthVector_3_01InverseDepthVector_01_4\"/>\n<map name=\"depth__from__defocus_1_1DepthVector_3_01InverseDepthVector_01_4\" id=\"depth__from__defocus_1_1DepthVector_3_01InverseDepthVector_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; InverseDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,5,199,61\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1InverseDepthVector.html\" title=\"depth_from_defocus\\l::InverseDepthVector\" alt=\"\" coords=\"247,13,393,54\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_17.png\" border=\"0\" alt=\"\" usemap=\"#depth__from__defocus_1_1DepthVector_3_01LinearDepthVector_01_4\"/>\n<map name=\"depth__from__defocus_1_1DepthVector_3_01LinearDepthVector_01_4\" id=\"depth__from__defocus_1_1DepthVector_3_01LinearDepthVector_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classdepth__from__defocus_1_1DepthVector.html\" title=\"depth_from_defocus\\l::DepthVector\\&lt; LinearDepth\\lVector \\&gt;\" alt=\"\" coords=\"5,5,191,61\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1LinearDepthVector.html\" title=\"depth_from_defocus\\l::LinearDepthVector\" alt=\"\" coords=\"239,13,379,54\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_18.png\" border=\"0\" alt=\"\" usemap=\"#depth__from__defocus_1_1DvsMappingNodelet\"/>\n<map name=\"depth__from__defocus_1_1DvsMappingNodelet\" id=\"depth__from__defocus_1_1DvsMappingNodelet\">\n<area shape=\"rect\" id=\"node2\" href=\"classdepth__from__defocus_1_1DvsMappingNodelet.html\" title=\"depth_from_defocus\\l::DvsMappingNodelet\" alt=\"\" coords=\"120,5,268,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classDvsTrackingNodelet.html\" title=\"DvsTrackingNodelet\" alt=\"\" coords=\"123,71,265,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1SvoNodelet.html\" title=\"svo::SvoNodelet\" alt=\"\" coords=\"135,122,253,149\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_19.png\" border=\"0\" alt=\"\" usemap=\"#dvs__bootstrapping_1_1Bootstrapper\"/>\n<map name=\"dvs__bootstrapping_1_1Bootstrapper\" id=\"dvs__bootstrapping_1_1Bootstrapper\">\n<area shape=\"rect\" id=\"node1\" href=\"classdvs__bootstrapping_1_1Bootstrapper.html\" title=\"dvs_bootstrapping::\\lBootstrapper\" alt=\"\" coords=\"5,5,141,47\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classdvs__bootstrapping_1_1EventsFramesBootstrapper.html\" title=\"dvs_bootstrapping::\\lEventsFramesBootstrapper\" alt=\"\" coords=\"189,5,371,47\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html\" title=\"dvs_bootstrapping::\\lFrontoPlanarBootstrapper\" alt=\"\" coords=\"419,5,589,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_20.png\" border=\"0\" alt=\"\" usemap=\"#DvsReconstruction\"/>\n<map name=\"DvsReconstruction\" id=\"DvsReconstruction\">\n<area shape=\"rect\" id=\"node1\" href=\"classDvsReconstruction.html\" title=\"DvsReconstruction\" alt=\"\" coords=\"5,5,140,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_21.png\" border=\"0\" alt=\"\" usemap=\"#evo__utils_8select__exposure__DAVIS_8ExposureSelector\"/>\n<map name=\"evo__utils_8select__exposure__DAVIS_8ExposureSelector\" id=\"evo__utils_8select__exposure__DAVIS_8ExposureSelector\">\n<area shape=\"rect\" id=\"node1\" href=\"classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html\" title=\"evo_utils.select_exposure\\l_DAVIS.ExposureSelector\" alt=\"\" coords=\"5,5,183,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_22.png\" border=\"0\" alt=\"\" usemap=\"#evo__utils_8snakify_8snakify\"/>\n<map name=\"evo__utils_8snakify_8snakify\" id=\"evo__utils_8snakify_8snakify\">\n<area shape=\"rect\" id=\"node1\" href=\"classevo__utils_1_1snakify_1_1snakify.html\" title=\"evo_utils.snakify.snakify\" alt=\"\" coords=\"5,5,172,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_23.png\" border=\"0\" alt=\"\" usemap=\"#evo__utils_8tf__to__camera__markers_8tfToCamera\"/>\n<map name=\"evo__utils_8tf__to__camera__markers_8tfToCamera\" id=\"evo__utils_8tf__to__camera__markers_8tfToCamera\">\n<area shape=\"rect\" id=\"node1\" href=\"classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html\" title=\"evo_utils.tf_to_camera\\l_markers.tfToCamera\" alt=\"\" coords=\"5,5,160,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_24.png\" border=\"0\" alt=\"\" usemap=\"#evo__utils_1_1camera_1_1PinholeCamera\"/>\n<map name=\"evo__utils_1_1camera_1_1PinholeCamera\" id=\"evo__utils_1_1camera_1_1PinholeCamera\">\n<area shape=\"rect\" id=\"node1\" href=\"classevo__utils_1_1camera_1_1PinholeCamera.html\" title=\"evo_utils::camera::\\lPinholeCamera\" alt=\"\" coords=\"5,5,139,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_25.png\" border=\"0\" alt=\"\" usemap=\"#gtsam_1_1FastMap_3_01int_00_01std_1_1pair_3_01boost_1_1shared__ptr_3_01SmartFactor_01_4_00_01int_01_4_01_4\"/>\n<map name=\"gtsam_1_1FastMap_3_01int_00_01std_1_1pair_3_01boost_1_1shared__ptr_3_01SmartFactor_01_4_00_01int_01_4_01_4\" id=\"gtsam_1_1FastMap_3_01int_00_01std_1_1pair_3_01boost_1_1shared__ptr_3_01SmartFactor_01_4_00_01int_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classgtsam_1_1FastMap.html\" title=\"gtsam::FastMap\\&lt; int,\\l std::pair\\&lt; boost::shared\\l_ptr\\&lt; SmartFactor \\&gt;, int \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,192,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_26.png\" border=\"0\" alt=\"\" usemap=\"#gtsam_1_1FastMap_3_01KEY_00_01VALUE_01_4\"/>\n<map name=\"gtsam_1_1FastMap_3_01KEY_00_01VALUE_01_4\" id=\"gtsam_1_1FastMap_3_01KEY_00_01VALUE_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classgtsam_1_1FastMap.html\" title=\"gtsam::FastMap\\&lt; KEY,\\l VALUE \\&gt;\" alt=\"\" coords=\"5,5,165,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_27.png\" border=\"0\" alt=\"\" usemap=\"#gtsam_1_1GenericProjectionFactor_3_01POSE_00_01LANDMARK_00_01CALIBRATION_01_4\"/>\n<map name=\"gtsam_1_1GenericProjectionFactor_3_01POSE_00_01LANDMARK_00_01CALIBRATION_01_4\" id=\"gtsam_1_1GenericProjectionFactor_3_01POSE_00_01LANDMARK_00_01CALIBRATION_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classgtsam_1_1GenericProjectionFactor.html\" title=\"gtsam::GenericProjection\\lFactor\\&lt; POSE, LANDMARK,\\l CALIBRATION \\&gt;\" alt=\"\" coords=\"5,5,200,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_28.png\" border=\"0\" alt=\"\" usemap=\"#gtsam_1_1SmartProjectionPoseFactor_3_01CALIBRATION_01_4\"/>\n<map name=\"gtsam_1_1SmartProjectionPoseFactor_3_01CALIBRATION_01_4\" id=\"gtsam_1_1SmartProjectionPoseFactor_3_01CALIBRATION_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\" title=\"gtsam::SmartProjectionPose\\lFactor\\&lt; CALIBRATION \\&gt;\" alt=\"\" coords=\"5,5,195,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_29.png\" border=\"0\" alt=\"\" usemap=\"#LKSE3\"/>\n<map name=\"LKSE3\" id=\"LKSE3\">\n<area shape=\"rect\" id=\"node1\" href=\"classLKSE3.html\" title=\"LKSE3\" alt=\"\" coords=\"5,5,68,32\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classTracker.html\" title=\"Tracker\" alt=\"\" coords=\"116,5,183,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_30.png\" border=\"0\" alt=\"\" usemap=\"#LKSE3_1_1Keypoint\"/>\n<map name=\"LKSE3_1_1Keypoint\" id=\"LKSE3_1_1Keypoint\">\n<area shape=\"rect\" id=\"node1\" href=\"structLKSE3_1_1Keypoint.html\" title=\"LKSE3::Keypoint\" alt=\"\" coords=\"5,5,128,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_31.png\" border=\"0\" alt=\"\" usemap=\"#Mosaic\"/>\n<map name=\"Mosaic\" id=\"Mosaic\">\n<area shape=\"rect\" id=\"node1\" href=\"classMosaic.html\" title=\"Mosaic\" alt=\"\" coords=\"5,5,69,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_32.png\" border=\"0\" alt=\"\" usemap=\"#motion__correction_1_1WarpUpdateParams\"/>\n<map name=\"motion__correction_1_1WarpUpdateParams\" id=\"motion__correction_1_1WarpUpdateParams\">\n<area shape=\"rect\" id=\"node1\" href=\"classmotion__correction_1_1WarpUpdateParams.html\" title=\"motion_correction::\\lWarpUpdateParams\" alt=\"\" coords=\"5,5,145,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_33.png\" border=\"0\" alt=\"\" usemap=\"#pose__to__tf_8Boostrapper\"/>\n<map name=\"pose__to__tf_8Boostrapper\" id=\"pose__to__tf_8Boostrapper\">\n<area shape=\"rect\" id=\"node1\" href=\"classpose__to__tf_1_1Boostrapper.html\" title=\"pose_to_tf.Boostrapper\" alt=\"\" coords=\"5,5,163,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_34.png\" border=\"0\" alt=\"\" usemap=\"#rpg__common_1_1CallbackHost_3_01CallbackArgs_01_4\"/>\n<map name=\"rpg__common_1_1CallbackHost_3_01CallbackArgs_01_4\" id=\"rpg__common_1_1CallbackHost_3_01CallbackArgs_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; CallbackArgs \\&gt;\" alt=\"\" coords=\"5,5,189,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_35.png\" border=\"0\" alt=\"\" usemap=\"#rpg__common_1_1CallbackHost_3_01const_01FrameBundlePtr_01_6_4\"/>\n<map name=\"rpg__common_1_1CallbackHost_3_01const_01FrameBundlePtr_01_6_4\" id=\"rpg__common_1_1CallbackHost_3_01const_01FrameBundlePtr_01_6_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classrpg__common_1_1CallbackHost.html\" title=\"rpg_common::CallbackHost\\l\\&lt; const FrameBundlePtr &amp;\\&gt;\" alt=\"\" coords=\"5,49,191,90\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameHandlerBase.html\" title=\"Base class for various VO pipelines. Manages the map and the state machine. \" alt=\"\" coords=\"239,56,401,83\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1FrameHandlerArray.html\" title=\"svo::FrameHandlerArray\" alt=\"\" coords=\"453,5,617,32\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FrameHandlerMono.html\" title=\"svo::FrameHandlerMono\" alt=\"\" coords=\"452,56,617,83\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1FrameHandlerStereo.html\" title=\"svo::FrameHandlerStereo\" alt=\"\" coords=\"449,107,620,133\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_36.png\" border=\"0\" alt=\"\" usemap=\"#rpg__common_1_1RealtimeWorker_3_01DataType_01_4\"/>\n<map name=\"rpg__common_1_1RealtimeWorker_3_01DataType_01_4\" id=\"rpg__common_1_1RealtimeWorker_3_01DataType_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classrpg__common_1_1RealtimeWorker.html\" title=\"rpg_common::RealtimeWorker\\l\\&lt; DataType \\&gt;\" alt=\"\" coords=\"5,5,204,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_37.png\" border=\"0\" alt=\"\" usemap=\"#rpg__common_1_1ThreadSafeQueue_3_01DataType_01_4\"/>\n<map name=\"rpg__common_1_1ThreadSafeQueue_3_01DataType_01_4\" id=\"rpg__common_1_1ThreadSafeQueue_3_01DataType_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classrpg__common_1_1ThreadSafeQueue.html\" title=\"rpg_common::ThreadSafeQueue\\l\\&lt; DataType \\&gt;\" alt=\"\" coords=\"5,5,216,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_38.png\" border=\"0\" alt=\"\" usemap=\"#rpg__common_1_1WorkerBase\"/>\n<map name=\"rpg__common_1_1WorkerBase\" id=\"rpg__common_1_1WorkerBase\">\n<area shape=\"rect\" id=\"node1\" href=\"classrpg__common_1_1WorkerBase.html\" title=\"rpg_common::WorkerBase\" alt=\"\" coords=\"5,13,183,39\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classrpg__common_1_1BatchWorker.html\" title=\"rpg_common::BatchWorker\\l\\&lt; DataType \\&gt;\" alt=\"\" coords=\"231,5,412,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_39.png\" border=\"0\" alt=\"\" usemap=\"#rqt__evo_8evo_8Evo\"/>\n<map name=\"rqt__evo_8evo_8Evo\" id=\"rqt__evo_8evo_8Evo\">\n<area shape=\"rect\" id=\"node2\" href=\"classrqt__evo_1_1evo_1_1Evo.html\" title=\"rqt_evo.evo.Evo\" alt=\"\" coords=\"112,5,229,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrqt__svo_1_1svo_1_1Svo.html\" title=\"rqt_svo.svo.Svo\" alt=\"\" coords=\"112,56,229,83\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_40.png\" border=\"0\" alt=\"\" usemap=\"#rqt__evo_8evo__widget_8EvoWidget\"/>\n<map name=\"rqt__evo_8evo__widget_8EvoWidget\" id=\"rqt__evo_8evo__widget_8EvoWidget\">\n<area shape=\"rect\" id=\"node2\" href=\"classrqt__evo_1_1evo__widget_1_1EvoWidget.html\" title=\"rqt_evo.evo_widget.EvoWidget\" alt=\"\" coords=\"127,5,329,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classrqt__svo_1_1svo__widget_1_1SvoWidget.html\" title=\"rqt_svo.svo_widget.SvoWidget\" alt=\"\" coords=\"127,56,329,83\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_41.png\" border=\"0\" alt=\"\" usemap=\"#std_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4\"/>\n<map name=\"std_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4\" id=\"std_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\" title=\"std::hash\\&lt; std::function\\l\\&lt; void(CallbackArgs...)\\&gt; \\&gt;\" alt=\"\" coords=\"5,5,181,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_42.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1AbstractBundleAdjustment\"/>\n<map name=\"svo_1_1AbstractBundleAdjustment\" id=\"svo_1_1AbstractBundleAdjustment\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1AbstractBundleAdjustment.html\" title=\"EXPERIMENTAL Defines interface for various bundle adjustment methods. \" alt=\"\" coords=\"5,5,212,32\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1BackendInterface.html\" title=\"svo::BackendInterface\" alt=\"\" coords=\"260,5,413,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_43.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1AbstractDetector\"/>\n<map name=\"svo_1_1AbstractDetector\" id=\"svo_1_1AbstractDetector\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1AbstractDetector.html\" title=\"All detectors should derive from this abstract class. \" alt=\"\" coords=\"5,183,156,209\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1AllPixelsDetector.html\" title=\"Dummy detector that selects all pixels. \" alt=\"\" coords=\"223,5,375,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1CannyDetector.html\" title=\"svo::CannyDetector\" alt=\"\" coords=\"229,56,368,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FastDetector.html\" title=\"FAST detector by Edward Rosten. \" alt=\"\" coords=\"235,107,362,133\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1FastGradDetector.html\" title=\"svo::FastGradDetector\" alt=\"\" coords=\"221,157,376,184\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classsvo_1_1GradientDetector.html\" title=\"svo::GradientDetector\" alt=\"\" coords=\"223,208,374,235\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classsvo_1_1GradientDetectorGrid.html\" title=\"svo::GradientDetectorGrid\" alt=\"\" coords=\"211,259,386,285\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\" title=\"svo::GradientHuangMumford\\lDetector\" alt=\"\" coords=\"204,310,393,351\"/>\n<area shape=\"rect\" id=\"node9\" href=\"classsvo_1_1SobelDetector.html\" title=\"svo::SobelDetector\" alt=\"\" coords=\"231,376,366,403\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_44.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1AbstractInitialization\"/>\n<map name=\"svo_1_1AbstractInitialization\" id=\"svo_1_1AbstractInitialization\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1AbstractInitialization.html\" title=\"Bootstrapping the map from the first two views. \" alt=\"\" coords=\"5,157,175,184\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1ArrayInitGeometric.html\" title=\"svo::ArrayInitGeometric\" alt=\"\" coords=\"229,5,389,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1ArrayInitOptimization.html\" title=\"svo::ArrayInitOptimization\" alt=\"\" coords=\"223,56,396,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1FivePointInit.html\" title=\"Tracks features using KLT and then estimate the relative pose using 5pt RANSAC. \" alt=\"\" coords=\"247,107,371,133\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classsvo_1_1HomographyInit.html\" title=\"Tracks features using Lucas&#45;Kanade tracker and then estimates a homography. \" alt=\"\" coords=\"238,157,381,184\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classsvo_1_1OneShotInit.html\" title=\"svo::OneShotInit\" alt=\"\" coords=\"249,208,369,235\"/>\n<area shape=\"rect\" id=\"node7\" href=\"classsvo_1_1StereoInit.html\" title=\"svo::StereoInit\" alt=\"\" coords=\"256,259,363,285\"/>\n<area shape=\"rect\" id=\"node8\" href=\"classsvo_1_1TwoPointInit.html\" title=\"svo::TwoPointInit\" alt=\"\" coords=\"247,309,371,336\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_45.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1BackendInterfaceOptions\"/>\n<map name=\"svo_1_1BackendInterfaceOptions\" id=\"svo_1_1BackendInterfaceOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1BackendInterfaceOptions.html\" title=\"svo::BackendInterfaceOptions\" alt=\"\" coords=\"5,5,204,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_46.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1BackendOptimizer\"/>\n<map name=\"svo_1_1BackendOptimizer\" id=\"svo_1_1BackendOptimizer\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1BackendOptimizer.html\" title=\"svo::BackendOptimizer\" alt=\"\" coords=\"5,5,164,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_47.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1BackendVisualizer\"/>\n<map name=\"svo_1_1BackendVisualizer\" id=\"svo_1_1BackendVisualizer\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1BackendVisualizer.html\" title=\"Publish visualisation messages to ROS. \" alt=\"\" coords=\"5,5,164,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_48.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1BaseOptions\"/>\n<map name=\"svo_1_1BaseOptions\" id=\"svo_1_1BaseOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1BaseOptions.html\" title=\"Options for base frame handler module. Sets tracing and quality options. \" alt=\"\" coords=\"5,5,132,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_49.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Corner\"/>\n<map name=\"svo_1_1Corner\" id=\"svo_1_1Corner\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1Corner.html\" title=\"Temporary container used for corner detection. Features are initialized from these. \" alt=\"\" coords=\"5,5,96,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_50.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1CsvDatasetReader\"/>\n<map name=\"svo_1_1CsvDatasetReader\" id=\"svo_1_1CsvDatasetReader\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1CsvDatasetReader.html\" title=\"svo::CsvDatasetReader\" alt=\"\" coords=\"5,5,168,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_51.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1dataset_1_1MeasurementBase\"/>\n<map name=\"svo_1_1dataset_1_1MeasurementBase\" id=\"svo_1_1dataset_1_1MeasurementBase\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"5,64,216,91\"/>\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\" title=\"svo::dataset::CameraMeasurement\" alt=\"\" coords=\"264,5,491,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\" title=\"svo::dataset::FeatureTrack\\lMeasurement\" alt=\"\" coords=\"288,57,467,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\" title=\"svo::dataset::ImuMeasurement\" alt=\"\" coords=\"276,123,479,149\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_52.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1DepthFilter\"/>\n<map name=\"svo_1_1DepthFilter\" id=\"svo_1_1DepthFilter\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1DepthFilter.html\" title=\"svo::DepthFilter\" alt=\"\" coords=\"5,5,120,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_53.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1DepthFilter_1_1Job\"/>\n<map name=\"svo_1_1DepthFilter_1_1Job\" id=\"svo_1_1DepthFilter_1_1Job\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1DepthFilter_1_1Job.html\" title=\"svo::DepthFilter::Job\" alt=\"\" coords=\"5,5,149,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_54.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1DepthFilterOptions\"/>\n<map name=\"svo_1_1DepthFilterOptions\" id=\"svo_1_1DepthFilterOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1DepthFilterOptions.html\" title=\"Depth&#45;filter config parameters. \" alt=\"\" coords=\"5,5,165,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_55.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1DetectorOptions\"/>\n<map name=\"svo_1_1DetectorOptions\" id=\"svo_1_1DetectorOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1DetectorOptions.html\" title=\"Common options of all feature detectors. \" alt=\"\" coords=\"5,5,152,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_56.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FeatureRef\"/>\n<map name=\"svo_1_1FeatureRef\" id=\"svo_1_1FeatureRef\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1FeatureRef.html\" title=\"svo::FeatureRef\" alt=\"\" coords=\"5,5,121,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_57.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FeatureTrack\"/>\n<map name=\"svo_1_1FeatureTrack\" id=\"svo_1_1FeatureTrack\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1FeatureTrack.html\" title=\"svo::FeatureTrack\" alt=\"\" coords=\"5,5,133,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_58.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FeatureTracker\"/>\n<map name=\"svo_1_1FeatureTracker\" id=\"svo_1_1FeatureTracker\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1FeatureTracker.html\" title=\"svo::FeatureTracker\" alt=\"\" coords=\"5,5,144,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_59.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FeatureTrackerOptions\"/>\n<map name=\"svo_1_1FeatureTrackerOptions\" id=\"svo_1_1FeatureTrackerOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1FeatureTrackerOptions.html\" title=\"svo::FeatureTrackerOptions\" alt=\"\" coords=\"5,5,189,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_60.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FeatureWrapper\"/>\n<map name=\"svo_1_1FeatureWrapper\" id=\"svo_1_1FeatureWrapper\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1FeatureWrapper.html\" title=\"svo::FeatureWrapper\" alt=\"\" coords=\"5,5,149,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_61.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Frame\"/>\n<map name=\"svo_1_1Frame\" id=\"svo_1_1Frame\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \" alt=\"\" coords=\"5,5,93,32\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1FrameGpu.html\" title=\"The FrameGpu class adds GPU data members to the frame base class. \" alt=\"\" coords=\"141,5,253,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_62.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1FrameBundle\"/>\n<map name=\"svo_1_1FrameBundle\" id=\"svo_1_1FrameBundle\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1FrameBundle.html\" title=\"svo::FrameBundle\" alt=\"\" coords=\"5,5,133,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_63.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1GraphManager\"/>\n<map name=\"svo_1_1GraphManager\" id=\"svo_1_1GraphManager\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1GraphManager.html\" title=\"svo::GraphManager\" alt=\"\" coords=\"5,5,141,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_64.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1GraphManagerOptions\"/>\n<map name=\"svo_1_1GraphManagerOptions\" id=\"svo_1_1GraphManagerOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1GraphManagerOptions.html\" title=\"svo::GraphManagerOptions\" alt=\"\" coords=\"5,5,187,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_65.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1HostCacheHandler\"/>\n<map name=\"svo_1_1HostCacheHandler\" id=\"svo_1_1HostCacheHandler\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1HostCacheHandler.html\" title=\"svo::HostCacheHandler\" alt=\"\" coords=\"5,5,168,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_66.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ImuCalibration\"/>\n<map name=\"svo_1_1ImuCalibration\" id=\"svo_1_1ImuCalibration\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1ImuCalibration.html\" title=\"Settings for the IMU statistics Check the following references for more information about the IMU par...\" alt=\"\" coords=\"5,5,140,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_67.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ImuHandler\"/>\n<map name=\"svo_1_1ImuHandler\" id=\"svo_1_1ImuHandler\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1ImuHandler.html\" title=\"svo::ImuHandler\" alt=\"\" coords=\"5,5,124,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_68.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ImuInitialization\"/>\n<map name=\"svo_1_1ImuInitialization\" id=\"svo_1_1ImuInitialization\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1ImuInitialization.html\" title=\"svo::ImuInitialization\" alt=\"\" coords=\"5,5,148,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_69.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ImuMeasurement\"/>\n<map name=\"svo_1_1ImuMeasurement\" id=\"svo_1_1ImuMeasurement\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1ImuMeasurement.html\" title=\"svo::ImuMeasurement\" alt=\"\" coords=\"5,5,157,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_70.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1InitializationOptions\"/>\n<map name=\"svo_1_1InitializationOptions\" id=\"svo_1_1InitializationOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1InitializationOptions.html\" title=\"svo::InitializationOptions\" alt=\"\" coords=\"5,5,171,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_71.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1KeypointIdentifier\"/>\n<map name=\"svo_1_1KeypointIdentifier\" id=\"svo_1_1KeypointIdentifier\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1KeypointIdentifier.html\" title=\"svo::KeypointIdentifier\" alt=\"\" coords=\"5,5,157,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_72.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Map\"/>\n<map name=\"svo_1_1Map\" id=\"svo_1_1Map\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \" alt=\"\" coords=\"5,5,81,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_73.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Matcher\"/>\n<map name=\"svo_1_1Matcher\" id=\"svo_1_1Matcher\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Matcher.html\" title=\"Patch&#45;matcher for reprojection&#45;matching and epipolar search in triangulation. \" alt=\"\" coords=\"5,5,104,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_74.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Matcher_1_1Options\"/>\n<map name=\"svo_1_1Matcher_1_1Options\" id=\"svo_1_1Matcher_1_1Options\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1Matcher_1_1Options.html\" title=\"svo::Matcher::Options\" alt=\"\" coords=\"5,5,156,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_75.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1OccupandyGrid2D\"/>\n<map name=\"svo_1_1OccupandyGrid2D\" id=\"svo_1_1OccupandyGrid2D\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1OccupandyGrid2D.html\" title=\"svo::OccupandyGrid2D\" alt=\"\" coords=\"5,5,164,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_76.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1OptimizerBackendOptions\"/>\n<map name=\"svo_1_1OptimizerBackendOptions\" id=\"svo_1_1OptimizerBackendOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1OptimizerBackendOptions.html\" title=\"svo::OptimizerBackendOptions\" alt=\"\" coords=\"5,5,208,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_77.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1patch__score_1_1ZMSSD_3_01HALF__PATCH__SIZE_01_4\"/>\n<map name=\"svo_1_1patch__score_1_1ZMSSD_3_01HALF__PATCH__SIZE_01_4\" id=\"svo_1_1patch__score_1_1ZMSSD_3_01HALF__PATCH__SIZE_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\" title=\"Zero Mean Sum of Squared Differences Cost. \" alt=\"\" coords=\"5,5,183,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_78.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Point\"/>\n<map name=\"svo_1_1Point\" id=\"svo_1_1Point\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Point.html\" title=\"A 3D point on the surface of the scene. \" alt=\"\" coords=\"5,5,87,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_79.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1PointIdProvider\"/>\n<map name=\"svo_1_1PointIdProvider\" id=\"svo_1_1PointIdProvider\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1PointIdProvider.html\" title=\"Thread&#45;safe point&#45;ID provider. \" alt=\"\" coords=\"5,5,145,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_80.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1PoseOptimizer_1_1Statistics\"/>\n<map name=\"svo_1_1PoseOptimizer_1_1Statistics\" id=\"svo_1_1PoseOptimizer_1_1Statistics\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\" title=\"svo::PoseOptimizer\\l::Statistics\" alt=\"\" coords=\"5,5,143,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_81.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1PreintegratedImuMeasurement\"/>\n<map name=\"svo_1_1PreintegratedImuMeasurement\" id=\"svo_1_1PreintegratedImuMeasurement\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\" title=\"svo::PreintegratedImuMeasurement\" alt=\"\" coords=\"5,5,235,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_82.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Reprojector\"/>\n<map name=\"svo_1_1Reprojector\" id=\"svo_1_1Reprojector\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Reprojector.html\" title=\"svo::Reprojector\" alt=\"\" coords=\"5,5,124,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_83.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Reprojector_1_1Candidate\"/>\n<map name=\"svo_1_1Reprojector_1_1Candidate\" id=\"svo_1_1Reprojector_1_1Candidate\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\" title=\"svo::Reprojector::Candidate\" alt=\"\" coords=\"5,5,191,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_84.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Reprojector_1_1Statistics\"/>\n<map name=\"svo_1_1Reprojector_1_1Statistics\" id=\"svo_1_1Reprojector_1_1Statistics\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\" title=\"svo::Reprojector::Statistics\" alt=\"\" coords=\"5,5,187,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_85.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ReprojectorOptions\"/>\n<map name=\"svo_1_1ReprojectorOptions\" id=\"svo_1_1ReprojectorOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1ReprojectorOptions.html\" title=\"svo::ReprojectorOptions\" alt=\"\" coords=\"5,5,168,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_86.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1SeedRef\"/>\n<map name=\"svo_1_1SeedRef\" id=\"svo_1_1SeedRef\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1SeedRef.html\" title=\"svo::SeedRef\" alt=\"\" coords=\"5,5,108,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_87.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1SparseImgAlignOptions\"/>\n<map name=\"svo_1_1SparseImgAlignOptions\" id=\"svo_1_1SparseImgAlignOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1SparseImgAlignOptions.html\" title=\"Sparse Image Alignment Options. \" alt=\"\" coords=\"5,5,193,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_88.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1SparseImgAlignState\"/>\n<map name=\"svo_1_1SparseImgAlignState\" id=\"svo_1_1SparseImgAlignState\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1SparseImgAlignState.html\" title=\"State to be estimated. \" alt=\"\" coords=\"5,5,180,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_89.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1StereoTriangulation\"/>\n<map name=\"svo_1_1StereoTriangulation\" id=\"svo_1_1StereoTriangulation\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1StereoTriangulation.html\" title=\"svo::StereoTriangulation\" alt=\"\" coords=\"5,5,168,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_90.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1StereoTriangulationOptions\"/>\n<map name=\"svo_1_1StereoTriangulationOptions\" id=\"svo_1_1StereoTriangulationOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structsvo_1_1StereoTriangulationOptions.html\" title=\"svo::StereoTriangulation\\lOptions\" alt=\"\" coords=\"5,5,168,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_91.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1SvoInterface\"/>\n<map name=\"svo_1_1SvoInterface\" id=\"svo_1_1SvoInterface\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1SvoInterface.html\" title=\"SVO Interface. \" alt=\"\" coords=\"5,5,131,32\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1BenchmarkNode.html\" title=\"svo::BenchmarkNode\" alt=\"\" coords=\"179,5,327,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_92.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1ViNodeState\"/>\n<map name=\"svo_1_1ViNodeState\" id=\"svo_1_1ViNodeState\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1ViNodeState.html\" title=\"svo::ViNodeState\" alt=\"\" coords=\"5,5,131,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_93.png\" border=\"0\" alt=\"\" usemap=\"#svo_1_1Visualizer\"/>\n<map name=\"svo_1_1Visualizer\" id=\"svo_1_1Visualizer\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo_1_1Visualizer.html\" title=\"Publish visualisation messages to ROS. \" alt=\"\" coords=\"5,5,113,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_94.png\" border=\"0\" alt=\"\" usemap=\"#svo__ros_1_1SvoNodeBase\"/>\n<map name=\"svo__ros_1_1SvoNodeBase\" id=\"svo__ros_1_1SvoNodeBase\">\n<area shape=\"rect\" id=\"node1\" href=\"classsvo__ros_1_1SvoNodeBase.html\" title=\"svo_ros::SvoNodeBase\" alt=\"\" coords=\"5,5,165,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_95.png\" border=\"0\" alt=\"\" usemap=\"#trigger__map__expansion_8TriggerMapExpansion\"/>\n<map name=\"trigger__map__expansion_8TriggerMapExpansion\" id=\"trigger__map__expansion_8TriggerMapExpansion\">\n<area shape=\"rect\" id=\"node1\" href=\"classtrigger__map__expansion_1_1TriggerMapExpansion.html\" title=\"trigger_map_expansion.Trigger\\lMapExpansion\" alt=\"\" coords=\"5,5,205,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_96.png\" border=\"0\" alt=\"\" usemap=\"#vikit__py_8pinhole__camera_8PinholeCamera\"/>\n<map name=\"vikit__py_8pinhole__camera_8PinholeCamera\" id=\"vikit__py_8pinhole__camera_8PinholeCamera\">\n<area shape=\"rect\" id=\"node1\" href=\"classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html\" title=\"vikit_py.pinhole_camera.\\lPinholeCamera\" alt=\"\" coords=\"5,5,172,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_97.png\" border=\"0\" alt=\"\" usemap=\"#vikit__py_8ros__node_8RosNode\"/>\n<map name=\"vikit__py_8ros__node_8RosNode\" id=\"vikit__py_8ros__node_8RosNode\">\n<area shape=\"rect\" id=\"node1\" href=\"classvikit__py_1_1ros__node_1_1RosNode.html\" title=\"vikit_py.ros_node.RosNode\" alt=\"\" coords=\"5,5,188,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_98.png\" border=\"0\" alt=\"\" usemap=\"#vikit__py_8test__transformations_8TestTransformations\"/>\n<map name=\"vikit__py_8test__transformations_8TestTransformations\" id=\"vikit__py_8test__transformations_8TestTransformations\">\n<area shape=\"rect\" id=\"node2\" href=\"classvikit__py_1_1test__transformations_1_1TestTransformations.html\" title=\"vikit_py.test_transformations.\\lTestTransformations\" alt=\"\" coords=\"132,5,327,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_99.png\" border=\"0\" alt=\"\" usemap=\"#vikit__py_8transformations_8Arcball\"/>\n<map name=\"vikit__py_8transformations_8Arcball\" id=\"vikit__py_8transformations_8Arcball\">\n<area shape=\"rect\" id=\"node2\" href=\"classvikit__py_1_1transformations_1_1Arcball.html\" title=\"vikit_py.transformations.\\lArcball\" alt=\"\" coords=\"111,5,276,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_100.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1AtanDistortion\"/>\n<map name=\"vk_1_1cameras_1_1AtanDistortion\" id=\"vk_1_1cameras_1_1AtanDistortion\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1AtanDistortion.html\" title=\"vk::cameras::AtanDistortion\" alt=\"\" coords=\"5,5,191,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_101.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1CameraGeometryBase\"/>\n<map name=\"vk_1_1cameras_1_1CameraGeometryBase\" id=\"vk_1_1cameras_1_1CameraGeometryBase\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\" title=\"vk::cameras::CameraGeometryBase\" alt=\"\" coords=\"5,78,240,105\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; EquidistantFisheyeProjection \\&gt;\" alt=\"\" coords=\"288,5,503,47\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; OmniProjection \\&gt;\" alt=\"\" coords=\"293,71,498,112\"/>\n<area shape=\"rect\" id=\"node6\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\" title=\"vk::cameras::CameraGeometry\\l\\&lt; Projection \\&gt;\" alt=\"\" coords=\"293,136,498,177\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html\" title=\"vk::cameras::Equidistant\\lFisheyeGeometry\" alt=\"\" coords=\"563,5,729,47\"/>\n<area shape=\"rect\" id=\"node5\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\" title=\"vk::cameras::OmniGeometry\" alt=\"\" coords=\"551,78,741,105\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_102.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1EquidistantDistortion\"/>\n<map name=\"vk_1_1cameras_1_1EquidistantDistortion\" id=\"vk_1_1cameras_1_1EquidistantDistortion\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1EquidistantDistortion.html\" title=\"vk::cameras::Equidistant\\lDistortion\" alt=\"\" coords=\"5,5,172,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_103.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1EquidistantFisheyeProjection\"/>\n<map name=\"vk_1_1cameras_1_1EquidistantFisheyeProjection\" id=\"vk_1_1cameras_1_1EquidistantFisheyeProjection\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1EquidistantFisheyeProjection.html\" title=\"vk::cameras::Equidistant\\lFisheyeProjection\" alt=\"\" coords=\"5,5,172,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_104.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1NCamera\"/>\n<map name=\"vk_1_1cameras_1_1NCamera\" id=\"vk_1_1cameras_1_1NCamera\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1NCamera.html\" title=\"vk::cameras::NCamera\" alt=\"\" coords=\"5,5,164,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_105.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1NoDistortion\"/>\n<map name=\"vk_1_1cameras_1_1NoDistortion\" id=\"vk_1_1cameras_1_1NoDistortion\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1NoDistortion.html\" title=\"vk::cameras::NoDistortion\" alt=\"\" coords=\"5,5,180,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_106.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1OmniProjection\"/>\n<map name=\"vk_1_1cameras_1_1OmniProjection\" id=\"vk_1_1cameras_1_1OmniProjection\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1OmniProjection.html\" title=\"vk::cameras::OmniProjection\" alt=\"\" coords=\"5,5,196,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_107.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1PinholeProjection_3_01Distortion_01_4\"/>\n<map name=\"vk_1_1cameras_1_1PinholeProjection_3_01Distortion_01_4\" id=\"vk_1_1cameras_1_1PinholeProjection_3_01Distortion_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\" title=\"vk::cameras::PinholeProjection\\l\\&lt; Distortion \\&gt;\" alt=\"\" coords=\"5,5,208,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_108.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1ProjectionResult\"/>\n<map name=\"vk_1_1cameras_1_1ProjectionResult\" id=\"vk_1_1cameras_1_1ProjectionResult\">\n<area shape=\"rect\" id=\"node1\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\" title=\"This struct is returned by the camera projection methods and holds the result state of the projection...\" alt=\"\" coords=\"5,5,204,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_109.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1cameras_1_1RadialTangentialDistortion\"/>\n<map name=\"vk_1_1cameras_1_1RadialTangentialDistortion\" id=\"vk_1_1cameras_1_1RadialTangentialDistortion\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\" title=\"vk::cameras::RadialTangential\\lDistortion\" alt=\"\" coords=\"5,5,204,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_110.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1Homography\"/>\n<map name=\"vk_1_1Homography\" id=\"vk_1_1Homography\">\n<area shape=\"rect\" id=\"node1\" href=\"structvk_1_1Homography.html\" title=\"vk::Homography\" alt=\"\" coords=\"5,5,124,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_111.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1LogItem\"/>\n<map name=\"vk_1_1LogItem\" id=\"vk_1_1LogItem\">\n<area shape=\"rect\" id=\"node1\" href=\"structvk_1_1LogItem.html\" title=\"vk::LogItem\" alt=\"\" coords=\"5,5,96,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_112.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1PerformanceMonitor\"/>\n<map name=\"vk_1_1PerformanceMonitor\" id=\"vk_1_1PerformanceMonitor\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1PerformanceMonitor.html\" title=\"vk::PerformanceMonitor\" alt=\"\" coords=\"5,5,167,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_113.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1RingBuffer_3_01double_01_4\"/>\n<map name=\"vk_1_1RingBuffer_3_01double_01_4\" id=\"vk_1_1RingBuffer_3_01double_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; double \\&gt;\" alt=\"\" coords=\"5,5,173,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_114.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1RingBuffer_3_01size__t_01_4\"/>\n<map name=\"vk_1_1RingBuffer_3_01size__t_01_4\" id=\"vk_1_1RingBuffer_3_01size__t_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; size_t \\&gt;\" alt=\"\" coords=\"5,5,171,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_115.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1RingBuffer_3_01T_01_4\"/>\n<map name=\"vk_1_1RingBuffer_3_01T_01_4\" id=\"vk_1_1RingBuffer_3_01T_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1RingBuffer.html\" title=\"vk::RingBuffer\\&lt; T \\&gt;\" alt=\"\" coords=\"5,5,144,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_116.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1Sample\"/>\n<map name=\"vk_1_1Sample\" id=\"vk_1_1Sample\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1Sample.html\" title=\"vk::Sample\" alt=\"\" coords=\"5,5,93,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_117.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_011_00_01double_00_01DepthEstimator_01_4\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_011_00_01double_00_01DepthEstimator_01_4\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_011_00_01double_00_01DepthEstimator_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 1, double, DepthEstimator \\&gt;\" alt=\"\" coords=\"5,5,240,47\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1DepthEstimator.html\" title=\"Depth estimation by minimizing photometric error. \" alt=\"\" coords=\"288,13,431,39\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_118.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_012_00_01Eigen_1_1Vector2d_00_01PatchNormal_01_4\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_012_00_01Eigen_1_1Vector2d_00_01PatchNormal_01_4\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_012_00_01Eigen_1_1Vector2d_00_01PatchNormal_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 2, Eigen::Vector2d,\\l PatchNormal \\&gt;\" alt=\"\" coords=\"5,5,196,61\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1PatchNormal.html\" title=\"svo::PatchNormal\" alt=\"\" coords=\"244,20,371,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_119.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_016_00_01Transformation_00_01PoseOptimizer_01_4\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_016_00_01Transformation_00_01PoseOptimizer_01_4\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_016_00_01Transformation_00_01PoseOptimizer_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 6, Transformation,\\l PoseOptimizer \\&gt;\" alt=\"\" coords=\"5,5,196,61\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1PoseOptimizer.html\" title=\"svo::PoseOptimizer\" alt=\"\" coords=\"244,20,381,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_120.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_018_00_01SparseImgAlignState_00_01SparseImgAlignBase_01_4\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_018_00_01SparseImgAlignState_00_01SparseImgAlignBase_01_4\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_018_00_01SparseImgAlignState_00_01SparseImgAlignBase_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; 8, SparseImgAlignState,\\l SparseImgAlignBase \\&gt;\" alt=\"\" coords=\"5,16,219,72\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classsvo_1_1SparseImgAlignBase.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"267,31,440,57\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classsvo_1_1SparseImgAlign.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"500,5,643,32\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classsvo_1_1SparseImgAlignGpu.html\" title=\"Optimize the pose of the frame by minimizing the photometric error of feature patches. \" alt=\"\" coords=\"488,56,655,83\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_121.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolver_3_01D_00_01T_00_01Implementation_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\" title=\"vk::solver::MiniLeastSquares\\lSolver\\&lt; D, T, Implementation \\&gt;\" alt=\"\" coords=\"5,5,212,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_122.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolverOptions\"/>\n<map name=\"vk_1_1solver_1_1MiniLeastSquaresSolverOptions\" id=\"vk_1_1solver_1_1MiniLeastSquaresSolverOptions\">\n<area shape=\"rect\" id=\"node1\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\" title=\"vk::solver::MiniLeastSquares\\lSolverOptions\" alt=\"\" coords=\"5,5,196,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_123.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1ScaleEstimator\"/>\n<map name=\"vk_1_1solver_1_1ScaleEstimator\" id=\"vk_1_1solver_1_1ScaleEstimator\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\" title=\"Scale Estimators to estimate standard deviation of a distribution of errors. \" alt=\"\" coords=\"5,64,181,91\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\" title=\"vk::solver::MADScaleEstimator\" alt=\"\" coords=\"229,5,436,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\" title=\"vk::solver::NormalDistribution\\lScaleEstimator\" alt=\"\" coords=\"235,57,430,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\" title=\"vk::solver::UnitScaleEstimator\" alt=\"\" coords=\"233,123,433,149\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_124.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1solver_1_1WeightFunction\"/>\n<map name=\"vk_1_1solver_1_1WeightFunction\" id=\"vk_1_1solver_1_1WeightFunction\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1solver_1_1WeightFunction.html\" title=\"vk::solver::WeightFunction\" alt=\"\" coords=\"5,56,184,83\"/>\n<area shape=\"rect\" id=\"node2\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\" title=\"vk::solver::HuberWeightFunction\" alt=\"\" coords=\"233,5,446,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\" title=\"vk::solver::TukeyWeightFunction\" alt=\"\" coords=\"232,56,447,83\"/>\n<area shape=\"rect\" id=\"node4\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\" title=\"vk::solver::UnitWeightFunction\" alt=\"\" coords=\"238,107,441,133\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_125.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1Timer\"/>\n<map name=\"vk_1_1Timer\" id=\"vk_1_1Timer\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1Timer.html\" title=\"vk::Timer\" alt=\"\" coords=\"5,5,83,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_126.png\" border=\"0\" alt=\"\" usemap=\"#vk_1_1UserInputThread\"/>\n<map name=\"vk_1_1UserInputThread\" id=\"vk_1_1UserInputThread\">\n<area shape=\"rect\" id=\"node1\" href=\"classvk_1_1UserInputThread.html\" title=\"vk::UserInputThread\" alt=\"\" coords=\"5,5,147,32\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_127.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4\" id=\"YAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\" title=\"YAML::convert\\&lt; Eigen\\l::Matrix\\&lt; Scalar_, A\\l_, B_, C_, D_, E_ \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,160,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_128.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4\" id=\"YAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\" title=\"YAML::convert\\&lt; std\\l::queue\\&lt; ValueType \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,168,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_129.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4\" id=\"YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\" title=\"YAML::convert\\&lt; std\\l::shared_ptr\\&lt; vk::cameras\\l::CameraGeometryBase \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,192,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_130.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4\" id=\"YAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\" title=\"YAML::convert\\&lt; std\\l::shared_ptr\\&lt; vk::cameras\\l::NCamera \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,180,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_131.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4\" id=\"YAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\" title=\"YAML::convert\\&lt; std\\l::unordered_map\\&lt; KeyType,\\l ValueType \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,192,61\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_132.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4\"/>\n<map name=\"YAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4\" id=\"YAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\" title=\"YAML::convert\\&lt; std\\l::unordered_set\\&lt; KeyType \\&gt; \\&gt;\" alt=\"\" coords=\"5,5,205,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_133.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4\"/>\n<map name=\"YAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4\" id=\"YAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\" title=\"YAML::convert\\&lt; vk::\\lcameras::CameraGeometryBase \\&gt;\" alt=\"\" coords=\"5,5,231,47\"/>\n</map>\n</td></tr>\n<tr><td><img src=\"inherit_graph_134.png\" border=\"0\" alt=\"\" usemap=\"#YAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4\"/>\n<map name=\"YAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4\" id=\"YAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4\">\n<area shape=\"rect\" id=\"node1\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\" title=\"YAML::convert\\&lt; vk::\\lcameras::NCamera \\&gt;\" alt=\"\" coords=\"5,5,153,47\"/>\n</map>\n</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/initialization_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/initialization.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">initialization.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">class </span>StereoTriangulation;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">class </span>FeatureTracker;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">using</span> FeatureTrackerUniquePtr = std::unique_ptr&lt;FeatureTracker&gt;;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">class </span>AbstractDetector;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">struct </span>DetectorOptions;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">struct </span>FeatureTrackerOptions;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">   25</a></span>&#160;<span class=\"keyword\">enum class</span> <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">InitializerType</a> {</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\">kHomography</a>,       </div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59\">kTwoPoint</a>,         </div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554\">kFivePoint</a>,        </div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3\">kOneShot</a>,          </div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\">kStereo</a>,           </div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6\">kArrayGeometric</a>,   </div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb\">kArrayOptimization</a> </div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;};</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html\">   37</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;{</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136\">   41</a></span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">InitializerType</a> init_type = <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\">InitializerType::kHomography</a>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a\">   48</a></span>&#160;  <span class=\"keywordtype\">double</span> init_min_disparity = 50.0;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4\">   56</a></span>&#160;  <span class=\"keywordtype\">double</span> init_disparity_pivot_ratio = 0.5;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36\">   60</a></span>&#160;  <span class=\"keywordtype\">size_t</span> init_min_features = 100;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace\">   65</a></span>&#160;  <span class=\"keywordtype\">double</span> init_min_features_factor = 2.5;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2\">   69</a></span>&#160;  <span class=\"keywordtype\">size_t</span> init_min_tracked = 50;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb\">   76</a></span>&#160;  <span class=\"keywordtype\">size_t</span> init_min_inliers = 40;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56\">   79</a></span>&#160;  <span class=\"keywordtype\">double</span> reproj_error_thresh = 2.0;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"comment\">// TODO: what are these for? (introduced by Art)</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keywordtype\">double</span> expected_avg_depth = 1.0;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keywordtype\">double</span> init_min_depth_error = 1.0;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;};</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"keyword\">enum class</span> InitResult</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;{</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  kFailure,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  kNoKeyframe,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\">kTracking</a>,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  kSuccess</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;};</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html\">   96</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;{</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  <span class=\"keyword\">using</span> BearingVectors = std::vector&lt;Eigen::Vector3d, Eigen::aligned_allocator&lt;Eigen::Vector3d&gt;&gt;;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  <span class=\"keyword\">using</span> Ptr = std::shared_ptr&lt;AbstractInitialization&gt;;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keyword\">using</span> UniquePtr = std::unique_ptr&lt;AbstractInitialization&gt;;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keyword\">using</span> InlierMask = Eigen::Matrix&lt;bool, Eigen::Dynamic, 1, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  <span class=\"keyword\">using</span> FeatureMatches = std::vector&lt;std::pair&lt;size_t, size_t&gt;&gt;;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">  107</a></span>&#160;  <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">options_</a>;       </div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">  108</a></span>&#160;  FeatureTrackerUniquePtr <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">tracker_</a>;     </div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">  109</a></span>&#160;  FrameBundlePtr <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">frames_ref_</a>;           </div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">  110</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">T_cur_from_ref_</a>;       </div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  Quaternion R_ref_world_;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">  112</a></span>&#160;  Quaternion <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">R_cur_world_</a>;              </div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">  113</a></span>&#160;  Eigen::Vector3d <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">t_ref_cur_</a>;           </div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0\">  114</a></span>&#160;  <span class=\"keywordtype\">bool</span> have_rotation_prior_ = <span class=\"keyword\">false</span>;    </div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686\">  115</a></span>&#160;  <span class=\"keywordtype\">bool</span> have_translation_prior_ = <span class=\"keyword\">false</span>; </div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac\">  116</a></span>&#160;  <span class=\"keywordtype\">bool</span> have_depth_prior_ = <span class=\"keyword\">false</span>;       </div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c\">  117</a></span>&#160;  <span class=\"keywordtype\">double</span> depth_at_current_frame_ = 1.0; </div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a>(</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector_options,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> CameraBundlePtr&amp; cams);</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a>();</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keywordtype\">bool</span> trackFeaturesAndCheckDisparity(<span class=\"keyword\">const</span> FrameBundlePtr&amp; frames);</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(<span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) = 0;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setAbsoluteOrientationPrior(<span class=\"keyword\">const</span> Quaternion&amp; R_cam_world)</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  {</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    R_cur_world_ = R_cam_world;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    have_rotation_prior_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  }</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setTranslationPrior(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; t_ref_cur) {</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    t_ref_cur_ = t_ref_cur;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;    have_translation_prior_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  }</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setDepthPrior(<span class=\"keywordtype\">double</span> depth) {</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    depth_at_current_frame_ = depth;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    have_depth_prior_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;  }</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;};</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1HomographyInit.html\">  152</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;{</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;};</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1TwoPointInit.html\">  165</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;{</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;};</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1FivePointInit.html\">  176</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;{</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;};</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1OneShotInit.html\">  188</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;{</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;};</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1StereoInit.html\">  198</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;{</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;  <a class=\"code\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a>(</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector_options,</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;      <span class=\"keyword\">const</span> CameraBundlePtr&amp; cams);</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;  std::unique_ptr&lt;StereoTriangulation&gt; stereo_;</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;  std::shared_ptr&lt;AbstractDetector&gt; detector_;</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;};</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ArrayInitGeometric.html\">  217</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;{</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;};</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1ArrayInitOptimization.html\">  227</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;{</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;  <span class=\"keyword\">using</span> AbstractInitialization::AbstractInitialization;</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;  <span class=\"keyword\">virtual</span> InitResult addFrameBundle(</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frames_cur) <span class=\"keyword\">override</span>;</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;};</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;<span class=\"keyword\">namespace </span>initialization_utils {</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;</div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\">  240</span>&#160;<span class=\"keywordtype\">bool</span> triangulateAndInitializePoints(</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_cur,</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_ref,</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reprojection_threshold,</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_at_current_frame,</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> min_inliers_threshold,</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;    AbstractInitialization::FeatureMatches&amp; matches_cur_ref);</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;<span class=\"keywordtype\">void</span> triangulatePoints(</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame_cur,</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame_ref,</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reprojection_threshold,</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;    AbstractInitialization::FeatureMatches&amp; matches_cur_ref,</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;    Positions&amp; points_in_cur);</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;<span class=\"keywordtype\">void</span> rescaleAndInitializePoints(</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_cur,</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_ref,</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;    <span class=\"keyword\">const</span> AbstractInitialization::FeatureMatches&amp; matches_cur_ref,</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;    <span class=\"keyword\">const</span> Positions&amp; points_in_cur,</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_at_current_frame);</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;<span class=\"keywordtype\">void</span> displayFeatureTracks(</div><div class=\"line\"><a name=\"l00266\"></a><span class=\"lineno\">  266</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_cur,</div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\">  267</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; frame_ref);</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;AbstractInitialization::UniquePtr makeInitializer(</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a>&amp; init_options,</div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\">  271</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a>&amp; tracker_options,</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a>&amp; detector_options,</div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;    <span class=\"keyword\">const</span> std::shared_ptr&lt;CameraBundle&gt;&amp; camera_array);</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;</div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;<span class=\"keywordtype\">void</span> copyBearingVectors(</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame_cur,</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame_ref,</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;    <span class=\"keyword\">const</span> AbstractInitialization::FeatureMatches&amp; matches_cur_ref,</div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;    AbstractInitialization::BearingVectors* f_cur,</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;    AbstractInitialization::BearingVectors* f_ref);</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> angleError(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; f1, <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f2)</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;{</div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;  <span class=\"keywordflow\">return</span> std::acos(f1.dot(f2) / (f1.norm()*f2.norm()));</div><div class=\"line\"><a name=\"l00285\"></a><span class=\"lineno\">  285</span>&#160;}</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;} <span class=\"comment\">// namespace initialization_utils</span></div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;</div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_a43599f8bcbdd69c18149b1448f2f6c2d\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d\">svo::AbstractInitialization::frames_ref_</a></div><div class=\"ttdeci\">FrameBundlePtr frames_ref_</div><div class=\"ttdoc\">reference frames </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:109</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6\">svo::InitializerType::kArrayGeometric</a></div><div class=\"ttdoc\">Estimate relative pose of two camera arrays, using 17pt RANSAC. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1DetectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></div><div class=\"ttdoc\">Common options of all feature detectors. </div><div class=\"ttdef\"><b>Definition:</b> feature_detection_types.h:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html\">svo::AbstractInitialization</a></div><div class=\"ttdoc\">Bootstrapping the map from the first two views. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:96</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3\">svo::InitializerType::kOneShot</a></div><div class=\"ttdoc\">Initialize points on a plane with given depth. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1HomographyInit_html\"><div class=\"ttname\"><a href=\"classsvo_1_1HomographyInit.html\">svo::HomographyInit</a></div><div class=\"ttdoc\">Tracks features using Lucas-Kanade tracker and then estimates a homography. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:152</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1TwoPointInit_html\"><div class=\"ttname\"><a href=\"classsvo_1_1TwoPointInit.html\">svo::TwoPointInit</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:165</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb\">svo::InitializerType::kArrayOptimization</a></div><div class=\"ttdoc\">Estimate relative pose of two camera arrays using GTSAM. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_a6a50df992c918076ae1ff5e7cb645838\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838\">svo::AbstractInitialization::R_cur_world_</a></div><div class=\"ttdeci\">Quaternion R_cur_world_</div><div class=\"ttdoc\">Absolute orientation prior. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:112</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ArrayInitGeometric_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ArrayInitGeometric.html\">svo::ArrayInitGeometric</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:217</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">svo::InitializerType</a></div><div class=\"ttdeci\">InitializerType</div><div class=\"ttdef\"><b>Definition:</b> initialization.h:25</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureTrackerOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></div><div class=\"ttdef\"><b>Definition:</b> feature_tracking_types.h:9</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_a7d2735111e496273cab33e274b0eec33\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33\">svo::AbstractInitialization::t_ref_cur_</a></div><div class=\"ttdeci\">Eigen::Vector3d t_ref_cur_</div><div class=\"ttdoc\">Translation prior. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:113</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\">svo::InitializerType::kStereo</a></div><div class=\"ttdoc\">Triangulate from two views with known pose. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_aa22cfe13c5fecb2143a98267014b4166\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166\">svo::AbstractInitialization::T_cur_from_ref_</a></div><div class=\"ttdeci\">Transformation T_cur_from_ref_</div><div class=\"ttdoc\">computed transformation between the first two frames. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:110</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\"><div class=\"ttname\"><a href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\">svo::Stage::kTracking</a></div><div class=\"ttdoc\">Stage when SVO is running and everything is well. </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_ae2e24cfe6f93e061880908e8056fa91d\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d\">svo::AbstractInitialization::tracker_</a></div><div class=\"ttdeci\">FeatureTrackerUniquePtr tracker_</div><div class=\"ttdoc\">Feature tracker. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:108</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\">svo::InitializerType::kHomography</a></div><div class=\"ttdoc\">Estimates a plane from the first two views. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1OneShotInit_html\"><div class=\"ttname\"><a href=\"classsvo_1_1OneShotInit.html\">svo::OneShotInit</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:188</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1StereoInit_html\"><div class=\"ttname\"><a href=\"classsvo_1_1StereoInit.html\">svo::StereoInit</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:198</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554\">svo::InitializerType::kFivePoint</a></div><div class=\"ttdoc\">Estimate relative pose of two cameras using 5pt RANSAC. </div></div>\n<div class=\"ttc\" id=\"classsvo_1_1ArrayInitOptimization_html\"><div class=\"ttname\"><a href=\"classsvo_1_1ArrayInitOptimization.html\">svo::ArrayInitOptimization</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:227</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59\">svo::InitializerType::kTwoPoint</a></div><div class=\"ttdoc\">Assumes known rotation from IMU and estimates translation. </div></div>\n<div class=\"ttc\" id=\"structsvo_1_1InitializationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> initialization.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1FivePointInit_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FivePointInit.html\">svo::FivePointInit</a></div><div class=\"ttdoc\">Tracks features using KLT and then estimate the relative pose using 5pt RANSAC. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:176</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1AbstractInitialization_html_ac1068444d04d307ce094ffa2a0316adb\"><div class=\"ttname\"><a href=\"classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb\">svo::AbstractInitialization::options_</a></div><div class=\"ttdeci\">InitializationOptions options_</div><div class=\"ttdoc\">Initializer options. </div><div class=\"ttdef\"><b>Definition:</b> initialization.h:107</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/interpolation_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/evo_utils/interpolation.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">interpolation.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef INTERPOLATION_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define INTERPOLATION_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;gflags/gflags.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceevo__utils_1_1interpolate.html\">evo_utils::interpolate</a> {</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keywordtype\">float</span> bilinear(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>* img, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> w, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> h, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;               <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y) {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keywordflow\">if</span> (x &lt; 0 || y &lt; 0) <span class=\"keywordflow\">return</span> -1.f;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keywordtype\">size_t</span> px = (size_t)x, py = (<span class=\"keywordtype\">size_t</span>)y;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordflow\">if</span> (px + 1 &gt;= w || py + 1 &gt;= h) <span class=\"keywordflow\">return</span> -1.f;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"comment\">// Load Pixel Values</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>* addr = img + px + py * w;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> p1 = addr[0], p2 = addr[1], p3 = addr[w], p4 = addr[w + 1];</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"comment\">// Compute Weights</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keywordtype\">float</span> fx = x - px, fy = y - py, fx1 = 1.0f - fx, fy1 = 1.0f - fy;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keywordtype\">float</span> w1 = fx1 * fy1, w2 = fx * fy1, w3 = fx1 * fy, w4 = fx * fy;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keywordflow\">return</span> p1 * w1 + p2 * w2 + p3 * w3 + p4 * w4;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;}</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> bilinear(<span class=\"keyword\">const</span> cv::Mat&amp; img, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y) {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keywordflow\">return</span> bilinear((<span class=\"keywordtype\">float</span>*)img.data, (<span class=\"keywordtype\">size_t</span>)img.cols, (<span class=\"keywordtype\">size_t</span>)img.rows, x, y);</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;}</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;<span class=\"keywordtype\">float</span> nn(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>* img, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> w, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> h, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;         <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y) {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    <span class=\"keywordflow\">if</span> (x &lt; 0 || y &lt; 0) <span class=\"keywordflow\">return</span> -1;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    <span class=\"keywordtype\">size_t</span> px = <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">size_t</span><span class=\"keyword\">&gt;</span>(x + .5f), py = static_cast&lt;size_t&gt;(y + .5f);</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keywordflow\">if</span> (px &gt;= w || py &gt;= h) <span class=\"keywordflow\">return</span> -1;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keywordflow\">return</span> img[px + py * w];</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;}</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;<span class=\"keywordtype\">void</span> draw(cv::Mat&amp; img, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> y, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> val) {</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> w = img.cols, h = img.rows;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    <span class=\"keywordflow\">if</span> (x &lt; 0 || y &lt; 0) <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> px = (int)x, py = (<span class=\"keywordtype\">int</span>)y;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keywordflow\">if</span> (px + 1 &gt;= w || py + 1 &gt;= h) <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"keywordtype\">float</span>* data = (<span class=\"keywordtype\">float</span>*)img.data;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> fx = x - px, fy = y - py;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    data[px + py * w] += val * (1.f - fx) * (1.f - fy);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    data[px + 1 + py * w] += val * (fx) * (1.f - fy);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    data[px + (py + 1) * w] += val * (1.f - fx) * (fy);</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    data[px + 1 + (py + 1) * w] += val * (fx) * (fy);</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;}</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;}  <span class=\"comment\">// namespace interpolate</span></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;<span class=\"preprocessor\">#endif  // INTERPOLATION_HPP</span></div><div class=\"ttc\" id=\"namespaceevo__utils_1_1interpolate_html\"><div class=\"ttname\"><a href=\"namespaceevo__utils_1_1interpolate.html\">evo_utils::interpolate</a></div><div class=\"ttdef\"><b>Definition:</b> interpolation.hpp:11</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/io_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/io.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">io.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;svo/map.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>io {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keywordtype\">bool</span> saveMap(</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;    <span class=\"keyword\">const</span> Map::Ptr&amp; map,</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; save_dir,</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; map_name);</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keywordtype\">bool</span> loadMap(</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;    <span class=\"keyword\">const</span> std::string&amp; save_dir,</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;    Map::Ptr&amp; map);</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;} <span class=\"comment\">// namespace io</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v1.7.1\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n * Copyright 2011, The Dojo Foundation\n * Released under the MIT, BSD, and GPL Licenses.\n *\n * Date: Mon Nov 21 21:11:03 2011 -0500\n */\n(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,bM=/\\S/,bI=/^\\s+/,bE=/\\s+$/,bA=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,bN=/^[\\],:{}\\s]*$/,bW=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,bJ=/(?:^|:|,)(?:\\s*\\[)+/g,by=/(webkit)[ \\/]([\\w.]+)/,bR=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,bQ=/(msie) ([\\w.]+)/,bS=/(mozilla)(?:.*? rv:([\\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+\"\").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0===\"body\"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0===\"string\"){if(b0.charAt(0)===\"<\"&&b0.charAt(b0.length-1)===\">\"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:\"\",jquery:\"1.7.1\",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3===\"find\"){b2.selector=this.selector+(this.selector?\" \":\"\")+b0}else{if(b3){b2.selector=this.selector+\".\"+b3+\"(\"+b0+\")\"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),\"slice\",bK.call(arguments).join(\",\"))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5===\"boolean\"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!==\"object\"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger(\"ready\").off(\"ready\")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks(\"once memory\");if(av.readyState===\"complete\"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener(\"DOMContentLoaded\",e,false);bb.addEventListener(\"load\",bF.ready,false)}else{if(av.attachEvent){av.attachEvent(\"onreadystatechange\",e);bb.attachEvent(\"onload\",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)===\"function\"},isArray:Array.isArray||function(b0){return bF.type(b0)===\"array\"},isWindow:function(b0){return b0&&typeof b0===\"object\"&&\"setInterval\" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||\"object\"},isPlainObject:function(b2){if(!b2||bF.type(b2)!==\"object\"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,\"constructor\")&&!bG.call(b2.constructor.prototype,\"isPrototypeOf\")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!==\"string\"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,\"@\").replace(bP,\"]\").replace(bJ,\"\"))){return(new Function(\"return \"+b0))()}bF.error(\"Invalid JSON: \"+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,\"text/xml\")}else{b0=new ActiveXObject(\"Microsoft.XMLDOM\");b0.async=\"false\";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName(\"parsererror\").length){bF.error(\"Invalid XML: \"+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb[\"eval\"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,\"ms-\").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?\"\":bO.call(b0)}:function(b0){return b0==null?\"\":b0.toString().replace(bI,\"\").replace(bE,\"\")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2===\"string\"||b2===\"function\"||b2===\"regexp\"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length===\"number\"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1===\"number\"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3===\"string\"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8===\"object\"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf(\"compatible\")<0&&bS.exec(b1)||[];return{browser:b0[1]||\"\",version:b0[2]||\"0\"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(b1,b0){bx[\"[object \"+b0+\"]\"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test(\"\\xA0\")){bI=/^[\\s\\xA0]+/;bE=/[\\s\\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener(\"DOMContentLoaded\",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState===\"complete\"){av.detachEvent(\"onreadystatechange\",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll(\"left\")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH===\"array\"){bE(bI)}else{if(bH===\"function\"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks(\"once memory\"),bw=b.Callbacks(\"once memory\"),bv=b.Callbacks(\"memory\"),e=\"pending\",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,\"resolve\"],fail:[bE,\"reject\"],progress:[bD,\"notify\"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+\"With\"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+\"With\"]=bA[bz].fireWith}bB.done(function(){e=\"resolved\"},bw.disable,bv.lock).fail(function(){e=\"rejected\"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement(\"div\"),bH=av.documentElement;bv.setAttribute(\"className\",\"t\");bv.innerHTML=\"   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>\";bI=bv.getElementsByTagName(\"*\");bF=bv.getElementsByTagName(\"a\")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement(\"select\");bx=bG.appendChild(av.createElement(\"option\"));bE=bv.getElementsByTagName(\"input\")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName(\"tbody\").length,htmlSerialize:!!bv.getElementsByTagName(\"link\").length,style:/top/.test(bF.getAttribute(\"style\")),hrefNormalized:(bF.getAttribute(\"href\")===\"/a\"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value===\"on\"),optSelected:bx.selected,getSetAttribute:bv.className!==\"t\",enctype:!!av.createElement(\"form\").enctype,html5Clone:av.createElement(\"nav\").cloneNode(true).outerHTML!==\"<:nav></:nav>\",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent(\"onclick\",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent(\"onclick\")}bE=av.createElement(\"input\");bE.value=\"t\";bE.setAttribute(\"type\",\"radio\");bJ.radioValue=bE.value===\"t\";bE.setAttribute(\"checked\",\"checked\");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML=\"\";if(bb.getComputedStyle){bA=av.createElement(\"div\");bA.style.width=\"0\";bA.style.marginRight=\"0\";bv.style.width=\"2px\";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB=\"on\"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,\"return;\");bw=(typeof bv[bB]===\"function\")}bJ[by+\"Bubbles\"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName(\"body\")[0];if(!bQ){return}bL=1;bS=\"position:absolute;top:0;left:0;width:1px;height:1px;margin:0;\";bR=\"visibility:hidden;border:0;\";e=\"style='\"+bS+\"border:5px solid #000;padding:0;'\";bP=\"<div \"+e+\"><div></div></div><table \"+e+\" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>\";bM=av.createElement(\"div\");bM.style.cssText=bR+\"width:0;height:0;position:static;top:0;margin-top:\"+bL+\"px\";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement(\"div\");bM.appendChild(bv);bv.innerHTML=\"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>\";bz=bv.getElementsByTagName(\"td\");bw=(bz[0].offsetHeight===0);bz[0].style.display=\"\";bz[1].style.display=\"none\";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML=\"\";bv.style.width=bv.style.paddingLeft=\"1px\";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!==\"undefined\"){bv.style.display=\"inline\";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display=\"\";bv.innerHTML=\"<div style='width:4px;'></div>\";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position=\"fixed\";bV.style.top=\"20px\";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top=\"\";bU.style.overflow=\"hidden\";bU.style.position=\"relative\";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\\{.*\\}|\\[.*\\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:\"jQuery\"+(b.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:true,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv===\"string\",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv===\"events\";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv===\"object\"||typeof bv===\"function\"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(\" \")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute(\"classid\")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by===\"undefined\"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],\"parsedAttrs\")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf(\"data-\")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],\"parsedAttrs\",true)}}return bz}else{if(typeof by===\"object\"){return this.each(function(){b.data(this,by)})}}bB=by.split(\".\");bB[1]=bB[1]?\".\"+bB[1]:\"\";if(bA===L){bz=this.triggerHandler(\"getData\"+bB[1]+\"!\",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler(\"setData\"+bB[1]+\"!\",bD);b.data(this,by,bA);bC.triggerHandler(\"changeData\"+bB[1]+\"!\",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv=\"data-\"+bw.replace(aA,\"-$1\").toLowerCase();by=bx.getAttribute(bv);if(typeof by===\"string\"){try{by=by===\"true\"?true:by===\"false\"?false:by===\"null\"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e===\"data\"&&b.isEmptyObject(bv[e])){continue}if(e!==\"toJSON\"){return false}}return true}function bi(by,bx,bA){var bw=bx+\"defer\",bv=bx+\"queue\",e=bx+\"mark\",bz=b._data(by,bw);if(bz&&(bA===\"queue\"||!b._data(by,bv))&&(bA===\"mark\"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||\"fx\")+\"mark\";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||\"fx\";var e=bv+\"mark\",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,\"mark\")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||\"fx\")+\"queue\";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||\"fx\";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw===\"inprogress\"){bw=bv.shift()}if(bw){if(bx===\"fx\"){bv.unshift(\"inprogress\")}b._data(by,bx+\".run\",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+\"queue \"+bx+\".run\",true);bi(by,bx,\"queue\")}}});b.fn.extend({queue:function(e,bv){if(typeof e!==\"string\"){bv=e;e=\"fx\"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e===\"fx\"&&bw[0]!==\"inprogress\"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||\"fx\";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(bD,bw){if(typeof bD!==\"string\"){bw=bD;bD=L}bD=bD||\"fx\";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+\"defer\",bA=bD+\"queue\",bC=bD+\"mark\",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks(\"once memory\"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\\n\\t\\r]/g,af=/\\s+/,aU=/\\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by===\"string\"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=\" \"+bx.className+\" \";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(\" \"+bA[bB]+\" \")){bz+=bA[bB]+\" \"}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz===\"string\")||bz===L){bA=(bz||\"\").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(\" \"+by.className+\" \").replace(aP,\" \");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(\" \"+bA[bB]+\" \",\" \")}by.className=b.trim(bx)}else{by.className=\"\"}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv===\"boolean\";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw===\"string\"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?\"addClass\":\"removeClass\"](bA)}}else{if(bw===\"undefined\"||bw===\"boolean\"){if(this.className){b._data(this,\"__className__\",this.className)}this.className=this.className||bx===false?\"\":b._data(this,\"__className__\")||\"\"}}})},hasClass:function(e){var bx=\" \"+e+\" \",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(\" \"+this[bw].className+\" \").replace(aP,\" \").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&\"get\" in e&&(bv=e.get(bw,\"value\"))!==L){return bv}bv=bw.value;return typeof bv===\"string\"?bv.replace(aU,\"\"):bv==null?\"\":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=\"\"}else{if(typeof bB===\"number\"){bB+=\"\"}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?\"\":bC+\"\"})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!(\"set\" in e)||e.set(this,bB,\"value\")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type===\"select-one\";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute(\"disabled\")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,\"optgroup\"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find(\"option\").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute===\"undefined\"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&\"set\" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,\"\"+bB);return bB}}}else{if(e&&\"get\" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,\"\");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error(\"type property can't be changed\")}else{if(!b.support.radioValue&&bv===\"radio\"&&b.nodeName(e,\"input\")){var bw=e.value;e.setAttribute(\"type\",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,\"button\")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,\"button\")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&\"set\" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&\"get\" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode(\"tabindex\");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!==\"boolean\"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!==\"\":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+\"\")}};b.attrHooks.tabindex.set=be.set;b.each([\"width\",\"height\"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===\"\"){bw.setAttribute(e,\"auto\");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===\"\"){bw=\"false\"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each([\"href\",\"src\",\"width\",\"height\"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=\"\"+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype=\"encoding\"}if(!b.support.checkOn){b.each([\"radio\",\"checkbox\"],function(){b.valHooks[this]={get:function(e){return e.getAttribute(\"value\")===null?\"on\":e.value}}})}b.each([\"radio\",\"checkbox\"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\\.]*)?(?:\\.(.+))?$/,J=/\\bhover(\\.\\S+)?\\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||\"\").toLowerCase();bv[3]=bv[3]&&new RegExp(\"(?:^|\\\\s)\"+bv[3]+\"(?:\\\\s|$)\")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv[\"class\"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,\"mouseenter$1 mouseleave$1\")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!==\"undefined\"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(\" \");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||\"\").split(\".\").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(\".\")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent(\"on\"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||\"\")).split(\" \");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp(\"(^|\\\\.)\"+bC.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH===\"**\"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,[\"events\",\"handle\"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf(\"!\")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(\".\")>=0){bx=bG.split(\".\");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv===\"object\"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(\".\");bv.namespace_re=bv.namespace?new RegExp(\"(^|\\\\.)\"+bx.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;by=bG.indexOf(\":\")<0?\"on\"+bG:\"\";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,\"events\")||{})[bv.type]&&b._data(bH,\"handle\");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG===\"click\"&&b.nodeName(bA,\"a\"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!==\"focus\"&&bG!==\"blur\")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,\"events\")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type===\"click\")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent(\"on\"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,\"form\")){return false}b.event.add(this,\"click._submit keypress._submit\",function(bx){var bw=bx.target,bv=b.nodeName(bw,\"input\")||b.nodeName(bw,\"button\")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,\"submit._submit\",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate(\"submit\",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,\"form\")){return false}b.event.remove(this,\"._submit\")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\"){b.event.add(this,\"propertychange._change\",function(e){if(e.originalEvent.propertyName===\"checked\"){this._just_changed=true}});b.event.add(this,\"click._change\",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate(\"change\",this,e,true)}})}return false}b.event.add(this,\"beforeactivate._change\",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,\"change._change\",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate(\"change\",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!==\"radio\"&&e.type!==\"checkbox\")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,\"._change\");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:\"focusin\",blur:\"focusout\"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw===\"object\"){if(typeof e!==\"string\"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e===\"string\"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+\".\"+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw===\"object\"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e===\"function\"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||\"**\",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,\"**\"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,\"lastToggle\"+bx.guid)||0)%bw;b._data(this,\"lastToggle\"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each((\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\").split(\" \"),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});\n/*!\n * Sizzle CSS Selector Engine\n *  Copyright 2011, The Dojo Foundation\n *  Released under the MIT, BSD, and GPL Licenses.\n *  More information: http://sizzlejs.com/\n */\n(function(){var bH=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,bC=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\\\/g,bO=/\\r\\n/g,bQ=/\\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!==\"string\"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec(\"\");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]===\"~\"||bW[0]===\"+\")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=\"\"}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)===\"[object Array]\"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!==\"\\\\\"){bT[1]=(bT[1]||\"\").replace(bK,\"\");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],\"\");break}}}}if(!bW){bW=typeof e.getElementsByTagName!==\"undefined\"?e.getElementsByTagName(\"*\"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)===\"\\\\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],\"\");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR=\"\";if(e){if(e===1||e===9){if(typeof bU.textContent===\"string\"){return bU.textContent}else{if(typeof bU.innerText===\"string\"){return bU.innerText.replace(bO,\"\")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(e){return e.getAttribute(\"href\")},type:function(e){return e.getAttribute(\"type\")}},relative:{\"+\":function(bW,bR){var bT=typeof bR===\"string\",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},\">\":function(bW,bR){var bV,bU=typeof bR===\"string\",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},\"\":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR===\"string\"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e(\"parentNode\",bR,bS,bT,bU,bV)},\"~\":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR===\"string\"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e(\"previousSibling\",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!==\"undefined\"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!==\"undefined\"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute(\"name\")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!==\"undefined\"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=\" \"+bT[1].replace(bK,\"\")+\" \";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(\" \"+bV.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,\"\")},TAG:function(bR,e){return bR[1].replace(bK,\"\").toLowerCase()},CHILD:function(e){if(e[1]===\"nth\"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\\+|\\s*/g,\"\");var bR=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(e[2]===\"even\"&&\"2n\"||e[2]===\"odd\"&&\"2n+1\"||!/\\D/.test(e[2])&&\"0n+\"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,\"\");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||\"\").replace(bK,\"\");if(bU[2]===\"~=\"){bU[4]=\" \"+bU[4]+\" \"}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]===\"not\"){if((bH.exec(bU[3])||\"\").length>1||/^\\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!==\"hidden\"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute(\"type\"),bR=bS.type;return bS.nodeName.toLowerCase()===\"input\"&&\"text\"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"radio\"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"checkbox\"===e.type},file:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"file\"===e.type},password:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"password\"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e===\"input\"||e===\"button\")&&\"submit\"===bR.type},image:function(e){return e.nodeName.toLowerCase()===\"input\"&&\"image\"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e===\"input\"||e===\"button\")&&\"reset\"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e===\"input\"&&\"button\"===bR.type||e===\"button\"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e===\"contains\"){return(bS.textContent||bS.innerText||bw([bS])||\"\").indexOf(bX[3])>=0}else{if(e===\"not\"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case\"only\":case\"first\":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX===\"first\"){return true}bR=bS;case\"last\":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case\"nth\":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute(\"id\")===e},TAG:function(bR,e){return(e===\"*\"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(\" \"+(bR.className||bR.getAttribute(\"class\"))+\" \").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+\"\",bU=bT[2],bR=bT[4];return e==null?bU===\"!=\":!bU&&by.attr?e!=null:bU===\"=\"?bW===bR:bU===\"*=\"?bW.indexOf(bR)>=0:bU===\"~=\"?(\" \"+bW+\" \").indexOf(bR)>=0:!bR?bW&&e!==false:bU===\"!=\"?bW!==bR:bU===\"^=\"?bW.indexOf(bR)===0:bU===\"$=\"?bW.substr(bW.length-bR.length)===bR:bU===\"|=\"?bW===bR||bW.substr(0,bR.length+1)===bR+\"-\":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return\"\\\\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\\[]*\\])(?![^\\(]*\\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+bE.match[bz].source.replace(/\\\\(\\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)===\"[object Array]\"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length===\"number\"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement(\"div\"),bS=\"script\"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML=\"<a name='\"+bS+\"'/>\";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!==\"undefined\"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!==\"undefined\"&&bT.getAttributeNode(\"id\").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!==\"undefined\"&&bV.getAttributeNode(\"id\");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement(\"div\");e.appendChild(av.createComment(\"\"));if(e.getElementsByTagName(\"*\").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]===\"*\"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML=\"<a href='#'></a>\";if(e.firstChild&&typeof e.firstChild.getAttribute!==\"undefined\"&&e.firstChild.getAttribute(\"href\")!==\"#\"){bE.attrHandle.href=function(bR){return bR.getAttribute(\"href\",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement(\"div\"),bS=\"__sizzle__\";bT.innerHTML=\"<p class='TEST'></p>\";if(bT.querySelectorAll&&bT.querySelectorAll(\".TEST\").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4===\"body\"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!==\"object\"){var bW=bV,bX=bV.getAttribute(\"id\"),bU=bX||bS,b6=bV.parentNode,b5=/^\\s*[+~]/.test(b4);if(!bX){bV.setAttribute(\"id\",bU)}else{bU=bU.replace(/'/g,\"\\\\$&\")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll(\"[id='\"+bU+\"'] \"+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute(\"id\")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement(\"div\"),\"div\"),bR=false;try{bS.call(av.documentElement,\"[test!='']:sizzle\")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement(\"div\");e.innerHTML=\"<div class='test e'></div><div class='test'></div>\";if(!e.getElementsByClassName||e.getElementsByClassName(\"e\").length===0){return}e.lastChild.className=\"e\";if(e.getElementsByClassName(\"e\").length===1){return}bE.order.splice(1,0,\"CLASS\");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!==\"undefined\"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!==\"string\"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!==\"HTML\":false};var bM=function(bS,e,bW){var bV,bX=[],bU=\"\",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,\"\")}bS=bE.relative[bS]?bS+\"*\":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[\":\"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!==\"string\"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack(\"\",\"find\",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),\"not\",e)},filter:function(e){return this.pushStack(aG(this,e,true),\"filter\",e)},is:function(e){return !!e&&(typeof e===\"string\"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!==\"string\"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,\"closest\",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e===\"string\"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e===\"string\"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,\"parentNode\")},parentsUntil:function(bv,e,bw){return b.dir(bv,\"parentNode\",bw)},next:function(e){return b.nth(e,2,\"nextSibling\")},prev:function(e){return b.nth(e,2,\"previousSibling\")},nextAll:function(e){return b.dir(e,\"nextSibling\")},prevAll:function(e){return b.dir(e,\"previousSibling\")},nextUntil:function(bv,e,bw){return b.dir(bv,\"nextSibling\",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,\"previousSibling\",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw===\"string\"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(\",\"))}});b.extend({filter:function(bw,e,bv){if(bv){bw=\":not(\"+bw+\")\"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw===\"string\"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split(\"|\"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR=\"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",ag=/ jQuery\\d+=\"(?:\\d+|null)\"/g,ar=/^\\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,d=/<([\\w:]+)/,w=/<tbody/i,W=/<|&#?\\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp(\"<(?:\"+aR+\")\",\"i\"),o=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bm=/\\/(java|ecma)script/i,aN=/^\\s*<!(?:\\[CDATA\\[|\\-\\-)/,ax={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],area:[1,\"<map>\",\"</map>\"],_default:[0,\"\",\"\"]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,\"div<div>\",\"</div>\"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!==\"object\"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,\"body\")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,\"before\",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,\"after\",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName(\"*\"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName(\"*\"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,\"\"):null}else{if(typeof bx===\"string\"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||[\"\",\"\"])[1].toLowerCase()]){bx=bx.replace(R,\"<$1></$2>\");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName(\"*\"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!==\"string\"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),\"replaceWith\",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC===\"string\"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,\"tr\");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,\"table\")?(e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?\".\":\"\")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw===\"object\"){e.outerHTML=bv.outerHTML}else{if(bw===\"input\"&&(bv.type===\"checkbox\"||bv.type===\"radio\")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw===\"option\"){e.selected=bv.defaultSelected}else{if(bw===\"input\"||bw===\"textarea\"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB===\"string\"&&bB.length<512&&bA===av&&bB.charAt(0)===\"<\"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!==\"undefined\"){return e.getElementsByTagName(\"*\")}else{if(typeof e.querySelectorAll!==\"undefined\"){return e.querySelectorAll(\"*\")}else{return[]}}}function az(e){if(e.type===\"checkbox\"||e.type===\"radio\"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||\"\").toLowerCase();if(bv===\"input\"){az(e)}else{if(bv!==\"script\"&&typeof e.getElementsByTagName!==\"undefined\"){b.grep(e.getElementsByTagName(\"input\"),az)}}}function al(e){var bv=av.createElement(\"div\");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test(\"<\"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement===\"undefined\"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz===\"number\"){bz+=\"\"}if(!bz){continue}if(typeof bz===\"string\"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,\"<$1></$2>\");var bK=(d.exec(bz)||[\"\",\"\"])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement(\"div\");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK===\"table\"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===\"<table>\"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],\"tbody\")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)===\"number\"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],\"script\")&&(!bI[bE].type||bI[bE].type.toLowerCase()===\"text/javascript\")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName(\"script\"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:\"script\"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||\"\").replace(aN,\"/*$0*/\"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\\([^)]*\\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\\d+(?:px)?$/i,bn=/^-?\\d/,I=/^([\\-+])=([\\-+.\\de]+)/,a7={position:\"absolute\",visibility:\"hidden\",display:\"block\"},an=[\"Left\",\"Right\"],a1=[\"Top\",\"Bottom\"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,\"opacity\",\"opacity\");return e===\"\"?\"1\":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{\"float\":b.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC===\"string\"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC=\"number\"}if(bD==null||bC===\"number\"&&isNaN(bD)){return}if(bC===\"number\"&&!b.cssNumber[bz]){bD+=\"px\"}if(!bE||!(\"set\" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&\"get\" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx===\"cssFloat\"){bx=\"float\"}if(e&&\"get\" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each([\"height\",\"width\"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+\"px\"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||\"\")?(parseFloat(RegExp.$1)/100)+\"\":e?\"1\":\"\"},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?\"alpha(opacity=\"+bz*100+\")\":\"\",bw=bv&&bv.filter||bx.filter||\"\";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,\"\"))===\"\"){bx.removeAttribute(\"filter\");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+\" \"+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:\"inline-block\"},function(){if(bv){e=Z(bw,\"margin-right\",\"marginRight\")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,\"-$1\").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===\"\"&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw===\"fontSize\"?\"1em\":(bv||0);bv=bx.pixelLeft+\"px\";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===\"\"?\"auto\":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw===\"width\"?by.offsetWidth:by.offsetHeight,bz=bw===\"width\"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!==\"border\"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,\"padding\"+bz[bx]))||0}if(bv===\"margin\"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,\"border\"+bz[bx]+\"Width\"))||0}}}return bA+\"px\"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,\"padding\"+bz[bx]))||0;if(bv!==\"padding\"){bA+=parseFloat(b.css(by,\"border\"+bz[bx]+\"Width\"))||0}if(bv===\"margin\"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+\"px\"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,\"display\"))===\"none\")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\\[\\]$/,bs=/\\r?\\n/g,bq=/#.*$/,aD=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\\/\\//,M=/\\?/,a6=/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,q=/^(?:select|textarea)/i,h=/\\s+/,br=/([?&])_=[^&]*/,K=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=[\"*/\"]+[\"*\"];try{aE=bl.href}catch(aw){aE=av.createElement(\"a\");aE.href=\"\";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!==\"string\"){bA=by;by=\"*\"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\\+/.test(bv);if(bC){bv=bv.substr(1)||\"*\"}bB=e[bv]=e[bv]||[];bB[bC?\"unshift\":\"push\"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC===\"string\"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx[\"*\"]){bC=aW(bv,bE,bz,bD,\"*\",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!==\"string\"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(\" \");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx=\"GET\";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz===\"object\"){bz=b.param(bz,b.ajaxSettings.traditional);bx=\"POST\"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:\"html\",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b(\"<div>\").append(bD.replace(a6,\"\")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,\"\\r\\n\")}}):{name:bv.name,value:bw.replace(bs,\"\\r\\n\")}}).get()}});b.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each([\"get\",\"post\"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,\"script\")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,\"json\")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:true,async:true,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":bb.String,\"text html\":true,\"text json\":b.parseJSON,\"text xml\":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz===\"object\"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks(\"once memory\"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||\"abort\";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||\"\";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader(\"Last-Modified\"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader(\"Etag\"))){b.etag[bC]=b2}}if(bZ===304){bX=\"notmodified\";bT=true}else{try{b4=G(bD,bY);bX=\"success\";bT=true}catch(b1){bX=\"parsererror\";b3=b1}}}else{b3=bX;if(!bX||bZ){bX=\"error\";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=\"\"+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger(\"ajax\"+(bT?\"Success\":\"Error\"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger(\"ajaxComplete\",[bJ,bD]);if(!(--b.active)){b.event.trigger(\"ajaxStop\")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+\"\").replace(bq,\"\").replace(c,s[1]+\"//\");bD.dataTypes=b.trim(bD.dataType||\"*\").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]===\"http:\"?80:443))!=(s[3]||(s[1]===\"http:\"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!==\"string\"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger(\"ajaxStart\")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?\"&\":\"?\")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,\"$1_=\"+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?\"&\":\"?\")+\"_=\"+bv:\"\")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader(\"Content-Type\",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader(\"If-Modified-Since\",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader(\"If-None-Match\",b.etag[bC])}}bJ.setRequestHeader(\"Accept\",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!==\"*\"?\", \"+aV+\"; q=0.01\":\"\"):bD.accepts[\"*\"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,\"No Transport\")}else{bJ.readyState=1;if(bw){bG.trigger(\"ajaxSend\",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort(\"timeout\")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+\"=\"+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join(\"&\").replace(k,\"+\")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+\"[\"+(typeof bz===\"object\"||b.isArray(bz)?bA:\"\")+\"]\",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by===\"object\"){for(var e in by){v(bw+\"[\"+e+\"]\",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]===\"*\"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader(\"content-type\")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+\" \"+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE===\"string\"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC===\"*\"){bC=bx}else{if(bx!==\"*\"&&bx!==bC){by=bx+\" \"+bC;bF=bG[by]||bG[\"* \"+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(\" \");if(bB[0]===bx||bB[0]===\"*\"){e=bG[bB[1]+\" \"+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error(\"No conversion from \"+by.replace(\" \",\" to \"))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\\=)\\?(&|$)|\\?\\?/i;b.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return b.expando+\"_\"+(aC++)}});b.ajaxPrefilter(\"json jsonp\",function(bD,bA,bC){var bx=bD.contentType===\"application/x-www-form-urlencoded\"&&(typeof bD.data===\"string\");if(bD.dataTypes[0]===\"jsonp\"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv=\"$1\"+bw+\"$2\";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\\?/.test(e)?\"&\":\"?\")+bD.jsonp+\"=\"+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters[\"script json\"]=function(){if(!bB){b.error(bw+\" was not called\")}return bB[0]};bD.dataTypes[0]=\"json\";return\"script\"}});b.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter(\"script\",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type=\"GET\";e.global=false}});b.ajaxTransport(\"script\",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName(\"head\")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement(\"script\");e.async=\"async\";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,\"success\")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&(\"withCredentials\" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB[\"X-Requested-With\"]){bB[\"X-Requested-With\"]=\"XMLHttpRequest\"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=\"\"}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,a3,aH=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0(\"show\",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,\"olddisplay\")&&by===\"none\"){by=bw.style.display=\"\"}if(by===\"\"&&b.css(bw,\"display\")===\"none\"){b._data(bw,\"olddisplay\",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===\"\"||by===\"none\"){bw.style.display=b._data(bw,\"olddisplay\")||\"\"}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0(\"hide\",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,\"display\");if(by!==\"none\"&&!b._data(bw,\"olddisplay\")){b._data(bw,\"olddisplay\",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display=\"none\"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw===\"boolean\";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(\":hidden\");b(this)[by?\"show\":\"hide\"]()})}else{this.animate(a0(\"toggle\",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(\":hidden\"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||\"swing\"}if(bF===\"hide\"&&bI||bF===\"show\"&&!bI){return bE.complete.call(this)}if(bK&&(bB===\"height\"||bB===\"width\")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,\"display\")===\"inline\"&&b.css(this,\"float\")===\"none\"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)===\"inline\"){this.style.display=\"inline-block\"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow=\"hidden\"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,\"toggle\"+bD)||(bF===\"toggle\"?bI?\"show\":\"hide\":0);if(bA){b._data(this,\"toggle\"+bD,bA===\"show\"?\"hide\":\"show\");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?\"\":\"px\");if(bL!==\"px\"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]===\"-=\"?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,\"\")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!==\"string\"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||\"fx\",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(\".run\")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+\".run\"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0(\"show\",1),slideUp:a0(\"hide\",1),slideToggle:a0(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw===\"object\"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration===\"number\"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue=\"fx\"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv===\"auto\"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?\"\":\"px\");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,\"fxshow\"+e.prop)===L){b._data(e.elem,\"fxshow\"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,\"fxshow\"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each([\"\",\"X\",\"Y\"],function(bC,bD){bz.style[\"overflow\"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,\"fxshow\"+bA,true);b.removeData(bz,\"toggle\"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,\"opacity\",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each([\"width\",\"height\"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b(\"<\"+bx+\">\").appendTo(e),bw=bv.css(\"display\");bv.remove();if(bw===\"none\"||bw===\"\"){if(!a8){a8=av.createElement(\"iframe\");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode===\"CSS1Compat\"?\"<!doctype html>\":\"\")+\"<html><body>\");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,\"display\");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if(\"getBoundingClientRect\" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position===\"fixed\"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!==\"visible\"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position===\"relative\"||e.position===\"static\"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position===\"fixed\"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,\"marginTop\"))||0;bv+=parseFloat(b.css(e,\"marginLeft\"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,\"position\");if(bB===\"static\"){bx.style.position=\"relative\"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,\"top\"),bE=b.css(bx,\"left\"),bF=(bB===\"absolute\"||bB===\"fixed\")&&b.inArray(\"auto\",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if(\"using\" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,\"marginTop\"))||0;bx.left-=parseFloat(b.css(bw,\"marginLeft\"))||0;e.top+=parseFloat(b.css(bv[0],\"borderTopWidth\"))||0;e.left+=parseFloat(b.css(bv[0],\"borderLeftWidth\"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,\"position\")===\"static\")){e=e.offsetParent}return e})}});b.each([\"Left\",\"Top\"],function(bv,e){var bw=\"scroll\"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?(\"pageXOffset\" in by)?by[bv?\"pageYOffset\":\"pageXOffset\"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each([\"Height\",\"Width\"],function(bv,e){var bw=e.toLowerCase();b.fn[\"inner\"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,\"padding\")):this[bw]():null};b.fn[\"outer\"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?\"margin\":\"border\")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement[\"client\"+e],bx=bA.document.body;return bA.document.compatMode===\"CSS1Compat\"&&bB||bx&&bx[\"client\"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement[\"client\"+e],bA.body[\"scroll\"+e],bA.documentElement[\"scroll\"+e],bA.body[\"offset\"+e],bA.documentElement[\"offset\"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz===\"string\"?bz:bz+\"px\")}}}}});bb.jQuery=bb.$=b;if(typeof define===\"function\"&&define.amd&&define.amd.jQuery){define(\"jquery\",[],function(){return b})}})(window);/*!\n * jQuery UI 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI\n */\n(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:\"1.8.18\",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e===\"number\"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css(\"position\")))||(/absolute/).test(this.css(\"position\"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,\"position\",1))&&(/(auto|scroll)/).test(a.curCSS(this,\"overflow\",1)+a.curCSS(this,\"overflow-y\",1)+a.curCSS(this,\"overflow-x\",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,\"overflow\",1)+a.curCSS(this,\"overflow-y\",1)+a.curCSS(this,\"overflow-x\",1))}).eq(0)}return(/fixed/).test(this.css(\"position\"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css(\"zIndex\",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css(\"position\");if(e===\"absolute\"||e===\"relative\"||e===\"fixed\"){g=parseInt(f.css(\"zIndex\"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?\"selectstart\":\"mousedown\")+\".ui-disableSelection\",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(\".ui-disableSelection\")}});a.each([\"Width\",\"Height\"],function(g,e){var f=e===\"Width\"?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,\"padding\"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,\"border\"+this+\"Width\",true))||0}if(n){l-=parseFloat(a.curCSS(m,\"margin\"+this,true))||0}});return l}a.fn[\"inner\"+e]=function(i){if(i===d){return k[\"inner\"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+\"px\")})};a.fn[\"outer\"+e]=function(i,l){if(typeof i!==\"number\"){return k[\"outer\"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+\"px\")})}});function c(g,e){var j=g.nodeName.toLowerCase();if(\"area\"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!==\"map\"){return false}f=a(\"img[usemap=#\"+h+\"]\")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:\"a\"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,\"visibility\")===\"hidden\"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[\":\"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,\"tabindex\")))},tabbable:function(g){var e=a.attr(g,\"tabindex\"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement(\"div\"));f.offsetHeight;a.extend(f.style,{minHeight:\"100px\",height:\"auto\",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart=\"onselectstart\" in f;e.removeChild(f).style.display=\"none\"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css(\"overflow\")===\"hidden\"){return false}var e=(f&&f===\"left\")?\"scrollLeft\":\"scrollTop\",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!\n * jQuery UI Widget 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Widget\n */\n(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler(\"remove\")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b(\"*\",this).add([this]).each(function(){try{b(this).triggerHandler(\"remove\")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(\".\")[0],j;f=f.split(\".\")[1];j=g+\"-\"+f;if(!e){e=h;h=b.Widget}b.expr[\":\"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i===\"string\",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)===\"_\"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind(\"remove.\"+this.widgetName,function(){e.destroy()});this._create();this._trigger(\"create\");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind(\".\"+this.widgetName).removeData(this.widgetName);this.widget().unbind(\".\"+this.widgetName).removeAttr(\"aria-disabled\").removeClass(this.widgetBaseClass+\"-disabled ui-state-disabled\")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f===\"string\"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e===\"disabled\"){this.widget()[f?\"addClass\":\"removeClass\"](this.widgetBaseClass+\"-disabled ui-state-disabled\").attr(\"aria-disabled\",f)}return this},enable:function(){return this._setOption(\"disabled\",false)},disable:function(){return this._setOption(\"disabled\",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!\n * jQuery UI Mouse 1.8.18\n *\n * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Mouse\n *\n * Depends:\n *\tjquery.ui.widget.js\n */\n(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget(\"ui.mouse\",{options:{cancel:\":input,option\",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind(\"mousedown.\"+this.widgetName,function(e){return d._mouseDown(e)}).bind(\"click.\"+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+\".preventClickEvent\")){b.removeData(e.target,d.widgetName+\".preventClickEvent\");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel==\"string\"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+\".preventClickEvent\")){b.removeData(f.target,this.widgetName+\".preventClickEvent\")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+\".preventClickEvent\",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget(\"ui.resizable\",c.ui.mouse,{widgetEventPrefix:\"resize\",options:{alsoResize:false,animate:false,animateDuration:\"slow\",animateEasing:\"swing\",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:\"e,s,se\",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass(\"ui-resizable\");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||\"ui-resizable-helper\":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class=\"ui-wrapper\" style=\"overflow: hidden;\"></div>').css({position:this.element.css(\"position\"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(\"top\"),left:this.element.css(\"left\")}));this.element=this.element.parent().data(\"resizable\",this.element.data(\"resizable\"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css(\"marginLeft\"),marginTop:this.originalElement.css(\"marginTop\"),marginRight:this.originalElement.css(\"marginRight\"),marginBottom:this.originalElement.css(\"marginBottom\")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css(\"resize\");this.originalElement.css(\"resize\",\"none\");this._proportionallyResizeElements.push(this.originalElement.css({position:\"static\",zoom:1,display:\"block\"}));this.originalElement.css({margin:this.originalElement.css(\"margin\")});this._proportionallyResize()}this.handles=k.handles||(!c(\".ui-resizable-handle\",this.element).length?\"e,s,se\":{n:\".ui-resizable-n\",e:\".ui-resizable-e\",s:\".ui-resizable-s\",w:\".ui-resizable-w\",se:\".ui-resizable-se\",sw:\".ui-resizable-sw\",ne:\".ui-resizable-ne\",nw:\".ui-resizable-nw\"});if(this.handles.constructor==String){if(this.handles==\"all\"){this.handles=\"n,e,s,w,se,sw,ne,nw\"}var l=this.handles.split(\",\");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e=\"ui-resizable-\"+j;var h=c('<div class=\"ui-resizable-handle '+e+'\"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if(\"se\"==j){h.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\")}this.handles[j]=\".ui-resizable-\"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=[\"padding\",/ne|nw|n/.test(n)?\"Top\":/se|sw|s/.test(n)?\"Bottom\":/^e$/.test(n)?\"Right\":\"Left\"].join(\"\");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(\".ui-resizable-handle\",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:\"se\"}});if(k.autoHide){this._handles.hide();c(this.element).addClass(\"ui-resizable-autohide\").hover(function(){if(k.disabled){return}c(this).removeClass(\"ui-resizable-autohide\");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass(\"ui-resizable-autohide\");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\").removeData(\"resizable\").unbind(\".resizable\").find(\".ui-resizable-handle\").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css(\"position\"),width:f.outerWidth(),height:f.outerHeight(),top:f.css(\"top\"),left:f.css(\"left\")})).remove()}this.originalElement.css(\"resize\",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(\".ui-draggable\")||(/absolute/).test(e.css(\"position\"))){e.css({position:\"absolute\",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css(\"left\")),h=b(this.helper.css(\"top\"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio==\"number\")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(\".ui-resizable-\"+this.axis).css(\"cursor\");c(\"body\").css(\"cursor\",i==\"auto\"?this.axis+\"-resize\":i);e.addClass(\"ui-resizable-resizing\");this._propagate(\"start\",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate(\"resize\",e);h.css({top:this.position.top+\"px\",left:this.position.left+\"px\",width:this.size.width+\"px\",height:this.size.height+\"px\"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger(\"resize\",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],\"left\")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css(\"left\"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css(\"top\"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c(\"body\").css(\"cursor\",\"auto\");this.element.removeClass(\"ui-resizable-resizing\");this._propagate(\"stop\",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e==\"sw\"){h.left=j.left+(f.width-h.width);h.top=null}if(e==\"nw\"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css(\"borderTopWidth\"),h.css(\"borderRightWidth\"),h.css(\"borderBottomWidth\"),h.css(\"borderLeftWidth\")],j=[h.css(\"paddingTop\"),h.css(\"paddingRight\"),h.css(\"paddingBottom\"),h.css(\"paddingLeft\")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(\":hidden\")||c(g).parents(\":hidden\").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style=\"overflow:hidden;\"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:\"absolute\",left:this.elementOffset.left-g+\"px\",top:this.elementOffset.top-g+\"px\",zIndex:++i.zIndex});this.helper.appendTo(\"body\").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!=\"resize\"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:\"1.8.18\"});c.ui.plugin.add(\"resizable\",\"alsoResize\",{start:function(f,g){var e=c(this).data(\"resizable\"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data(\"resizable-alsoresize\",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css(\"left\"),10),top:parseInt(k.css(\"top\"),10)})})};if(typeof(i.alsoResize)==\"object\"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data(\"resizable\"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data(\"resizable-alsoresize\"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?[\"width\",\"height\"]:[\"width\",\"height\",\"top\",\"left\"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)==\"object\"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData(\"resizable-alsoresize\")}});c.ui.plugin.add(\"resizable\",\"animate\",{stop:function(i,n){var p=c(this).data(\"resizable\"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],\"left\")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css(\"left\"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css(\"top\"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css(\"width\"),10),height:parseInt(p.element.css(\"height\"),10),top:parseInt(p.element.css(\"top\"),10),left:parseInt(p.element.css(\"left\"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate(\"resize\",i)}})}});c.ui.plugin.add(\"resizable\",\"containment\",{start:function(f,r){var t=c(this).data(\"resizable\"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c([\"Top\",\"Right\",\"Left\",\"Bottom\"]).each(function(p,o){i[p]=b(n.css(\"padding\"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,\"left\")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data(\"resizable\"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css(\"position\"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css(\"position\"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data(\"resizable\"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css(\"position\"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css(\"position\"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add(\"resizable\",\"ghost\",{start:function(g,h){var e=c(this).data(\"resizable\"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:\"block\",position:\"relative\",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass(\"ui-resizable-ghost\").addClass(typeof i.ghost==\"string\"?i.ghost:\"\");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data(\"resizable\"),h=e.options;if(e.ghost){e.ghost.css({position:\"relative\",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data(\"resizable\"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add(\"resizable\",\"grid\",{resize:function(e,m){var p=c(this).data(\"resizable\"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid==\"number\"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!\n * jQuery hashchange event - v1.3 - 7/21/2010\n * http://benalman.com/projects/jquery-hashchange-plugin/\n * \n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n(function($,e,b){var c=\"hashchange\",h=document,f,g=$.event.special,i=h.documentMode,d=\"on\"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return\"#\"+j.replace(/^[^#]*#?(.*)$/,\"$1\")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,\"\")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex=\"-1\" title=\"empty\"/>').hide().one(\"load\",function(){r||l(a());n()}).attr(\"src\",r||\"javascript:0\").insertAfter(\"body\")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName===\"title\"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain=\"'+t+'\"<\\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:\"xy\",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),[\"iframe\",\"#document\",\"html\",\"body\"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode==\"BackCompat\"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e==\"object\"){d=e;e=0}if(typeof d==\"function\"){d={onAfter:d}}if(f==\"max\"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is(\"html,body\");switch(typeof k){case\"number\":case\"string\":if(/^([+-]=)?\\d+(\\.\\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case\"object\":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(\"\"),function(q,r){var s=r==\"x\"?\"Left\":\"Top\",u=s.toLowerCase(),p=\"scroll\"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css(\"margin\"+s))||0;g[p]-=parseInt(k.css(\"border\"+s+\"Width\"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r==\"x\"?\"width\":\"height\"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)==\"%\"?parseFloat(t)/100*n:t}if(/^\\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i==\"x\"?\"Width\":\"Height\",e=\"scroll\"+h;if(!c(j).is(\"html,body\")){return j[e]-c(j)[h.toLowerCase()]()}var g=\"client\"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d==\"object\"?d:{top:d,left:d}}})(jQuery);/*!\n PowerTip - v1.2.0 - 2013-04-03\n http://stevenbenner.github.com/jquery-powertip/\n Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).\n Released under MIT license.\n https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt\n*/\n(function(a){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k(\"body\");var n=\"displayController\",e=\"hasActiveHover\",d=\"forcedOpen\",u=\"hasMouseMove\",f=\"mouseOnToPopup\",g=\"originalTitle\",y=\"powertip\",o=\"powertipjq\",l=\"powertiptarget\",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)===\"string\"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr(\"title\");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr(\"title\")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({\"mouseenter.powertip\":function J(P){k.powerTip.show(this,P)},\"mouseleave.powertip\":function L(){k.powerTip.hide(this)},\"focus.powertip\":function K(){k.powerTip.show(this)},\"blur.powertip\":function H(){k.powerTip.hide(this,true)},\"keydown.powertip\":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:\"powerTip\",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:\"n\",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:[\"n\",\"ne\",\"nw\",\"s\"],e:[\"e\",\"ne\",\"se\",\"w\",\"nw\",\"sw\",\"n\",\"s\",\"e\"],s:[\"s\",\"se\",\"sw\",\"n\"],w:[\"w\",\"nw\",\"sw\",\"e\",\"ne\",\"se\",\"n\",\"s\",\"w\"],nw:[\"nw\",\"w\",\"sw\",\"n\",\"s\",\"se\",\"nw\"],ne:[\"ne\",\"e\",\"se\",\"n\",\"s\",\"sw\",\"ne\"],sw:[\"sw\",\"w\",\"nw\",\"s\",\"n\",\"ne\",\"sw\"],se:[\"se\",\"e\",\"ne\",\"s\",\"n\",\"nw\",\"se\"],\"nw-alt\":[\"nw-alt\",\"n\",\"ne-alt\",\"sw-alt\",\"s\",\"se-alt\",\"w\",\"e\"],\"ne-alt\":[\"ne-alt\",\"n\",\"nw-alt\",\"se-alt\",\"s\",\"sw-alt\",\"e\",\"w\"],\"sw-alt\":[\"sw-alt\",\"s\",\"se-alt\",\"nw-alt\",\"n\",\"ne-alt\",\"w\",\"e\"],\"se-alt\":[\"se-alt\",\"s\",\"sw-alt\",\"ne-alt\",\"n\",\"nw-alt\",\"e\",\"w\"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(\".powertip\").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr(\"title\",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top=\"auto\";F.left=\"auto\";F.right=\"auto\";F.bottom=\"auto\";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split(\"-\")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case\"n\":N.set(\"left\",I.left-(J/2));N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"e\":N.set(\"left\",I.left+P);N.set(\"top\",I.top-(O/2));break;case\"s\":N.set(\"left\",I.left-(J/2));N.set(\"top\",I.top+P);break;case\"w\":N.set(\"top\",I.top-(O/2));N.set(\"right\",c.windowWidth-I.left+P);break;case\"nw\":N.set(\"bottom\",c.windowHeight-I.top+P);N.set(\"right\",c.windowWidth-I.left-20);break;case\"nw-alt\":N.set(\"left\",I.left);N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"ne\":N.set(\"left\",I.left-20);N.set(\"bottom\",c.windowHeight-I.top+P);break;case\"ne-alt\":N.set(\"bottom\",c.windowHeight-I.top+P);N.set(\"right\",c.windowWidth-I.left);break;case\"sw\":N.set(\"top\",I.top+P);N.set(\"right\",c.windowWidth-I.left-20);break;case\"sw-alt\":N.set(\"left\",I.left);N.set(\"top\",I.top+P);break;case\"se\":N.set(\"left\",I.left-20);N.set(\"top\",I.top+P);break;case\"se-alt\":N.set(\"top\",I.top+P);N.set(\"right\",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case\"n\":M=O.left+N/2;L=O.top;break;case\"e\":M=O.left+N;L=O.top+I/2;break;case\"s\":M=O.left+N/2;L=O.top+I;break;case\"w\":M=O.left;L=O.top+I/2;break;case\"nw\":M=O.left;L=O.top;break;case\"ne\":M=O.left+N;L=O.top;break;case\"sw\":M=O.left;L=O.top+I;break;case\"se\":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest(\"svg\")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=[\"nw\",\"n\",\"ne\",\"e\",\"se\",\"s\",\"sw\",\"w\"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k(\"#\"+Q.popupId);if(O.length===0){O=k(\"<div/>\",{id:Q.popupId});if(w.length===0){w=k(\"body\")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on(\"mousemove\",M);s.on(\"scroll\",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger(\"powerTipPreRender\");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger(\"powerTipRender\");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger(\"powerTipOpen\")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set(\"top\",c.currentY+Q.offset);T.set(\"left\",c.currentX+Q.offset);O.css(T);R.trigger(\"powerTipClose\")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set(\"top\",c.currentY+Q.offset);U.set(\"left\",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set(\"left\",c.windowWidth-R)}else{if(S===p.bottom){U.set(\"top\",c.scrollTop+c.windowHeight-V)}}}else{U.set(\"left\",c.currentX-R-Q.offset);U.set(\"top\",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set(\"top\",0);V.set(\"left\",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(\":disabled\")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(\":focus\")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on(\"mousemove\",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k(\"#\"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));/*!\n * jQuery UI Touch Punch 0.2.3\n *\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n(function(b){b.support.touch=\"ontouchend\" in document;if(!b.support.touch){return}var d=b.ui.mouse.prototype,f=d._mouseInit,c=d._mouseDestroy,a;function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDefault();var j=h.originalEvent.changedTouches[0],g=document.createEvent(\"MouseEvents\");g.initMouseEvent(i,true,true,window,1,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,0,null);h.target.dispatchEvent(g)}d._touchStart=function(h){var g=this;if(a||!g._mouseCapture(h.originalEvent.changedTouches[0])){return}a=true;g._touchMoved=false;e(h,\"mouseover\");e(h,\"mousemove\");e(h,\"mousedown\")};d._touchMove=function(g){if(!a){return}this._touchMoved=true;e(g,\"mousemove\")};d._touchEnd=function(g){if(!a){return}e(g,\"mouseup\");e(g,\"mouseout\");if(!this._touchMoved){e(g,\"click\")}a=false};d._mouseInit=function(){var g=this;g.element.bind({touchstart:b.proxy(g,\"_touchStart\"),touchmove:b.proxy(g,\"_touchMove\"),touchend:b.proxy(g,\"_touchEnd\")});f.call(g)};d._mouseDestroy=function(){var g=this;g.element.unbind({touchstart:b.proxy(g,\"_touchStart\"),touchmove:b.proxy(g,\"_touchMove\"),touchend:b.proxy(g,\"_touchEnd\")});c.call(g)}})(jQuery);/*!\n * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016\n * http://www.smartmenus.org/\n *\n * Copyright Vasil Dinkov, Vadikom Web Ltd.\n * http://vadikom.com\n *\n * Licensed MIT\n */\n(function(a){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],a)}else{if(typeof module===\"object\"&&typeof module.exports===\"object\"){module.exports=a(require(\"jquery\"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d=\"ontouchstart\" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=\".smartmenus_mouse\";if(!h&&!m){var o=true,l=null;a(document).bind(i([[\"mousemove\",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest(\"a\");if(r.is(\"a\")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?\"touchstart\":\"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut\",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=\"\"}var m={};a.each(l,function(o,p){m[p[0].split(\" \").join(n+\" \")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId=\"\";this.accessIdPrefix=\"\";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d=\"perspective\" in m.style||\"webkitPerspective\" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+\"\").replace(/\\D/g,\"\");this.accessIdPrefix=\"sm-\"+this.rootId+\"-\";if(this.$root.hasClass(\"sm-rtl\")){this.opts.rightToLeftSubMenus=true}var r=\".smartmenus\";this.$root.data(\"smartmenus\",this).attr(\"data-smartmenus-id\",this.rootId).dataSM(\"level\",1).bind(i([[\"mouseover focusin\",a.proxy(this.rootOver,this)],[\"mouseout focusout\",a.proxy(this.rootOut,this)],[\"keydown\",a.proxy(this.rootKeyDown,this)]],r)).delegate(\"a\",i([[\"mouseenter\",a.proxy(this.itemEnter,this)],[\"mouseleave\",a.proxy(this.itemLeave,this)],[\"mousedown\",a.proxy(this.itemDown,this)],[\"focus\",a.proxy(this.itemFocus,this)],[\"blur\",a.proxy(this.itemBlur,this)],[\"click\",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([[\"touchstart\",a.proxy(this.docTouchStart,this)],[\"touchmove\",a.proxy(this.docTouchMove,this)],[\"touchend\",a.proxy(this.docTouchEnd,this)],[\"click\",a.proxy(this.docClick,this)]],r))}a(window).bind(i([[\"resize orientationchange\",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a(\"<span/>\").addClass(\"sub-arrow\");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find(\"ul\").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find(\"a\").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\\.[^#\\?\\/]*/i,m=/#.*/,q=window.location.href.replace(p,\"\"),o=q.replace(m,\"\");this.$root.find(\"a\").each(function(){var s=this.href.replace(p,\"\"),t=a(this);if(s==q||s==o){t.addClass(\"current\");if(l.opts.markCurrentTree){t.parentsUntil(\"[data-smartmenus-id]\",\"ul\").each(function(){a(this).dataSM(\"parent-a\").addClass(\"current\")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=\".smartmenus\";this.$root.removeData(\"smartmenus\").removeAttr(\"data-smartmenus-id\").removeDataSM(\"level\").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find(\"ul\").each(function(){var o=a(this);if(o.dataSM(\"scroll-arrows\")){o.dataSM(\"scroll-arrows\").remove()}if(o.dataSM(\"shown-before\")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:\"\",minWidth:\"\",maxWidth:\"\"}).removeClass(\"sm-nowrap\")}if(o.dataSM(\"scroll-arrows\")){o.dataSM(\"scroll-arrows\").remove()}o.css({zIndex:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\",display:\"\"})}if((o.attr(\"id\")||\"\").indexOf(l.accessIdPrefix)==0){o.removeAttr(\"id\")}}).removeDataSM(\"in-mega\").removeDataSM(\"shown-before\").removeDataSM(\"ie-shim\").removeDataSM(\"scroll-arrows\").removeDataSM(\"parent-a\").removeDataSM(\"level\").removeDataSM(\"beforefirstshowfired\").removeAttr(\"role\").removeAttr(\"aria-hidden\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-expanded\");this.$root.find(\"a.has-submenu\").each(function(){var o=a(this);if(o.attr(\"id\").indexOf(l.accessIdPrefix)==0){o.removeAttr(\"id\")}}).removeClass(\"has-submenu\").removeDataSM(\"sub\").removeAttr(\"aria-haspopup\").removeAttr(\"aria-controls\").removeAttr(\"aria-expanded\").closest(\"li\").removeDataSM(\"sub\");if(this.opts.subIndicators){this.$root.find(\"span.sub-arrow\").remove()}if(this.opts.markCurrentItem){this.$root.find(\"a.current\").removeClass(\"current\")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(\":visible\")){var m=this.$root.offset();this.$disableOverlay=a('<div class=\"sm-jquery-disable-overlay\"/>').css({position:\"absolute\",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is(\"a\")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest(\"ul\");while(l.dataSM(\"in-mega\")){l=l.parent().closest(\"ul\")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css(\"display\")==\"none\"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:\"absolute\",visibility:\"hidden\"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?\"$root\":\"$firstSub\"].css(\"z-index\"));if(!l&&isNaN(m)){m=parseInt(this.$root.css(\"z-index\"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?\"Height\":\"Width\",o=document.documentElement[\"client\"+m],n=window[\"inner\"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css(\"position\")==\"static\"},isCSSOn:function(){return this.$firstLink.css(\"display\")==\"block\"},isFixed:function(){var l=this.$root.css(\"position\")==\"fixed\";if(!l){this.$root.parentsUntil(\"body\").each(function(){if(a(this).css(\"position\")==\"fixed\"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass(\"mega-menu\")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest(\"ul\"),q=n.dataSM(\"level\");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM(\"parent-a\")[0])){var m=this;a(n.parentsUntil(\"[data-smartmenus-id]\",\"ul\").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM(\"parent-a\"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler(\"activate.smapi\",p[0])===false){return}var o=p.dataSM(\"sub\");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler(\"blur.smapi\",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest(\"ul\")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler(\"click.smapi\",n[0])===false){return false}var p=a(o.target).is(\"span.sub-arrow\"),m=n.dataSM(\"sub\"),l=m?m.dataSM(\"level\")==2:false;if(m&&!m.is(\":visible\")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(\":visible\")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass(\"disabled\")||this.$root.triggerHandler(\"select.smapi\",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM(\"mousedown\",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest(\"ul\").dataSM(\"level\")==1?1:this.opts.showTimeout)}this.$root.triggerHandler(\"mouseenter.smapi\",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM(\"mousedown\"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler(\"focus.smapi\",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM(\"mousedown\");this.$root.triggerHandler(\"mouseleave.smapi\",l[0])},menuHide:function(m){if(this.$root.triggerHandler(\"beforehide.smapi\",m[0])===false){return}m.stop(true,true);if(m.css(\"display\")!=\"none\"){var l=function(){m.css(\"z-index\",\"\")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM(\"ie-shim\")){m.dataSM(\"ie-shim\").remove().css({\"-webkit-transform\":\"\",transform:\"\"})}if(m.dataSM(\"scroll\")){this.menuScrollStop(m);m.css({\"touch-action\":\"\",\"-ms-touch-action\":\"\",\"-webkit-transform\":\"\",transform:\"\"}).unbind(\".smartmenus_scroll\").removeDataSM(\"scroll\").dataSM(\"scroll-arrows\").hide()}m.dataSM(\"parent-a\").removeClass(\"highlighted\").attr(\"aria-expanded\",\"false\");m.attr({\"aria-expanded\":\"false\",\"aria-hidden\":\"true\"});var n=m.dataSM(\"level\");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler(\"hide.smapi\",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(\":visible\")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM(\"ie-shim\")){this.$root.dataSM(\"ie-shim\").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler(\"hideAll.smapi\")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM(\"sub\");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM(\"ie-shim\")){l.dataSM(\"ie-shim\",a(\"<iframe/>\").attr({src:\"javascript:0\",tabindex:-9}).css({position:\"absolute\",top:\"auto\",left:\"0\",opacity:0,border:\"0\"}))}},menuInit:function(l){if(!l.dataSM(\"in-mega\")){if(l.hasClass(\"mega-menu\")){l.find(\"ul\").dataSM(\"in-mega\",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll(\"a\").eq(-1);if(!n.length){n=l.prevAll().find(\"a\").eq(-1)}n.addClass(\"has-submenu\").dataSM(\"sub\",l);l.dataSM(\"parent-a\",n).dataSM(\"level\",q).parent().dataSM(\"sub\",l);var o=n.attr(\"id\")||this.accessIdPrefix+(++this.idInc),p=l.attr(\"id\")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,\"aria-haspopup\":\"true\",\"aria-controls\":p,\"aria-expanded\":\"false\"});l.attr({id:p,role:\"group\",\"aria-hidden\":\"true\",\"aria-labelledby\":o,\"aria-expanded\":\"false\"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM(\"parent-a\"),D=r.closest(\"li\"),E=D.parent(),l=K.dataSM(\"level\"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is(\"[data-sm-horizontal-sub]\")||l==2&&!E.hasClass(\"sm-vertical\"),B=this.opts.rightToLeftSubMenus&&!D.is(\"[data-sm-reverse]\")||!this.opts.rightToLeftSubMenus&&D.is(\"[data-sm-reverse]\"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM(\"scroll-arrows\")){K.dataSM(\"scroll-arrows\",a([a('<span class=\"scroll-up\"><span class=\"scroll-up-arrow\"></span></span>')[0],a('<span class=\"scroll-down\"><span class=\"scroll-down-arrow\"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM(\"scroll\").up=a(this).hasClass(\"scroll-up\");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},\"mousewheel DOMMouseScroll\":function(x){x.preventDefault()}}).insertAfter(K))}var I=\".smartmenus_scroll\";K.dataSM(\"scroll\",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM(\"scroll-arrows\").eq(1))}).bind(i([[\"mouseover\",function(x){G.menuScrollOver(K,x)}],[\"mouseout\",function(x){G.menuScrollOut(K,x)}],[\"mousewheel DOMMouseScroll\",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM(\"scroll-arrows\").css({top:\"auto\",left:\"0\",marginLeft:C+(parseInt(K.css(\"border-left-width\"))||0),width:t-(parseInt(K.css(\"border-left-width\"))||0)-(parseInt(K.css(\"border-right-width\"))||0),zIndex:K.css(\"z-index\")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({\"touch-action\":\"none\",\"-ms-touch-action\":\"none\"}).bind(i([[d?\"touchstart touchmove touchend\":\"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp\",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:\"auto\",left:\"0\",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM(\"ie-shim\")){K.dataSM(\"ie-shim\").css({zIndex:K.css(\"z-index\"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM(\"scroll\"),q=r.dataSM(\"scroll-arrows\"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM(\"level\");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM(\"sub\")&&this.activatedItems[l-1].dataSM(\"sub\").is(\":visible\")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM(\"ie-shim\")).css(this.cssTransforms3d?{\"-webkit-transform\":\"translate3d(0, \"+p.y+\"px, 0)\",transform:\"translate3d(0, \"+p.y+\"px, 0)\"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM(\"scroll-arrows\").eq(l?0:1).is(\":visible\")){m.dataSM(\"scroll\").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||\"\").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM(\"scroll-arrows\").css(\"visibility\",\"hidden\")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM(\"scroll\"),l=a(window).scrollTop()-n.dataSM(\"parent-a\").offset().top-m.itemH;n.dataSM(\"scroll-arrows\").eq(0).css(\"margin-top\",l).end().eq(1).css(\"margin-top\",l+this.getViewportHeight()-m.arrowDownH).end().css(\"visibility\",\"visible\")}}},menuScrollRefreshData:function(n){var m=n.dataSM(\"scroll\"),l=a(window).scrollTop()-n.dataSM(\"parent-a\").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css(\"margin-top\"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM(\"scroll\").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM(\"scroll\");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM(\"beforefirstshowfired\")){n.dataSM(\"beforefirstshowfired\",true);if(this.$root.triggerHandler(\"beforefirstshow.smapi\",n[0])===false){return}}if(this.$root.triggerHandler(\"beforeshow.smapi\",n[0])===false){return}n.dataSM(\"shown-before\",true).stop(true,true);if(!n.is(\":visible\")){var m=n.dataSM(\"parent-a\");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass(\"highlighted\")}if(this.isCollapsible()){n.removeClass(\"sm-nowrap\").css({zIndex:\"\",width:\"auto\",minWidth:\"\",maxWidth:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\"})}else{n.css(\"z-index\",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:\"auto\",minWidth:\"\",maxWidth:\"\"}).addClass(\"sm-nowrap\");if(this.opts.subMenusMinWidth){n.css(\"min-width\",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css(\"max-width\",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass(\"sm-nowrap\").css(\"width\",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM(\"ie-shim\")){n.dataSM(\"ie-shim\").insertBefore(n)}}var l=function(){n.css(\"overflow\",\"\")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr(\"aria-expanded\",\"true\");n.attr({\"aria-expanded\":\"true\",\"aria-hidden\":\"false\"});this.visibleSubMenus.push(n);this.$root.triggerHandler(\"show.smapi\",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\\n\\nIf you want to show this menu via the \"popupShow\" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM(\"shown-before\",true).stop(true,true);if(!this.$root.is(\":visible\")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM(\"ie-shim\")){this.$root.dataSM(\"ie-shim\").css({zIndex:this.$root.css(\"z-index\"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css(\"overflow\",\"\")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM(\"sub\");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is(\"a\")&&this.handleItemEvents(l)){var n=l.dataSM(\"sub\");if(n&&!n.is(\":visible\")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!(\"onorientationchange\" in window)||m.type==\"orientationchange\"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+\"_smartmenus\",m)}return this.data(l+\"_smartmenus\")};a.fn.removeDataSM=function(l){return this.removeData(l+\"_smartmenus\")};a.fn.smartmenus=function(m){if(typeof m==\"string\"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data(\"smartmenus\");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:\"10em\",subMenusMaxWidth:\"20em\",subIndicators:true,subIndicatorsPos:\"prepend\",subIndicatorsText:\"+\",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a}));"
  },
  {
    "path": "docs/laplace_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/include/dvs_reconstruction/poisson_solver/laplace.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2132e6eb658a67cbcea5d6a82f185c34.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_335842f7c982f3e34f14feece7eea990.html\">poisson_solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">laplace.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * ---------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> * Copyright (C) 2012, 2014 Tino Kluge (ttk448 at gmail.com)</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *  This program is free software; you can redistribute it and/or</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> *  modify it under the terms of the GNU General Public License</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\"> *  as published by the Free Software Foundation; either version 2</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\"> *  of the License, or (at your option) any later version.</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\"> *  This program is distributed in the hope that it will be useful,</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\"> *  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\"> *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\"> *  GNU General Public License for more details.</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\"> *  You should have received a copy of the GNU General Public License</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\"> *  along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\"> * ---------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#ifndef _laplace_h</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#define _laplace_h</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#include &lt;cstdio&gt;</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#include &lt;cstdlib&gt;</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">#include &lt;boost/multi_array.hpp&gt;</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"comment\">// 2d-array utility functions</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"comment\">// ---------------------------</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacearr.html\">arr</a></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;{</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"comment\">// helper function: [0,1] uniform random generator</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keywordtype\">double</span> runif();</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"comment\">// fill vector with random values</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keywordtype\">void</span> runif(std::vector&lt;double&gt;&amp; X);</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"comment\">// fill 2d-array with random values</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"keywordtype\">void</span> runif(boost::multi_array&lt;double,2&gt;&amp; X);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"comment\">// L^2 difference between two 2d-arrays</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"comment\">// allow_shift: removes a constant shift between 2 matrices,</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"comment\">//    i.e.  comparing X[][] and Y[][] + (X[1][1]-Y[1][1])</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"comment\">// ignore_corner: ignores all 4 corners, X[0][0], ...</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"keywordtype\">double</span> diff(<span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; X,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;            <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; Y,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;            <span class=\"keywordtype\">bool</span> allow_shift, <span class=\"keywordtype\">bool</span> ignore_corner);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"comment\">// L^2 difference between two vectors</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keywordtype\">double</span> diff(<span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; X,</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;            <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; Y,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;            <span class=\"keywordtype\">bool</span> allow_shift=<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"comment\">// L^2 difference between vector and a constant</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"keywordtype\">double</span> diff(<span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; X, <span class=\"keywordtype\">double</span> c);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"comment\">// print the matrix</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; X);</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;} <span class=\"comment\">// namespace arr</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"comment\">// PDE functions (Laplace/Poisson)</span></div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;<span class=\"comment\">// -------------------------------</span></div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacepde.html\">pde</a></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;{</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keyword\">namespace </span>types</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;{</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;<span class=\"comment\">// boundary type</span></div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;<span class=\"keyword\">enum</span> boundary {</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;   Dirichlet = 0,        <span class=\"comment\">// value fixed</span></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;   Neumann   = 1,        <span class=\"comment\">// first derivative fixed</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;};</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;} <span class=\"comment\">// namespace types</span></div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;<span class=\"comment\">// sets the number of threads for the fftw solver</span></div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;<span class=\"keywordtype\">int</span> fftw_threads(<span class=\"keywordtype\">int</span> n);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"comment\">// cleans up memory used by fftw for threads</span></div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keywordtype\">void</span> fftw_clean();</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;<span class=\"comment\">// saves the 4 boundaries/edges of a 2-d array as individual vectors</span></div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;<span class=\"comment\">// note, the 4 corners/vertices are not saved and the resulting</span></div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;<span class=\"comment\">// vectors are of size n-2</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;<span class=\"keywordtype\">void</span> get_boundary(std::vector&lt;double&gt;&amp; bd1a, std::vector&lt;double&gt;&amp; bd1b,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;                  std::vector&lt;double&gt;&amp; bd2a, std::vector&lt;double&gt;&amp; bd2b,</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;                  <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; X,</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;                  <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2, types::boundary boundary);</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;<span class=\"comment\">// set boundary of matrix X according to conditions</span></div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;<span class=\"comment\">// can either add boundaries to the array (resize), or overwrite the</span></div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;<span class=\"comment\">// current boundary values</span></div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;<span class=\"comment\">// boundary vectors shall not contain the 4 corners (vertices), ie need to</span></div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"comment\">// be of size n-2 of the resulting array</span></div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;<span class=\"keywordtype\">void</span> set_boundary(boost::multi_array&lt;double,2&gt;&amp; X, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;                  <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1b,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;                  <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2b,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;                  pde::types::boundary boundary, <span class=\"keywordtype\">bool</span> add=<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;<span class=\"comment\">// specialised version where all boundaries have the same value</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;<span class=\"keywordtype\">void</span> set_boundary(boost::multi_array&lt;double,2&gt;&amp; X, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;                  <span class=\"keywordtype\">double</span> bdvalue, types::boundary bdcond, <span class=\"keywordtype\">bool</span> add=<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;<span class=\"comment\">// PDE functions to solve the discrete Poisson&#39;s Equation</span></div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;<span class=\"comment\">// ------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;<span class=\"comment\">// discrete Gradient operator on a uniform grid</span></div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"comment\">// given u(x,y), it returns DX = a_1 du/dx, DY = a_2 du/dy,</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;<span class=\"comment\">// using one-sided finite differences</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;<span class=\"comment\">// U[i][j]  = u(x_i, y_j), i=0...n-1</span></div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;<span class=\"comment\">// DX[i][j] = a1*(U[i+1][j]-U[i][j])/h, i=0...n-2</span></div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;<span class=\"keywordtype\">void</span> grad(boost::multi_array&lt;double,2&gt;&amp; DX, boost::multi_array&lt;double,2&gt;&amp; DY,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;          <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;          <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;<span class=\"comment\">// same as above, but the input U is assumed to contain only inner grid points</span></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;<span class=\"comment\">// and the boundary grid points are inferred from the boundary condition</span></div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;<span class=\"comment\">// U[i][j] = u(x_i, y_j), i=0...n-1</span></div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;<span class=\"comment\">// DX[i][j] = a1*(U[i][j]-U[i-1][j])/h, i=0...n+1</span></div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;<span class=\"keywordtype\">void</span> grad(boost::multi_array&lt;double,2&gt;&amp; DX, boost::multi_array&lt;double,2&gt;&amp; DY,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;          <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;          <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;          <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1b,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;          <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2b,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;          types::boundary boundary);</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;<span class=\"comment\">// simplified version where only one boundary value can be specified</span></div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;<span class=\"keywordtype\">void</span> grad(boost::multi_array&lt;double,2&gt;&amp; DX, boost::multi_array&lt;double,2&gt;&amp; DY,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;          <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;          <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;          <span class=\"keywordtype\">double</span> bdvalue, types::boundary bdcond);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;<span class=\"comment\">// discrete Divergence operator on a uniform grid</span></div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;<span class=\"comment\">// given u(x,y), v(x,y), it returns f = a_1 du/dx + a_2 dv/dx,</span></div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;<span class=\"comment\">// using one-sided finite differences</span></div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;<span class=\"keywordtype\">void</span> div(boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;         <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;         <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; V,</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;         <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;<span class=\"comment\">// discrete Laplace operator on a uniform grid</span></div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;<span class=\"comment\">// given u, it returns f = a_1 u_xx + a_2 u_yy</span></div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;<span class=\"comment\">// note, the Laplace operator can only be applied to inner grid points</span></div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;<span class=\"comment\">// and so the result F has two grid points less in each dimension, i.e.</span></div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;<span class=\"comment\">// U[i][j] = u(x_i, y_j)</span></div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;<span class=\"comment\">// F[i][j] = f(x_{i+1}, y_{i+1})</span></div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;<span class=\"keywordtype\">void</span> laplace(boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;             <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;             <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2);</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;<span class=\"comment\">// discrete Laplace operator on a uniform grid</span></div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;<span class=\"comment\">// the input U is assumed to contain only inner grid points and the</span></div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;<span class=\"comment\">// boundary grid points are inferred from the boundary condition</span></div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;<span class=\"comment\">// U[i][j] = u(x_i, y_j)</span></div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;<span class=\"comment\">// F[i][j] = f(x_i, y_i)</span></div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;<span class=\"keywordtype\">void</span> laplace(boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;             <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;             <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;             <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1b,</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;             <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2b,</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;             types::boundary boundary);</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;<span class=\"comment\">// simplified version where only one boundary value can be specified</span></div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;<span class=\"keywordtype\">void</span> laplace(boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;             <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;             <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;             <span class=\"keywordtype\">double</span> bdvalue, types::boundary bdcond);</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;<span class=\"comment\">// Neumann boundary condition with a general right hand side F will not</span></div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;<span class=\"comment\">// have a solution, however by looking at F we can say what the minimum</span></div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;<span class=\"comment\">// L2-norm error will be for 0-Neumann boundary conditions:</span></div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;<span class=\"comment\">// return = min ||Laplace U - F||</span></div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;<span class=\"comment\">// min is taken over all U consistent with 0-Neumann condition</span></div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;<span class=\"keywordtype\">double</span> neumann_error(<span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; F);</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;<span class=\"comment\">// given a right hand side F, we can find a constant Neumann-boundary</span></div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;<span class=\"comment\">// value which will have a solution U, so that Laplace U = F,</span></div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;<span class=\"comment\">// returns the boundary value</span></div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;<span class=\"keywordtype\">double</span> neumann_compat(<span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;                      <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2);</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;<span class=\"comment\">// solves the 2D Poisson equation: a1 u_xx + a2 u_yy = f</span></div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;<span class=\"comment\">// discretised with uniform grid, x_{i+1} = x_i + h1, y_{i+1} = y_i + h2</span></div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;<span class=\"comment\">// input: rhs       F[i][j] = f(x_i, y_j)</span></div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;<span class=\"comment\">// output: solution  U[i][j] = u(x_i, y_j), ie only inner points by default</span></div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;<span class=\"comment\">// boundary condition:</span></div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;<span class=\"comment\">// - lower and upper boundary in dimension 1: bd1a, bd1b</span></div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;<span class=\"comment\">// - lower and upper boundary in dimension 2: bd2a, bd2b</span></div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;<span class=\"comment\">// - e.g. bd1a[i] refers to U[-1][i]</span></div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;<span class=\"keywordtype\">double</span> poisolve( boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;                 <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;                 <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;                 <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd1b,</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;                 <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2a, <span class=\"keyword\">const</span> std::vector&lt;double&gt;&amp; bd2b,</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;                 types::boundary boundary, <span class=\"keywordtype\">bool</span> add_boundary_to_solution=<span class=\"keyword\">false</span> );</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;<span class=\"comment\">// Poisson solver, assuming uniform boundary</span></div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;<span class=\"keywordtype\">double</span> poisolve(boost::multi_array&lt;double,2&gt;&amp; U,</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;                <span class=\"keyword\">const</span> boost::multi_array&lt;double,2&gt;&amp; F,</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;                <span class=\"keywordtype\">double</span> a1, <span class=\"keywordtype\">double</span> a2, <span class=\"keywordtype\">double</span> h1, <span class=\"keywordtype\">double</span> h2,</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;                <span class=\"keywordtype\">double</span> bound_value,</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;                types::boundary boundarycondition,</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;                <span class=\"keywordtype\">bool</span> add_boundary_to_solution=<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;} <span class=\"comment\">// namespace pde</span></div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;<span class=\"preprocessor\">#endif </span><span class=\"comment\">/* _laplace_h */</span><span class=\"preprocessor\"></span></div><div class=\"ttc\" id=\"namespacearr_html\"><div class=\"ttname\"><a href=\"namespacearr.html\">arr</a></div><div class=\"ttdef\"><b>Definition:</b> laplace.h:31</div></div>\n<div class=\"ttc\" id=\"namespacepde_html\"><div class=\"ttname\"><a href=\"namespacepde.html\">pde</a></div><div class=\"ttdef\"><b>Definition:</b> laplace.h:70</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/lk__se3_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include/dvs_tracking/lk_se3.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">lk_se3.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef LK_SE3_H</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define LK_SE3_H</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_msgs/Event.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/common/transforms.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/StdVector&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;deque&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;sophus/se3.hpp&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html\">   16</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classLKSE3.html\">LKSE3</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;    <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;float, 6, 6&gt; Matrix6;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;float, 8, 8&gt; Matrix8;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;float, 6, 1&gt; Vector6;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;float, 8, 1&gt; Vector8;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structLKSE3_1_1Keypoint.html\">   28</a></span>&#160;    <span class=\"keyword\">struct </span><a class=\"code\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a> {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;        EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">   31</a></span>&#160;        Eigen::Vector3f <a class=\"code\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">P</a>;  </div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">   32</a></span>&#160;        <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">pixel_value</a>;  </div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">   33</a></span>&#160;        Vector8 <a class=\"code\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">J</a>;          </div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">   34</a></span>&#160;        Matrix6 <a class=\"code\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">JJt</a>;        </div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;        <a class=\"code\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a>(Eigen::Vector3f _P, <span class=\"keywordtype\">float</span> _pixel_value, Vector8 _J,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;                 Matrix6 _JJt)</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;            : P(_P), pixel_value(_pixel_value), J(_J), JJt(_JJt) {}</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    };</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keyword\">typedef</span> pcl::PointXYZ Point;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keyword\">typedef</span> pcl::PointCloud&lt;Point&gt; PointCloud;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">typedef</span> std::deque&lt;dvs_msgs::Event&gt; EventQueue;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">typedef</span> Sophus::SE3f SE3;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">   48</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">batch_size_</a>;      </div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">   49</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">max_iterations_</a>;  </div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">pyramid_levels_</a>;  </div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">batches_</a>;         </div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">   58</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">weight_scale_trans_</a>;  </div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">   59</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">weight_scale_rot_</a>;    </div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">   61</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">map_blur_</a>;        </div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">   62</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">depth_median_</a>;  </div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    std::vector&lt;Keypoint, Eigen::aligned_allocator&lt;Keypoint&gt; &gt;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">   65</a></span>&#160;        <a class=\"code\" href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">keypoints_</a>;  </div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">   66</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">n_visible_</a>;  </div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">kf_visibility_</a>;  </div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    PointCloud::Ptr <a class=\"code\" href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">map_</a>;  </div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">   71</a></span>&#160;    PointCloud::Ptr <a class=\"code\" href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">map_local_</a>;  </div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">   73</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">depth_ref_</a>;             </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">   74</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">ref_img_</a>;               </div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">   75</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">new_img_</a>;               </div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">   76</a></span>&#160;    std::vector&lt;cv::Mat&gt; <a class=\"code\" href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">pyr_new_</a>;  </div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    image_geometry::PinholeCameraModel c_;      <span class=\"comment\">// camera at the current frame</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    image_geometry::PinholeCameraModel c_ref_;  <span class=\"comment\">// camera at the reference frame</span></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">   80</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">fx_</a>;       </div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">   81</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">fy_</a>;       </div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">   82</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">cx_</a>;       </div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">   83</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">cy_</a>;       </div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">   84</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">width_</a>;   </div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">   85</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">height_</a>;  </div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">   86</a></span>&#160;    cv::Rect <a class=\"code\" href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">rect_</a>;  </div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"comment\">// Poses</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    Eigen::Affine3f</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">   90</a></span>&#160;        <a class=\"code\" href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">T_world_kf_</a>;  </div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    Eigen::Affine3f</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">   92</a></span>&#160;        <a class=\"code\" href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">T_kf_ref_</a>;  </div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    Eigen::Affine3f</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">   94</a></span>&#160;        <a class=\"code\" href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">T_ref_cam_</a>;  </div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    Eigen::Affine3f</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">   96</a></span>&#160;        <a class=\"code\" href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">T_cur_ref_</a>;  </div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">   98</a></span>&#160;    Eigen::VectorXf <a class=\"code\" href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">x_</a> = Vector6::Zero();  </div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">projectMap</a>();</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">precomputeReferenceFrame</a>();</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">drawEvents</a>(EventQueue::iterator ev_first, EventQueue::iterator ev_last,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;                    cv::Mat &amp;out);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">drawEventsNN</a>(EventQueue::iterator ev_first,</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;                      EventQueue::iterator ev_last, cv::Mat &amp;out);</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">updateTransformation</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> offset, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> N, <span class=\"keywordtype\">size_t</span> pyr_lvl);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">trackFrame</a>();</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;};</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;<span class=\"preprocessor\">#endif  // LK_SE3_H</span></div><div class=\"ttc\" id=\"classLKSE3_html_ad9c246374fbeb8eb5f96146496a82370\"><div class=\"ttname\"><a href=\"classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370\">LKSE3::height_</a></div><div class=\"ttdeci\">size_t height_</div><div class=\"ttdoc\">image height </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:85</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a3872f0d45c6550359f85ee08128c1e24\"><div class=\"ttname\"><a href=\"classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24\">LKSE3::drawEvents</a></div><div class=\"ttdeci\">void drawEvents(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:195</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_aa2c888001a622a25fa07e41f3a2a25f1\"><div class=\"ttname\"><a href=\"classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1\">LKSE3::T_world_kf_</a></div><div class=\"ttdeci\">Eigen::Affine3f T_world_kf_</div><div class=\"ttdoc\">Trasformation from keyframe to world frame. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:90</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a30e4bb3541cf7fbd38f3be7673d58edc\"><div class=\"ttname\"><a href=\"classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc\">LKSE3::cx_</a></div><div class=\"ttdeci\">float cx_</div><div class=\"ttdoc\">image horizontal principal point </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:82</div></div>\n<div class=\"ttc\" id=\"structLKSE3_1_1Keypoint_html\"><div class=\"ttname\"><a href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:28</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a2101771947c5a50deca73658a43b567c\"><div class=\"ttname\"><a href=\"classLKSE3.html#a2101771947c5a50deca73658a43b567c\">LKSE3::batches_</a></div><div class=\"ttdeci\">size_t batches_</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:55</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ace9861d1a3afefa09c08292a21d78021\"><div class=\"ttname\"><a href=\"classLKSE3.html#ace9861d1a3afefa09c08292a21d78021\">LKSE3::depth_median_</a></div><div class=\"ttdeci\">float depth_median_</div><div class=\"ttdoc\">median depth in current scene (reference frame) </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:62</div></div>\n<div class=\"ttc\" id=\"structLKSE3_1_1Keypoint_html_a3a63714be7cbd29753fb10611ba32e3a\"><div class=\"ttname\"><a href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">LKSE3::Keypoint::P</a></div><div class=\"ttdeci\">EIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector3f P</div><div class=\"ttdoc\">bearing vector </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:31</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_af83e375a213c2b8092fb21af3fe5172f\"><div class=\"ttname\"><a href=\"classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f\">LKSE3::projectMap</a></div><div class=\"ttdeci\">void projectMap()</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:16</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_acb8f03911b91548c624a5b324832a856\"><div class=\"ttname\"><a href=\"classLKSE3.html#acb8f03911b91548c624a5b324832a856\">LKSE3::n_visible_</a></div><div class=\"ttdeci\">int n_visible_</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:66</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a17593bcd462e3bea8bb1142968164266\"><div class=\"ttname\"><a href=\"classLKSE3.html#a17593bcd462e3bea8bb1142968164266\">LKSE3::max_iterations_</a></div><div class=\"ttdeci\">size_t max_iterations_</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:49</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a2f36df7081b6a221775b7c36e3c456f4\"><div class=\"ttname\"><a href=\"classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4\">LKSE3::depth_ref_</a></div><div class=\"ttdeci\">cv::Mat depth_ref_</div><div class=\"ttdoc\">Depth map in the reference keyframe. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:73</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a38f8f4fc76a8a8380554b4cc4c2fd3ca\"><div class=\"ttname\"><a href=\"classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca\">LKSE3::fy_</a></div><div class=\"ttdeci\">float fy_</div><div class=\"ttdoc\">image vertical focal length </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:81</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ad746e006ac2fc8211c0fdf47fe87c605\"><div class=\"ttname\"><a href=\"classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605\">LKSE3::T_cur_ref_</a></div><div class=\"ttdeci\">Eigen::Affine3f T_cur_ref_</div><div class=\"ttdoc\">Trasformation from reference frame to current frame. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:96</div></div>\n<div class=\"ttc\" id=\"structLKSE3_1_1Keypoint_html_a000c90408aa18deeb126cdf9ca59dc91\"><div class=\"ttname\"><a href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">LKSE3::Keypoint::JJt</a></div><div class=\"ttdeci\">Matrix6 JJt</div><div class=\"ttdoc\">J dot J^T. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:34</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_afe174f15a8dbec80ba5bd07cd4ab0dcb\"><div class=\"ttname\"><a href=\"classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb\">LKSE3::map_</a></div><div class=\"ttdeci\">PointCloud::Ptr map_</div><div class=\"ttdoc\">Map (built in the reference keyframe c_ref_) </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:70</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ae940ac6eeeb100e9698d7a0a528e2986\"><div class=\"ttname\"><a href=\"classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986\">LKSE3::T_kf_ref_</a></div><div class=\"ttdeci\">Eigen::Affine3f T_kf_ref_</div><div class=\"ttdoc\">Trasformation from reference frame to keyframe. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:92</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_adffc20c113bb95265b91bb3fe60a30e9\"><div class=\"ttname\"><a href=\"classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9\">LKSE3::width_</a></div><div class=\"ttdeci\">size_t width_</div><div class=\"ttdoc\">image width </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:84</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a1dcf848cd01686ef39bb7ee5a6a08446\"><div class=\"ttname\"><a href=\"classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446\">LKSE3::trackFrame</a></div><div class=\"ttdeci\">void trackFrame()</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:183</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_adf67aa8aa635f5e39201f2e210196bce\"><div class=\"ttname\"><a href=\"classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce\">LKSE3::pyr_new_</a></div><div class=\"ttdeci\">std::vector&lt; cv::Mat &gt; pyr_new_</div><div class=\"ttdoc\">Image pyramid of the new image. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:76</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a7a62dbb224c11371ebbbe75a835f66e2\"><div class=\"ttname\"><a href=\"classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2\">LKSE3::drawEventsNN</a></div><div class=\"ttdeci\">void drawEventsNN(EventQueue::iterator ev_first, EventQueue::iterator ev_last, cv::Mat &amp;out)</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:242</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a54124fd5d010a38f4df0cb2ec67036f4\"><div class=\"ttname\"><a href=\"classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4\">LKSE3::map_blur_</a></div><div class=\"ttdeci\">int map_blur_</div><div class=\"ttdoc\">Blur value of map projected onto the img_ref_. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:61</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a06c0f5147576ee71f79185e57dd949b0\"><div class=\"ttname\"><a href=\"classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0\">LKSE3::weight_scale_trans_</a></div><div class=\"ttdeci\">float weight_scale_trans_</div><div class=\"ttdoc\">weight update due to translational residual </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:58</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a09f43d7659d6b4f7e19f9449df749b08\"><div class=\"ttname\"><a href=\"classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08\">LKSE3::cy_</a></div><div class=\"ttdeci\">float cy_</div><div class=\"ttdoc\">image vertical principal point </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:83</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a40a8dd6e220987bf08f12dc64fb6566c\"><div class=\"ttname\"><a href=\"classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c\">LKSE3::precomputeReferenceFrame</a></div><div class=\"ttdeci\">void precomputeReferenceFrame()</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:79</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a43337685ca3bdc7b78d5ea8a43a435f5\"><div class=\"ttname\"><a href=\"classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5\">LKSE3::rect_</a></div><div class=\"ttdeci\">cv::Rect rect_</div><div class=\"ttdoc\">image container, width x height </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:86</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a8894f0d922f307d4ab06f7c772d098d6\"><div class=\"ttname\"><a href=\"classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6\">LKSE3::ref_img_</a></div><div class=\"ttdeci\">cv::Mat ref_img_</div><div class=\"ttdoc\">Image of the reference keyframe. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:74</div></div>\n<div class=\"ttc\" id=\"structLKSE3_1_1Keypoint_html_aea5af5126f9d81ee8b8cc8bfc6622a75\"><div class=\"ttname\"><a href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">LKSE3::Keypoint::J</a></div><div class=\"ttdeci\">Vector8 J</div><div class=\"ttdoc\">Jacobian of the trasformation to fit. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:33</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ab07de201b842f895e552cf33475ad2f6\"><div class=\"ttname\"><a href=\"classLKSE3.html#ab07de201b842f895e552cf33475ad2f6\">LKSE3::map_local_</a></div><div class=\"ttdeci\">PointCloud::Ptr map_local_</div><div class=\"ttdoc\">Submap visible in the current frame. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:71</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a9622311a6ae9f81bcc2f1ea4945721a7\"><div class=\"ttname\"><a href=\"classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7\">LKSE3::keypoints_</a></div><div class=\"ttdeci\">std::vector&lt; Keypoint, Eigen::aligned_allocator&lt; Keypoint &gt; &gt; keypoints_</div><div class=\"ttdoc\">Keypoints in reference frame. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:65</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_af61c47c8c61665f5796cd0af8d761547\"><div class=\"ttname\"><a href=\"classLKSE3.html#af61c47c8c61665f5796cd0af8d761547\">LKSE3::updateTransformation</a></div><div class=\"ttdeci\">void updateTransformation(const int offset, const int N, size_t pyr_lvl)</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.cpp:131</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ab49e4489091b1343ff2094387a7aa4ee\"><div class=\"ttname\"><a href=\"classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee\">LKSE3::new_img_</a></div><div class=\"ttdeci\">cv::Mat new_img_</div><div class=\"ttdoc\">Current image. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:75</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html\"><div class=\"ttname\"><a href=\"classLKSE3.html\">LKSE3</a></div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:16</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a899546c1a1fde1e282ba55881ebab589\"><div class=\"ttname\"><a href=\"classLKSE3.html#a899546c1a1fde1e282ba55881ebab589\">LKSE3::fx_</a></div><div class=\"ttdeci\">float fx_</div><div class=\"ttdoc\">image horizontal focal length </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:80</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ae97a2513fbf49573cdd736c0b12ff31e\"><div class=\"ttname\"><a href=\"classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e\">LKSE3::x_</a></div><div class=\"ttdeci\">Eigen::VectorXf x_</div><div class=\"ttdoc\">Twist vector &lt;-&gt; T_cur_ref. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:98</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a7349f324c27c5b02700a513c9524da79\"><div class=\"ttname\"><a href=\"classLKSE3.html#a7349f324c27c5b02700a513c9524da79\">LKSE3::batch_size_</a></div><div class=\"ttdeci\">size_t batch_size_</div><div class=\"ttdoc\">number of keypoints processed together (batch) </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:48</div></div>\n<div class=\"ttc\" id=\"structLKSE3_1_1Keypoint_html_af3cab605ae13bd5e4015e8faee6a440b\"><div class=\"ttname\"><a href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">LKSE3::Keypoint::pixel_value</a></div><div class=\"ttdeci\">float pixel_value</div><div class=\"ttdoc\">corresponding intensity value </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:32</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a55eb23c7330e6ed6d7168cbee0ae35e6\"><div class=\"ttname\"><a href=\"classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6\">LKSE3::weight_scale_rot_</a></div><div class=\"ttdeci\">float weight_scale_rot_</div><div class=\"ttdoc\">weight update due to rotational residual </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:59</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a66c26aa644e59eb9505fbaa61b6a6b2d\"><div class=\"ttname\"><a href=\"classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d\">LKSE3::kf_visibility_</a></div><div class=\"ttdeci\">float kf_visibility_</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:68</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_a786c18da0f4b081cd32e37f433048a79\"><div class=\"ttname\"><a href=\"classLKSE3.html#a786c18da0f4b081cd32e37f433048a79\">LKSE3::T_ref_cam_</a></div><div class=\"ttdeci\">Eigen::Affine3f T_ref_cam_</div><div class=\"ttdoc\">Trasformation from current frame to reference frame. </div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:94</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html_ad29f3e4a058be67e50c63b724e5b8db1\"><div class=\"ttname\"><a href=\"classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1\">LKSE3::pyramid_levels_</a></div><div class=\"ttdeci\">size_t pyramid_levels_</div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:52</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/logging_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/logging.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">logging.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifdef LUCY_LOGGING</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\"># include &lt;oal/logfile/baselogger.hpp&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\"># define PREFIX &quot;tracking&quot;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\"># define LOG_TAG &quot;svo&quot;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\"># include &lt;oal/logfile/enable_logging_macros.hpp&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#ifdef SVO_USE_ROS</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\"># include &lt;ros/console.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\"># define SVO_DEBUG_STREAM(x) ROS_DEBUG_STREAM(x)</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\"># define SVO_INFO_STREAM(x) ROS_INFO_STREAM(x)</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\"># define SVO_WARN_STREAM(x) ROS_WARN_STREAM(x)</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\"># define SVO_WARN_STREAM_THROTTLE(rate, x) ROS_WARN_STREAM_THROTTLE(rate, x)</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\"># define SVO_ERROR_STREAM(x) ROS_ERROR_STREAM(x)</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\"># ifdef LUCY_LOGGING</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#   define SVO_INFO_STREAM(x) {std::stringstream ss; ss &lt;&lt; x; LOGI(&quot;%s&quot;, ss.str().c_str()); }</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#   define SVO_WARN_STREAM(x) {std::stringstream ss; ss &lt;&lt; x; LOGW(&quot;%s&quot;, ss.str().c_str()); }</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#   define SVO_DEBUG_STREAM(x) {std::stringstream ss; ss &lt;&lt; x; LOGD(&quot;%s&quot;, ss.str().c_str()); }</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">#   define SVO_ERROR_STREAM(x) {std::stringstream ss; ss &lt;&lt; x; LOGE(&quot;%s&quot;, ss.str().c_str()); }</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\"># else</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#   define SVO_INFO_STREAM(x) {std::cerr&lt;&lt;&quot;\\033[0;0m[INFO] SVO: &quot;&lt;&lt;x&lt;&lt;&quot;\\033[0;0m&quot;&lt;&lt;std::endl; }</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#   define SVO_DEBUG_STREAM(x) {std::cerr&lt;&lt;&quot;\\033[0;0m[DEBUG] SVO: &quot;&lt;&lt;x&lt;&lt;&quot;\\033[0;0m&quot;&lt;&lt;std::endl; }</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">#   define SVO_WARN_STREAM(x) {std::cerr&lt;&lt;&quot;\\033[0;33m[WARN] SVO: &quot;&lt;&lt;x&lt;&lt;&quot;\\033[0;0m&quot;&lt;&lt;std::endl; }</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"preprocessor\">#   define SVO_ERROR_STREAM(x) {std::cerr&lt;&lt;&quot;\\033[1;31m[ERROR] SVO: &quot;&lt;&lt;x&lt;&lt;&quot;\\033[0;0m&quot;&lt;&lt;std::endl; }</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\"># include &lt;chrono&gt;</span> <span class=\"comment\">// Adapted from rosconsole. Copyright (c) 2008, Willow Garage, Inc.</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"preprocessor\"># define SVO_WARN_STREAM_THROTTLE(rate, x) \\</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"preprocessor\">    do { \\</span></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"preprocessor\">      static double __log_stream_throttle__last_hit__ = 0.0; \\</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"preprocessor\">      std::chrono::time_point&lt;std::chrono::system_clock&gt; __log_stream_throttle__now__ = \\</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"preprocessor\">      std::chrono::system_clock::now(); \\</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"preprocessor\">      if (__log_stream_throttle__last_hit__ + rate &lt;= \\</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"preprocessor\">          std::chrono::duration_cast&lt;std::chrono::seconds&gt;( \\</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">          __log_stream_throttle__now__.time_since_epoch()).count()) { \\</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"preprocessor\">        __log_stream_throttle__last_hit__ = \\</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"preprocessor\">        std::chrono::duration_cast&lt;std::chrono::seconds&gt;( \\</span></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"preprocessor\">        __log_stream_throttle__now__.time_since_epoch()).count(); \\</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"preprocessor\">        SVO_WARN_STREAM(x); \\</span></div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"preprocessor\">      } \\</span></div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"preprocessor\">    } while(0)</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"preprocessor\">#endif</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/macros_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/macros.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">macros.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef ASLAM_COMMON_MACROS_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define ASLAM_COMMON_MACROS_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#define ASLAM_DISALLOW_EVIL_CONSTRUCTORS(TypeName)     \\</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">  TypeName(const TypeName&amp;) = delete;                  \\</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">  void operator=(const TypeName&amp;) = delete</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#define ASLAM_POINTER_TYPEDEFS(TypeName)               \\</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">  typedef std::unique_ptr&lt;TypeName&gt; UniquePtr;         \\</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">  typedef std::shared_ptr&lt;TypeName&gt; Ptr;               \\</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">  typedef std::shared_ptr&lt;const TypeName&gt; ConstPtr</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structArgumentType.html\">   17</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">struct </span><a class=\"code\" href=\"structArgumentType.html\">ArgumentType</a>;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structArgumentType_3_01T_07U_08_4.html\">   18</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> U&gt; <span class=\"keyword\">struct </span><a class=\"code\" href=\"structArgumentType.html\">ArgumentType</a>&lt;T(U)&gt; { <span class=\"keyword\">typedef</span> U Type; };</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#define GET_TYPE(TYPE) ArgumentType&lt;void(TYPE)&gt;::Type</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#endif  // ASLAM_COMMON_MACROS_H_</span></div><div class=\"ttc\" id=\"structArgumentType_html\"><div class=\"ttname\"><a href=\"structArgumentType.html\">ArgumentType</a></div><div class=\"ttdef\"><b>Definition:</b> macros.h:17</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/main_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/evo_utils/main.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_a206b88f6fff06f8985dc5261e376510.html\">evo_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">main.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;gflags/gflags.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;chrono&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#define RPG_COMMON_MAIN                                    \\</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">    int rpg_common_main(int argc, char** argv);            \\</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">    int main(int argc, char** argv) {                      \\</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">        google::InitGoogleLogging(argv[0]);                \\</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">        google::ParseCommandLineFlags(&amp;argc, &amp;argv, true); \\</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">        google::InstallFailureSignalHandler();             \\</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">        FLAGS_alsologtostderr = true;                      \\</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">        FLAGS_colorlogtostderr = true;                     \\</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">        return rpg_common_main(argc, argv);                \\</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"preprocessor\">    }                                                      \\</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">    int rpg_common_main(int argc, char** argv)</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"preprocessor\">#define TIMER_START(t1) auto t1 = std::chrono::high_resolution_clock::now()</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"preprocessor\">#define TIMER_STOP(t1, t2, duration)                     \\</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">    auto t2 = std::chrono::high_resolution_clock::now(); \\</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">    auto duration =                                      \\</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">        std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(t2 - t1).count()</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/map_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/map.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">map.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Map.html\">   18</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;{</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Map&gt; Ptr;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">typedef</span> std::unordered_map&lt;int, FramePtr&gt; Keyframes; <span class=\"comment\">// Frame-Id &amp; Pointer</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">   24</a></span>&#160;  Keyframes <a class=\"code\" href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">keyframes_</a>;                   </div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  std::vector&lt;PointPtr&gt; points_to_delete_;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  std::mutex points_to_delete_mutex_;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordtype\">int</span> last_added_kf_id_;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>();</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>();</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>&amp;) = <span class=\"keyword\">delete</span>;             <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Map.html\">Map</a>&amp;) = <span class=\"keyword\">delete</span>;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">reset</a>();</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">addKeyframe</a>(<span class=\"keyword\">const</span> FramePtr&amp; new_keyframe);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">removeKeyframe</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> frame_id);</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">safeDeletePoint</a>(<span class=\"keyword\">const</span> PointPtr&amp; pt);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">addPointToTrash</a>(<span class=\"keyword\">const</span> PointPtr&amp; pt);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">emptyPointsTrash</a>();</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">getOverlapKeyframes</a>(</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      std::vector&lt;std::pair&lt;FramePtr,double&gt;&gt;* close_kfs) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">getClosestNKeyframesWithOberlap</a>(</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; cur_frame,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> num_frames,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;      std::vector&lt;FramePtr&gt;* visible_kfs) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  FramePtr <a class=\"code\" href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">getClosestKeyframe</a>(<span class=\"keyword\">const</span> FramePtr&amp; frame) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  FramePtr <a class=\"code\" href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">getFurthestKeyframe</a>(<span class=\"keyword\">const</span> Vector3d&amp; pos) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  FramePtr <a class=\"code\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">getKeyframeById</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">getSortedKeyframes</a>(std::vector&lt;FramePtr&gt;&amp; kfs_sorted) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">transform</a>(<span class=\"keyword\">const</span> Matrix3d&amp; R, <span class=\"keyword\">const</span> Vector3d&amp; t, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; s);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">   81</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">size</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> keyframes_.size(); }</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">   84</a></span>&#160;  <span class=\"keyword\">inline</span> FramePtr <a class=\"code\" href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">getLastKeyframe</a>() { <span class=\"keywordflow\">return</span> this-&gt;<a class=\"code\" href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">getKeyframeById</a>(last_added_kf_id_); }</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keywordtype\">void</span> checkDataConsistency() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;};</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1Map_html_a3f34b39bb21c144937b49280c4a2758c\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c\">svo::Map::getClosestNKeyframesWithOberlap</a></div><div class=\"ttdeci\">void getClosestNKeyframesWithOberlap(const FramePtr &amp;cur_frame, const size_t num_frames, std::vector&lt; FramePtr &gt; *visible_kfs) const</div><div class=\"ttdoc\">Given a frame, return N closest keyframes with overlapping FoV. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:110</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html\">svo::Map</a></div><div class=\"ttdoc\">Map object which saves all keyframes which are in a map. </div><div class=\"ttdef\"><b>Definition:</b> map.h:18</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a2291de9801d0930cf7e64b0d7ec402c6\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6\">svo::Map::safeDeletePoint</a></div><div class=\"ttdeci\">void safeDeletePoint(const PointPtr &amp;pt)</div><div class=\"ttdoc\">Safely remove a point from a map. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:47</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a42fe05af7113a072570e16add76c13e2\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2\">svo::Map::getKeyframeById</a></div><div class=\"ttdeci\">FramePtr getKeyframeById(const int id) const</div><div class=\"ttdoc\">Get Keyframe by Frame-Id. Used for relocalizer. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:169</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a317a8ef58d1abee86c0ab16040031f7c\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c\">svo::Map::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdoc\">Reset the map. Delete all keyframes and reset the frame and point counters. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:27</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_aaf44aec26900f8c80f09f8f76ff0dd2e\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e\">svo::Map::emptyPointsTrash</a></div><div class=\"ttdeci\">void emptyPointsTrash()</div><div class=\"ttdoc\">Effectively delete points in the trash bin. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:68</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a3a156a563e934fcbe060bfe0969e746f\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f\">svo::Map::addPointToTrash</a></div><div class=\"ttdeci\">void addPointToTrash(const PointPtr &amp;pt)</div><div class=\"ttdoc\">Moves the point to the trash bin, cleared after all reprojectors have done their job. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:62</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a08bfdb2c4b6b9f06315e3526f05d3d0c\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c\">svo::Map::getSortedKeyframes</a></div><div class=\"ttdeci\">void getSortedKeyframes(std::vector&lt; FramePtr &gt; &amp;kfs_sorted) const</div><div class=\"ttdef\"><b>Definition:</b> map.cpp:177</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_ac6148e24f0d2979dec7f1bf664ac7469\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469\">svo::Map::size</a></div><div class=\"ttdeci\">size_t size() const</div><div class=\"ttdoc\">Return the number of keyframes in the map. </div><div class=\"ttdef\"><b>Definition:</b> map.h:81</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_afb67a122bb46f1b183c6251df895fea2\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2\">svo::Map::getLastKeyframe</a></div><div class=\"ttdeci\">FramePtr getLastKeyframe()</div><div class=\"ttdoc\">Returns the last added keyframe (or a nullptr if none has been added) </div><div class=\"ttdef\"><b>Definition:</b> map.h:84</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a16dd148e1e959c12cc3353006530ed6e\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e\">svo::Map::keyframes_</a></div><div class=\"ttdeci\">Keyframes keyframes_</div><div class=\"ttdoc\">List of keyframes in the map. </div><div class=\"ttdef\"><b>Definition:</b> map.h:24</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a75275a92ad6a388da03ecb61c5849bcb\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb\">svo::Map::getOverlapKeyframes</a></div><div class=\"ttdeci\">void getOverlapKeyframes(const FramePtr &amp;frame, std::vector&lt; std::pair&lt; FramePtr, double &gt;&gt; *close_kfs) const</div><div class=\"ttdoc\">Given a frame, return all keyframes which have an overlapping field of view. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:86</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a20818729516f78d838a34673449bc479\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a20818729516f78d838a34673449bc479\">svo::Map::getFurthestKeyframe</a></div><div class=\"ttdeci\">FramePtr getFurthestKeyframe(const Vector3d &amp;pos) const</div><div class=\"ttdoc\">Return the keyframe which is furthest apart from pos. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:154</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_afa05cc168ddc26374fd75c22669f86da\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da\">svo::Map::addKeyframe</a></div><div class=\"ttdeci\">void addKeyframe(const FramePtr &amp;new_keyframe)</div><div class=\"ttdoc\">Add a new keyframe to the map. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:79</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a67fc8f788c6a3a71741c1979696fd00d\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d\">svo::Map::removeKeyframe</a></div><div class=\"ttdeci\">void removeKeyframe(const int frame_id)</div><div class=\"ttdoc\">Moves the frame to the trash queue which is cleaned now and then. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:32</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a977dcc0712a023af82e8c8eaa1d76bf4\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4\">svo::Map::transform</a></div><div class=\"ttdeci\">void transform(const Matrix3d &amp;R, const Vector3d &amp;t, const double &amp;s)</div><div class=\"ttdoc\">Transform the whole map with rotation R, translation t and scale s. </div><div class=\"ttdef\"><b>Definition:</b> map.cpp:190</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Map_html_a00df59e6b064b8703898e5a3350712ec\"><div class=\"ttname\"><a href=\"classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec\">svo::Map::getClosestKeyframe</a></div><div class=\"ttdeci\">FramePtr getClosestKeyframe(const FramePtr &amp;frame) const</div><div class=\"ttdoc\">Return the keyframe which is spatially closest and has overlapping field of view. ...</div><div class=\"ttdef\"><b>Definition:</b> map.cpp:135</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/matcher_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/matcher.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">matcher.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;array&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">class </span>Point;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">class </span>FeatureWrapper;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">namespace </span>patch_score {</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">   24</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keywordtype\">int</span> HALF_PATCH_SIZE&gt; <span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">ZMSSD</a>;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;}</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Matcher.html\">   28</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;{</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> kHalfPatchSize = 4;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> kPatchSize = 8;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD&lt;kHalfPatchSize&gt;</a> <a class=\"code\" href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">PatchScore</a>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Matcher&gt; Ptr;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html\">   39</a></span>&#160;  <span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1Matcher_1_1Options.html\">Options</a></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  {</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71\">   41</a></span>&#160;    <span class=\"keywordtype\">bool</span> align_1d = <span class=\"keyword\">false</span>;                  </div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e\">   42</a></span>&#160;    <span class=\"keywordtype\">int</span> align_max_iter = 10;                </div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81\">   43</a></span>&#160;    <span class=\"keywordtype\">double</span> max_epi_length_optim = 2.0;      </div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b\">   44</a></span>&#160;    <span class=\"keywordtype\">size_t</span> max_epi_search_steps = 100;      </div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb\">   45</a></span>&#160;    <span class=\"keywordtype\">bool</span> subpix_refinement = <span class=\"keyword\">true</span>;          </div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordtype\">bool</span> epi_search_edgelet_filtering = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keywordtype\">bool</span> scan_on_unit_sphere = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keywordtype\">double</span> epi_search_edgelet_max_angle = 0.7;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keywordtype\">bool</span> verbose = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordtype\">bool</span> use_affine_warp_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keywordtype\">bool</span> affine_est_offset_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keywordtype\">bool</span> affine_est_gain_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  } options_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">enum class</span> MatchResult {</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    kSuccess,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    kFailScore,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    kFailTriangulation,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    kFailVisibility,</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    kFailWarp,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    kFailAlignment,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    kFailRange,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    kFailAngle,</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    kFailCloseView,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    kFailLock</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  };</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  uint8_t patch_[kPatchSize*kPatchSize] __attribute__ ((aligned (16)));</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  uint8_t patch_with_border_[(kPatchSize+2)*(kPatchSize+2)] __attribute__ ((aligned (16)));</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">   70</a></span>&#160;  Eigen::Matrix2d <a class=\"code\" href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">A_cur_ref_</a>;          </div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">   71</a></span>&#160;  Eigen::Vector2d <a class=\"code\" href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">epi_image_</a>;          </div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">   72</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">epi_length_pyramid_</a>;   </div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">   73</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">h_inv_</a>;                </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">int</span> search_level_;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordtype\">bool</span> reject_;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  Keypoint px_cur_;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  BearingVector f_cur_;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  MatchResult findMatchDirect(</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; cur_frame,</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; ref_ftr,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> FloatType&amp; ref_depth,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      Keypoint&amp; px_cur);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  MatchResult findEpipolarMatchDirect(</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; cur_frame,</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; ref_ftr,</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_estimate_inv,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_min_inv,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_max_inv,</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;      <span class=\"keywordtype\">double</span>&amp; depth);</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  MatchResult findEpipolarMatchDirect(</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; cur_frame,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keyword\">const</span> Transformation &amp;T_cur_ref,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; ref_ftr,</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_estimate_inv,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_min_inv,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> d_max_inv,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;      <span class=\"keywordtype\">double</span>&amp; depth);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"keywordtype\">void</span> scanEpipolarLine(</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; A,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; B,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; C,</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;      <span class=\"keyword\">const</span> PatchScore&amp; patch_score,</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      Keypoint* image_best,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      <span class=\"keywordtype\">int</span>* zmssd_best);</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"keyword\">static</span> std::string getResultString(<span class=\"keyword\">const</span> Matcher::MatchResult&amp; result);</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"comment\">// TODO(zzc): perhaps some of these should be inline</span></div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;<span class=\"comment\"></span>  MatchResult findLocalMatch(</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;GradientVector&gt;&amp; direction,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      Keypoint&amp; px_cur);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;  <span class=\"keywordtype\">bool</span> updateZMSSD(</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector2i&amp; pxi,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      <span class=\"keyword\">const</span> PatchScore&amp; patch_score,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      <span class=\"keywordtype\">int</span>* zmssd_best);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">bool</span> isPatchWithinImage(</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector2i&amp; pxi,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level);</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;  <span class=\"keywordtype\">void</span> scanEpipolarUnitPlane(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; A,</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; B,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; C,</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;      <span class=\"keyword\">const</span> PatchScore&amp; patch_score,</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level,</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;      Keypoint* image_best,</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;      <span class=\"keywordtype\">int</span>* zmssd_best);</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;  <span class=\"keywordtype\">void</span> scanEpipolarUnitSphere(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; A,</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; B,</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; C,</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;      <span class=\"keyword\">const</span> PatchScore&amp; patch_score,</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_level,</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;      Keypoint* image_best,</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;      <span class=\"keywordtype\">int</span>* zmssd_best);</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;};</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;<span class=\"keyword\">namespace </span>matcher_utils {</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;Matcher::MatchResult depthFromTriangulation(</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_search_ref,</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_ref,</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_cur,</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;    <span class=\"keywordtype\">double</span>* depth);</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;<span class=\"keywordtype\">void</span> createPatchWithBorderNoWarp(</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector2i&amp; px,</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size_without_border,</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;    uint8_t* patch_with_border);</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;<span class=\"keywordtype\">void</span> createPatchFromPatchWithBorder(</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;    <span class=\"keyword\">const</span> uint8_t* <span class=\"keyword\">const</span> patch_with_border,</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size,</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;    uint8_t* patch);</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;} <span class=\"comment\">// namespace matcher_utils</span></div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1Matcher_html_a9a7f14a10723967506db9c4216885f2c\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c\">svo::Matcher::epi_length_pyramid_</a></div><div class=\"ttdeci\">double epi_length_pyramid_</div><div class=\"ttdoc\">length of epipolar line segment in pixels on pyrimid level (only used for epipolar search) ...</div><div class=\"ttdef\"><b>Definition:</b> matcher.h:72</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Matcher_1_1Options_html\"><div class=\"ttname\"><a href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></div><div class=\"ttdef\"><b>Definition:</b> matcher.h:39</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1patch__score_1_1ZMSSD_html\"><div class=\"ttname\"><a href=\"classsvo_1_1patch__score_1_1ZMSSD.html\">svo::patch_score::ZMSSD</a></div><div class=\"ttdoc\">Zero Mean Sum of Squared Differences Cost. </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:24</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html_a516300236f619e5bb5692877d326ce9b\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b\">svo::Matcher::A_cur_ref_</a></div><div class=\"ttdeci\">Eigen::Matrix2d A_cur_ref_</div><div class=\"ttdoc\">affine warp matrix </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:70</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html_a03bce17dc9e2f21c4cab3ca16a785184\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184\">svo::Matcher::epi_image_</a></div><div class=\"ttdeci\">Eigen::Vector2d epi_image_</div><div class=\"ttdoc\">vector from epipolar start to end on the image plane </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:71</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></div><div class=\"ttdoc\">Patch-matcher for reprojection-matching and epipolar search in triangulation. </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:28</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html_ae09df94962be792484c79ec44f76a5c3\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3\">svo::Matcher::h_inv_</a></div><div class=\"ttdeci\">double h_inv_</div><div class=\"ttdoc\">hessian of 1d image alignment along epipolar line </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:73</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/math__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/math_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">math_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;cstdlib&gt;</span> <span class=\"comment\">// size_t, fabs</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define _USE_MATH_DEFINES // for M_PI</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span>   <span class=\"comment\">// sin, cos</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/StdVector&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">using</span> Transformation = kindr::minimal::QuatTransformation;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">using</span> Quaternion = kindr::minimal::RotationQuaternion;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">using</span> Bearings = Eigen::Matrix&lt;double, 3, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">using</span> std::size_t;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">using</span> std::uint8_t;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">//TODO(cfo) template, take eigen::Ref, and work with minkindr trafo</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;Eigen::Vector3d triangulateFeatureNonLin(</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R,</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; t,</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; feature1,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; feature2);</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keywordtype\">bool</span> depthFromTriangulationExact(</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_r_c,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; t_r_c,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_r,</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_c,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordtype\">double</span>&amp; depth_in_r,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keywordtype\">double</span>&amp; depth_in_c);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"keywordtype\">double</span> reprojError(</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f1,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f2,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keywordtype\">double</span> error_multiplier2);</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"keywordtype\">double</span> computeInliers(</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> Bearings&amp; features1, </div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keyword\">const</span> Bearings&amp; features2, </div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R, </div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; t, </div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reproj_thresh,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keywordtype\">double</span> error_multiplier2,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    Bearings&amp; xyz_vec, </div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    std::vector&lt;int&gt;&amp; inliers,</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    std::vector&lt;int&gt;&amp; outliers</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;);</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"keywordtype\">void</span> computeInliersOneView(</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;Eigen::Vector3d, Eigen::aligned_allocator&lt;Eigen::Vector3d&gt; &gt;&amp; feature_sphere_vec,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;Eigen::Vector3d, Eigen::aligned_allocator&lt;Eigen::Vector3d&gt; &gt;&amp; xyz_vec,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d &amp;R,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d &amp;t,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reproj_thresh,</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> error_multiplier2,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    std::vector&lt;int&gt;&amp; inliers,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    std::vector&lt;int&gt;&amp; outliers);</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;Eigen::Vector3d dcm2rpy(<span class=\"keyword\">const</span> Eigen::Matrix3d &amp;R);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;Eigen::Matrix3d rpy2dcm(<span class=\"keyword\">const</span> Eigen::Vector3d &amp;rpy);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;Eigen::Quaterniond angax2quat(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; n, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; angle);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;Eigen::Matrix3d angax2dcm(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; n, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; angle);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;Quaternion slerp(<span class=\"keyword\">const</span> Quaternion&amp; R0, <span class=\"keyword\">const</span> Quaternion&amp; R1, <span class=\"keywordtype\">double</span> t);</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;<span class=\"keywordtype\">double</span> sampsonDistance(</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_cur,</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; E_cur_ref,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; f_ref);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"keyword\">inline</span> Eigen::Matrix3d skew(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; v)</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;{</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  Eigen::Matrix3d v_sqew;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  v_sqew &lt;&lt; 0, -v[2], v[1],</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;            v[2], 0, -v[0],</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;            -v[1], v[0], 0;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"keywordflow\">return</span> v_sqew;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;}</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;<span class=\"keyword\">inline</span> Eigen::Matrix3d rightJacobianExpMapSO3(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; x)</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;{</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"comment\">// x is the axis-angle representation (exponential coordinates) for a rotation</span></div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> normx = x.norm(); <span class=\"comment\">// rotation angle</span></div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  Eigen::Matrix3d Jr;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <span class=\"keywordflow\">if</span> (normx &lt; 10e-8){</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    Jr = Eigen::Matrix3d::Identity();</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  }</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keywordflow\">else</span>{</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d X = vk::skew(x); <span class=\"comment\">// element of Lie algebra so(3): X = x^</span></div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    Jr = Eigen::Matrix3d::Identity() - ((1-cos(normx))/(normx*normx)) * X +</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;        ((normx-sin(normx))/(normx*normx*normx)) * X * X; <span class=\"comment\">// right Jacobian</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  }</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keywordflow\">return</span> Jr;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;}</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;<span class=\"keyword\">inline</span> Eigen::Matrix3d rightJacobianExpMapSO3inverse(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; x)</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;{</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  <span class=\"comment\">// x is the axis-angle representation (exponential coordinates) for a rotation</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> normx = x.norm(); <span class=\"comment\">// rotation angle</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  Eigen::Matrix3d Jrinv;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keywordflow\">if</span> (normx &lt; 10e-8)</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  {</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    Jrinv = Eigen::Matrix3d::Identity();</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  }</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  {</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d X = vk::skew(x); <span class=\"comment\">// element of Lie algebra so(3): X = x^</span></div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;    Jrinv = Eigen::Matrix3d::Identity() +</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;        0.5 * X + (1/(normx*normx) - (1+cos(normx))/(2*normx * sin(normx))   ) * X * X;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  }</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keywordflow\">return</span> Jrinv;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;}</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> norm_max(<span class=\"keyword\">const</span> Eigen::VectorXd &amp; v)</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;{</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  <span class=\"keywordtype\">double</span> max = -1;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i=0; i&lt;v.size(); i++)</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  {</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keywordtype\">double</span> abs = std::fabs(v[i]);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    <span class=\"keywordflow\">if</span>(abs&gt;max){</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      max = abs;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    }</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;  }</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;  <span class=\"keywordflow\">return</span> max;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;}</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Derived&gt;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;Eigen::Matrix&lt;typename Derived::Scalar, 2, 1&gt; project2(<span class=\"keyword\">const</span> Eigen::MatrixBase&lt;Derived&gt;&amp; v)</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;{</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 1);</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;  <span class=\"keywordflow\">return</span> v.template head&lt;2&gt;() / v(2);</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;}</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;<span class=\"keyword\">inline</span> Eigen::Vector3d unproject2d(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; v)</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;{</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  <span class=\"keywordflow\">return</span> Eigen::Vector3d(v[0], v[1], 1.0);</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;}</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;<span class=\"keyword\">inline</span> Eigen::Vector3d project3d(<span class=\"keyword\">const</span> Eigen::Vector4d&amp; v)</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;{</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keywordflow\">return</span> v.head&lt;3&gt;()/v[3];</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;}</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;<span class=\"keyword\">inline</span> Eigen::Vector4d unproject3d(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; v)</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;{</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;  <span class=\"keywordflow\">return</span> Eigen::Vector4d(v[0], v[1], v[2], 1.0);</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;}</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;T getMedian(std::vector&lt;T&gt;&amp; data_vec)</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;{</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;  assert(!data_vec.empty());</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;  <span class=\"keyword\">typename</span> std::vector&lt;T&gt;::iterator it = data_vec.begin()+std::floor(data_vec.size()/2);</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;  std::nth_element(data_vec.begin(), it, data_vec.end());</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;  <span class=\"keywordflow\">return</span> *it;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;}</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> pyrFromZero_d(<span class=\"keywordtype\">double</span> x_0, <span class=\"keywordtype\">int</span> level)</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;{</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;  <span class=\"keywordflow\">return</span> x_0/(1&lt;&lt;level); <span class=\"comment\">// = 1 / 2^level</span></div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;}</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;<span class=\"keyword\">inline</span> Eigen::Vector2d pyrFromZero_2d(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; uv_0, <span class=\"keywordtype\">int</span> level)</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;{</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;  <span class=\"keywordflow\">return</span> Eigen::Vector2d(pyrFromZero_d(uv_0[0], level),</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;                         pyrFromZero_d(uv_0[1], level));</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;}</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;<span class=\"keyword\">inline</span> T normPdf(<span class=\"keyword\">const</span> T x, <span class=\"keyword\">const</span> T mean, <span class=\"keyword\">const</span> T sigma)</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;{</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;  T exponent = x - mean;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;  exponent *= -exponent;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;  exponent /= 2 * sigma * sigma;</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;  T result = std::exp(exponent);</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;  result /= sigma * std::sqrt(2 * M_PI);</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;  <span class=\"keywordflow\">return</span> result;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;}</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> jacobianFrame_xyz2uv(</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; xyz_in_f,</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;    Eigen::Matrix&lt;double,2,6&gt;&amp; J)</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;{</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> x = xyz_in_f[0];</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> y = xyz_in_f[1];</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv = 1./xyz_in_f[2];</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv_2 = z_inv*z_inv;</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;  J(0,0) = -z_inv;              <span class=\"comment\">// -1/z</span></div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;  J(0,1) = 0.0;                 <span class=\"comment\">// 0</span></div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;  J(0,2) = x*z_inv_2;           <span class=\"comment\">// x/z^2</span></div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;  J(0,3) = y*J(0,2);            <span class=\"comment\">// x*y/z^2</span></div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;  J(0,4) = -(1.0 + x*J(0,2));   <span class=\"comment\">// -(1.0 + x^2/z^2)</span></div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;  J(0,5) = y*z_inv;             <span class=\"comment\">// y/z</span></div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;  J(1,0) = 0.0;                 <span class=\"comment\">// 0</span></div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;  J(1,1) = -z_inv;              <span class=\"comment\">// -1/z</span></div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;  J(1,2) = y*z_inv_2;           <span class=\"comment\">// y/z^2</span></div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;  J(1,3) = 1.0 + y*J(1,2);      <span class=\"comment\">// 1.0 + y^2/z^2</span></div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;  J(1,4) = -J(0,3);             <span class=\"comment\">// -x*y/z^2</span></div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;  J(1,5) = -x*z_inv;            <span class=\"comment\">// x/z</span></div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;}</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> jacobianPoint_xyz2uv(</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_f,</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_f_w,</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;    Eigen::Matrix&lt;double,2,3&gt;&amp; J)</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;{</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv = 1.0/p_in_f[2];</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv_sq = z_inv*z_inv;</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;  J(0,0) = z_inv;</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;  J(0,1) = 0.0;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;  J(0,2) = -p_in_f[0] * z_inv_sq;</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;  J(1,0) = 0.0;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;  J(1,1) = z_inv;</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;  J(1,2) = -p_in_f[1] * z_inv_sq;</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;  J = - J * R_f_w;</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;}</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;} <span class=\"comment\">// end namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/md_README.html",
    "content": "<!DOCTYPE html\n    PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\" />\n    <meta name=\"generator\" content=\"Doxygen 1.8.13\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <title>EVO: Event based Visual Odometry: EVO: Event based Visual Odometry</title>\n    <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" src=\"jquery.js\"></script>\n    <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n    <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\" />\n    <script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n    <script type=\"text/javascript\" src=\"search/search.js\"></script>\n    <link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n\n<body>\n    <div id=\"top\">\n        <!-- do not remove this div, it is closed by doxygen! -->\n        <div id=\"titlearea\">\n            <table cellspacing=\"0\" cellpadding=\"0\">\n                <tbody>\n                    <tr style=\"height: 56px;\">\n                        <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n                            <div id=\"projectname\">EVO: Event based Visual Odometry\n                            </div>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </div>\n        <!-- end header part -->\n        <!-- Generated by Doxygen 1.8.13 -->\n        <script type=\"text/javascript\">\n            var searchBox = new SearchBox(\"searchBox\", \"search\", false, 'Search');\n        </script>\n        <script type=\"text/javascript\" src=\"menudata.js\"></script>\n        <script type=\"text/javascript\" src=\"menu.js\"></script>\n        <script type=\"text/javascript\">\n            $(function () {\n                initMenu('', true, false, 'search.php', 'Search');\n                $(document).ready(function () { init_search(); });\n            });\n        </script>\n        <div id=\"main-nav\"></div>\n        <!-- window showing the filter options -->\n        <div id=\"MSearchSelectWindow\" onmouseover=\"return searchBox.OnSearchSelectShow()\"\n            onmouseout=\"return searchBox.OnSearchSelectHide()\" onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n        </div>\n\n        <!-- iframe showing the search results (closed by default) -->\n        <div id=\"MSearchResultsWindow\">\n            <iframe src=\"javascript:void(0)\" frameborder=\"0\" name=\"MSearchResults\" id=\"MSearchResults\">\n            </iframe>\n        </div>\n\n    </div><!-- top -->\n    <div class=\"header\">\n        <div class=\"headertitle\">\n            <div class=\"title\">EVO: Event based Visual Odometry </div>\n        </div>\n    </div>\n    <!--header-->\n    <div class=\"contents\">\n        <div class=\"textblock\">\n            <p><a href=\"https://www.youtube.com/watch?v=bYqD2qZJlxE\"></a></p>\n            <p><a class=\"anchor\" id=\"license\"></a> </p>\n            <h2>License, patent and credits</h2>\n            <h3>Citation</h3>\n            <p>This code implements the event-based visual odometry pipeline described in the paper <a\n                    href=\"http://rpg.ifi.uzh.ch/docs/RAL16_EVO.pdf\">EVO: A Geometric Approach to Event-Based 6-DOF\n                    Parallel Tracking and Mapping in Real-time</a> by <a\n                    href=\"https://supitalp.github.io/research/\">Henri Rebecq</a>, Timo Horstschaefer, <a\n                    href=\"https://sites.google.com/view/guillermogallego\">Guillermo Gallego</a> and <a\n                    href=\"http://rpg.ifi.uzh.ch/people_scaramuzza.html\">Davide Scaramuzza</a>.</p>\n            <p>If you use any of this code, please cite the following publications:</p>\n            <div class=\"fragment\">\n                <div class=\"line\">@Article{RebecqEVO,</div>\n                <div class=\"line\"> author = {Rebecq, Henri and Horstschaefer, Timo and Gallego, Guillermo and\n                    Scaramuzza, Davide},</div>\n                <div class=\"line\"> journal = {IEEE Robotics and Automation Letters}, </div>\n                <div class=\"line\"> title = {EVO: A Geometric Approach to Event-Based 6-DOF Parallel Tracking and Mapping\n                    in Real Time}, </div>\n                <div class=\"line\"> year = {2017},</div>\n                <div class=\"line\"> volume = {2},</div>\n                <div class=\"line\"> number = {2},</div>\n                <div class=\"line\"> pages = {593-600},</div>\n                <div class=\"line\"> doi = {10.1109/LRA.2016.2645143}</div>\n                <div class=\"line\">}</div>\n            </div><!-- fragment -->\n            <div class=\"fragment\">\n                <div class=\"line\">@InProceedings{Gehrig_2020_CVPR,</div>\n                <div class=\"line\"> author = {Daniel Gehrig and Mathias Gehrig and Javier Hidalgo-Carri\\&#39;o and Davide\n                    Scaramuzza},</div>\n                <div class=\"line\"> title = {Video to Events: Recycling Video Datasets for Event Cameras},</div>\n                <div class=\"line\"> booktitle = {{IEEE} Conf. Comput. Vis. Pattern Recog. (CVPR)},</div>\n                <div class=\"line\"> month = {June},</div>\n                <div class=\"line\"> year = {2020}</div>\n                <div class=\"line\">}</div>\n            </div><!-- fragment -->\n            <p>If you don't have an event camera, you can generate an artificial dataset using the above work.</p>\n            <h3>Patent &amp; License</h3>\n            <ul>\n                <li>The proposed EVO method is <a\n                        href=\"https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2018037079\">patented</a>.\n                    <pre class=\"fragment\">  H. Rebecq, G. Gallego, D. Scaramuzza\n  Simultaneous Localization and Mapping with an Event Camera\n  Pub. No.: WO/2018/037079.  International Application No.: PCT/EP2017/071331\n</pre>\n                </li>\n                <li>The license is [available here](LICENSE).</li>\n            </ul>\n            <h3>Acknowledgements</h3>\n            <p>The open sourcing was curated by <a href=\"https://antonioterpin.github.io\">Antonio Terpin</a> and <a\n                    href=\"https://danielgehrig18.github.io\">Daniel Gehrig</a>.</p>\n            <h4>Table of contents</h4>\n            <ol type=\"1\">\n                <li><a href=\"#getstarted\">Getting started</a></li>\n                <li><a href=\"#examples\">Examples</a></li>\n                <li><a href=\"#live\">Running live</a></li>\n                <li><a href=\"#todo\">Further improvements</a></li>\n                <li><a href=\"#ref\">Additional resources on Event Cameras</a></li>\n            </ol>\n            <p>Remark that this is <b>research</b> code, any fitness for a particular purpose is disclaimed.</p>\n            <p><a class=\"anchor\" id=\"getstarted\"></a> </p>\n            <h2>Getting started</h2>\n            <p>This software depends on <a href=\"https://www.ros.org/\">ROS</a>. Installation instructions can be found\n                <a href=\"http://wiki.ros.org/melodic/Installation/Ubuntu\">here</a>. We have tested this software on\n                Ubuntu 18.04 and ROS Melodic.\n            </p>\n            <ol type=\"1\">\n                <li>Create and initialize a new catkin workspace if needed\n                    <pre class=\"fragment\"> mkdir -p ~/catkin_ws/src &amp;&amp; cd ~/catkin_ws/\n catkin config \\\n     --init --mkdirs --extend /opt/ros/melodic \\\n     --merge-devel --cmake-args \\\n     -DCMAKE_BUILD_TYPE=Release -DCFLAGS=-Wno-error\n</pre>\n                </li>\n                <li>Clone this repository\n                    <pre class=\"fragment\"> cd src/ &amp;&amp; git clone git@github.com:uzh-rpg/rpg_dvs_evo_open.git\n</pre>\n                </li>\n                <li>\n                    <p class=\"startli\">Clone (and fix) dependencies </p>\n                    <pre class=\"fragment\"> ./rpg_dvs_evo_open/install.sh [ros-version] # [ros-version]: melodic, ..\n</pre>\n                    <p class=\"startli\">The above commands do the following:</p>\n                    <ul>\n                        <li>First, we install the required packages. Namely,</li>\n                    </ul>\n                </li>\n            </ol>\n            <table class=\"doxtable\">\n                <tr>\n                    <th>Package </th>\n                    <th>Reason </th>\n                </tr>\n                <tr>\n                    <td>ros-[ros-version]-sophus </td>\n                    <td>Lie groups </td>\n                </tr>\n                <tr>\n                    <td>ros-[ros-version]-pcl-ros </td>\n                    <td>bridge between point clouds and 3D geometry processing in ros </td>\n                </tr>\n                <tr>\n                    <td>ros-[ros-version]-eigen-conversions </td>\n                    <td>Eigen data structures to ros geometry messages </td>\n                </tr>\n                <tr>\n                    <td>libfftw3-dev, libfftw3-doc </td>\n                    <td>fast fourier transform </td>\n                </tr>\n                <tr>\n                    <td>libglew-dev </td>\n                    <td>determining which OpenGL extensions are supported (svo) </td>\n                </tr>\n                <tr>\n                    <td>libopencv-dev </td>\n                    <td>opencv </td>\n                </tr>\n                <tr>\n                    <td>libyaml-cpp-dev</td>\n                    <td>yaml </td>\n                </tr>\n            </table>\n            <ul>\n                <li>Second, we clone the <a href=\"dependencies.yaml\">repositories</a> evo relies on.</li>\n            </ul>\n            <p>Remark that with the above commands we install also the dependencies required to run the pipeline live.\n                If you do not need them, you can comment the unnecessary packages from the dependencies.yaml file (<a\n                    href=\"https://github.com/uzh-rpg/rpg_dvs_ros\">davis driver</a>).</p>\n            <ol type=\"1\">\n                <li>\n                    <p class=\"startli\">Build the packages</p>\n                    <p class=\"startli\">cd .. &amp;&amp; catkin build</p>\n                </li>\n            </ol>\n            <p>Do not forget to source the workspace afterwards! </p>\n            <pre class=\"fragment\">source devel/setup.bash\n</pre>\n            <p><a class=\"anchor\" id=\"examples\"></a> </p>\n            <h2>Examples</h2>\n            <div class=\"image\">\n                <img src=\"images/cover_examples.png\" alt=\"EVO: Event based Visual Odometry\" />\n            </div>\n            <table class=\"doxtable\">\n                <tr>\n                    <th align=\"left\">Example </th>\n                    <th align=\"left\">Launch file </th>\n                    <th align=\"left\">Rosbag </th>\n                </tr>\n                <tr>\n                    <td align=\"left\">Multi-keyframe sequence </td>\n                    <td align=\"left\"><a href=\"dvs_tracking/launch/flyingroom.launch\">flyingroom.launch</a> </td>\n                    <td align=\"left\"><a href=\"http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_flyingroom.bag\">538\n                            MB</a> </td>\n                </tr>\n                <tr>\n                    <td align=\"left\">Desk sequence </td>\n                    <td align=\"left\"><a href=\"dvs_tracking/launch/desk.launch\">desk.launch</a> </td>\n                    <td align=\"left\"><a href=\"http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_desk.bag\">145 MB</a>\n                    </td>\n                </tr>\n            </table>\n            <p>To download the rosbags, you can use the following command: </p>\n            <pre class=\"fragment\">cd /path/to/download/folder/\nwget [rosbag link]\n</pre>\n            <p>For instance, the following will download the multi-keyframe sequence rosbag: </p>\n            <pre class=\"fragment\">wget http://rpg.ifi.uzh.ch/data/EVO/code_examples/evo_flyingroom.bag\n</pre>\n            <p>To run the pipeline from a rosbag, first start the pipeline as </p>\n            <pre class=\"fragment\">roslaunch dvs_tracking [launch-file] auto_trigger:=true\n</pre>\n            <p>where the specific launch file (fine-tuned) for each example is listed in the following table. The most\n                interesting and repeatible one (due to the bootstrapping sequence, see <a href=\"#todo\">further\n                    improvements</a>) is the multi-keyframe sequence.</p>\n            <p>Then, once the everything is loaded, run the rosbag as </p>\n            <pre class=\"fragment\">rosbag play [rosbag-file]\n</pre>\n            <p>For instance, </p>\n            <pre class=\"fragment\">rosbag play /path/to/download/folder/evo_flyingroom.bag\n</pre>\n            <p>Remark that we set the <code>auto_trigger</code> parameter to true. You can also set it to false and\n                follow the instruction on <a href=\"#live\">how to run it live</a>.</p>\n            <p>If anything fails, just try it again (give it a couple of chances!), and make sure to follow exactly the\n                above instructions.</p>\n            <p>In the <a href=\"#todo\">further improvements</a> section are outlined the things that might go wrong when\n                running the code. To improve the reliability when playing the rosbags (running live is easier), consider\n                using <code>-r .7</code>, to reduce the rate. This helps especially when the hardware is not powerful\n                enough.</p>\n            <p>For instance, </p>\n            <pre class=\"fragment\">rosbag play evo_flyingroom -r .7\n</pre>\n            <p>Eventually, setting <code>bootstrap_image_topic:=/dvs/image_raw</code> will bootstrap from traditional\n                frames and later switch to only events. This is the most reliable way currently available to bootstrap.\n            </p>\n            <pre class=\"fragment\">roslaunch dvs_tracking [launch-file] bootstrap_image_topic:=/dvs/image_raw auto_trigger:=true\n</pre>\n            <p><a class=\"anchor\" id=\"live\"></a> </p>\n            <h2>Running live</h2>\n            <p>To run the pipeline live, first adjust the template <a\n                    href=\"dvs_tracking/launch/live.launch\">live.launch</a> to your sensor and scene. You can follow the\n                following steps. Further customization, such as which bootstrapper to use, are explained in the launch\n                file itself.</p>\n            <h3>Calibration</h3>\n            <p>Make sure you have updated calibration files for your event camera, in the <code>rpg_calib</code> and\n                that you have the calibration files for your DAVIS in <code>rpg_calib/dvs</code> and\n                <code>rpg_calib/ncamera</code>.\n            </p>\n            <p>Make sure your <code>.yaml</code> files have the same format as the provided ones (<a\n                    href=\"dvs_tracking/parameters/calib/DAVIS-evo.yaml\">single camera format</a>, <a\n                    href=\"dvs_tracking/parameters/calib/ncamera/DAVIS-evo.yaml\">multiple cameras format</a>).</p>\n            <p>See <a href=\"#ref\">this section</a> for further references on calibration.</p>\n            <h3>Tuning</h3>\n            <p>Adjust the parameters in the launch file <a\n                    href=\"dvs_tracking/launch/template.launch\"><code>dvs_tracking/launch/template.launch</code></a>.</p>\n            <p>Tuning is crucial for a good performance of the pipeline, in particular the <code>min_depth</code> and\n                <code>max_depth</code> parameters in the mapping node, and the <code>bootstrap</code> node parameters.\n            </p>\n            <p>An explanation of all the parameters for each module of the pipeline can be found in the <a\n                    href=\"https://github.com/antonioterpin/rpg_dvs_evo_open/wiki\">Wiki</a>.</p>\n            <p>The main parameters can be found in the template launch file, and are explained contextually. We still\n                invite you to have a look at the Wiki, to discover further interesting features ;)</p>\n            <table class=\"doxtable\">\n                <tr>\n                    <th align=\"left\">Module </th>\n                </tr>\n                <tr>\n                    <td align=\"left\"><a\n                            href=\"https://github.com/antonioterpin/rpg_dvs_evo_open/wiki/Global-parameters\">Global\n                            parameters</a> </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"><a\n                            href=\"https://github.com/antonioterpin/rpg_dvs_evo_open/wiki/Bootstrapping\">Bootstrapping</a>\n                    </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"><a\n                            href=\"https://github.com/antonioterpin/rpg_dvs_evo_open/wiki/Mapping\">Mapping</a>\n                    </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"><a\n                            href=\"https://github.com/antonioterpin/rpg_dvs_evo_open/wiki/Tracking\">Tracking</a>\n                    </td>\n                </tr>\n            </table>\n            <p>If you are not using the fronto-planar bootstrapper, then you might need to tune SVO.</p>\n            <p>Remark that this might not be needed. You can test the svo tuning bootstrapping from traditional frames:\n            </p>\n            <pre class=\"fragment\">roslaunch dvs_tracking live.launch bootstrap_image_topic:=[topic of raw frames] auto_trigger:=[true/false]\n</pre>\n            <p>For instance, <code>bootstrap_image_topic:=/dvs/image_raw</code>.</p>\n            <h3>Run</h3>\n            <p>The procedure is analogous to the one explained in the examples:</p>\n            <ol type=\"1\">\n                <li>Run the ros core on the first terminal.\n                    <pre class=\"fragment\"> roscore\n</pre>\n                </li>\n                <li>On a second terminal, launch the event camera driver.\n                    <pre class=\"fragment\"> rosrun davis_ros_driver davis_ros_driver\n</pre>\n                </li>\n                <li>\n                    <p class=\"startli\">On another terminal, launch the pipeline, disabling the auto-triggering. </p>\n                    <pre class=\"fragment\"> roslaunch dvs_tracking live.launch auto_trigger:=false camera_name:=[calibration filename] events_topic:=[events topic]\n</pre>\n                    <p class=\"startli\">If your calibrations filenames are <code>my_camera.yaml</code>, then use\n                        <code>camera_name:=my_camera</code>. Make sure to use the same name for both calibration files.\n                        If your sensor outputs events under the topic <code>/my_sensor/events</code>, then use\n                        <code>events_topic:=/my_sensor/events</code>.\n                    </p>\n                    <p class=\"startli\">For the SVO based bootstrapper, proceed with step 4. For the fronto-planar\n                        bootstrapper, go to step 5.</p>\n                    <p class=\"startli\">If you want to bootstrap from traditional frames, you can use the command: </p>\n                    <pre class=\"fragment\">roslaunch dvs_tracking live.launch bootstrap_image_topic:=[topic raw frames] auto_trigger:=false\n</pre>\n                    <p class=\"startli\">For instance <code>bootstrap_image_topic:=/dvs/image_raw</code>.</p>\n                    <p class=\"startli\">In this case, it makes sense to use the SVO-based bootstrapping only. This option\n                        is recommended to debug/improve/extend the rest of the EVO pipeline, without worrying about the\n                        quality of the bootstrapping.</p>\n                </li>\n                <li>You should see two rqt GUI. One is the SVO GUI. Reset and start the pipeline until it tracks\n                    decently well.</li>\n                <li>\n                    <p class=\"startli\">Press the <code>Bootstrap</code> button. This will automatically trigger the\n                        pipeline.</p>\n                    <p class=\"startli\">Alternatively, it is also possible to trigger one module at the time:</p>\n                    <ul>\n                        <li>Press the <code>Start/Reset</code> button in <code>rqt_evo</code>. Perform a circle (or\n                            more), and then press <code>Update</code>. This will trigger a map creation.</li>\n                        <li>If the map looks correct, press <code>Switch to tracking</code> to start tracking with EVO.\n                            If not, reiterate the map creation.</li>\n                        <li>As the camera moves out of the current map, the latter will be automatically updated if the\n                            <code>Map-Expansion</code> is enabled. You may disable <code>Map-Expansion</code> to track\n                            high-speed motions using the current map (single keyframe tracking).\n                        </li>\n                    </ul>\n                </li>\n                <li>If anything fails, just press <code>Ctrl+C</code> and restart the live node ;)</li>\n            </ol>\n            <p>Some remarks:</p>\n            <ul>\n                <li>The calibration files paths will be built as\n                    <code>$(find dvs_tracking)/parameters/calib/ncamera/$(arg camera_name).yaml</code> and\n                    <code>$(find dvs_tracking)/parameters/calib/$(arg camera_name).yaml</code>, where\n                    <code>camera_name</code> is specified as argument to the launch file. You can also set it as default\n                    in <code>live.launch</code>.\n                </li>\n                <li>If your sensor provides frames under a topic <code>/my_sensor/image_raw</code>, and you want to\n                    bootstrap from the traditional frames, you can use\n                    <code>bootstrap_image_topic:=/my_sensor/image_raw</code>.\n                </li>\n            </ul>\n            <p><a class=\"anchor\" id=\"todo\"></a> </p>\n            <h2>Further improvements</h2>\n            <p>In the following we outline the main problems currently known and possible remedies. You are very welcome\n                to contribute to this pipeline to make it even better!</p>\n            <table class=\"doxtable\">\n                <tr>\n                    <th align=\"left\">What can go wrong</th>\n                    <th align=\"left\">TODO </th>\n                </tr>\n                <tr>\n                    <td align=\"left\">Randomness due to OS scheduler, unreliable rosbags</td>\n                    <td align=\"left\">Implement rosbag data provider pattern, and ensure correctness of events\n                        consumption </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"></td>\n                    <td align=\"left\">Currently the pipeline uses multiple nodes. Switching to nodelets or using a single\n                        node could improve the repeatability of the rosbags. </td>\n                </tr>\n                <tr>\n                    <td align=\"left\">Robustness</td>\n                    <td align=\"left\">bootstrapping: we should catch whenever SVO does not converge and trigger an\n                        automatic restart (what a human operator would eventually do manually). </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"></td>\n                    <td align=\"left\">tracking: catch whenever the tracker diverges, and re-initialize. Currently we have\n                        to parameters to predict this situation, namely <code>min_map_size</code> and\n                        <code>min_n_keypoints</code>.\n                    </td>\n                </tr>\n                <tr>\n                    <td align=\"left\">Unreliable bootstrapping</td>\n                    <td align=\"left\">Currently we have two working ways to bootstrap the pipeline from events: from SVO\n                        (feeding it with events frames) and with a fronto-planar assumption. </td>\n                </tr>\n                <tr>\n                    <td align=\"left\"></td>\n                    <td align=\"left\">Reducing the assumptions required and making them more reliable would allow a\n                        better bootstrapping, reducing the gap to the bootstrapping from traditional frames\n                        (<code>bootstrap_image_topic:=/dvs/image_raw</code>). </td>\n                </tr>\n            </table>\n            <p><a class=\"anchor\" id=\"ref\"></a> </p>\n            <h2>Additional resources on Event Cameras</h2>\n            <ul>\n                <li><a href=\"http://rpg.ifi.uzh.ch/docs/EventVisionSurvey.pdf\">Event-based Vision Survey</a></li>\n                <li><a href=\"https://github.com/uzh-rpg/event-based_vision_resources\">List of Event-based Vision\n                        Resources</a></li>\n                <li><a href=\"http://rpg.ifi.uzh.ch/davis_data.html\">Event Camera Dataset</a></li>\n                <li><a href=\"http://rpg.ifi.uzh.ch/esim\">Event Camera Simulator</a></li>\n                <li><a href=\"http://rpg.ifi.uzh.ch/research_dvs.html\">RPG research page on Event Cameras</a></li>\n                <li><a href=\"http://rpg.ifi.uzh.ch/research_calib.html\">RPG research page on sensor calibration</a>\n                </li>\n            </ul>\n        </div>\n    </div><!-- contents -->\n    <!-- start footer part -->\n    <hr class=\"footer\" />\n    <address class=\"footer\"><small>\n            Generated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n                <img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\" />\n            </a> 1.8.13\n        </small></address>\n</body>\n\n</html>"
  },
  {
    "path": "docs/md_rqt_evo_README.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: README</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">README </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><p>run with: </p><pre class=\"fragment\">rosrun rqt_evo rqt_evo\n</pre><p>or start <code>rqt</code> and display the widget.</p>\n<p>If it does not work, try this: </p><pre class=\"fragment\">rm ~/.config/ros.org/rqt_gui.ini\nrqt</pre> </div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/md_rqt_svo_README.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: README</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">README </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><p>run with: </p><pre class=\"fragment\">rosrun rqt_svo rqt_svo\n</pre><p>or start <code>rqt</code> and display the widget.</p>\n<p>If it does not work, try this: </p><pre class=\"fragment\">rm ~/.config/ros.org/rqt_gui.ini\nrqt </pre> </div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/md_svo_vikit_README.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: VIKIT</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">VIKIT </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><p>Vikit (Vision-Kit) provides some tools for your vision/robotics project. Far from stable. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/memory_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/memory.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">memory.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef ASLAM_MEMORY_HELPERS_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define ASLAM_MEMORY_HELPERS_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;functional&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;map&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;type_traits&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;utility&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/StdVector&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceaslam.html\">aslam</a> {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span>, <span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">class </span>Container, <span class=\"keyword\">typename</span> Type&gt;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1Aligned.html\">   17</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1Aligned.html\">Aligned</a> {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">typedef</span> Container&lt;Type, Eigen::aligned_allocator&lt;Type&gt; &gt; type;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;};</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> KeyType, <span class=\"keyword\">typename</span> ValueType&gt;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1AlignedUnorderedMap.html\">   22</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1AlignedUnorderedMap.html\">AlignedUnorderedMap</a> {</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">typedef</span> std::unordered_map&lt;KeyType, ValueType,</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;      std::hash&lt;KeyType&gt;, std::equal_to&lt;KeyType&gt;,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;      Eigen::aligned_allocator&lt;std::pair&lt;const KeyType, ValueType&gt; &gt; &gt; type;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;};</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> KeyType, <span class=\"keyword\">typename</span> ValueType&gt;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1AlignedMap.html\">   29</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1AlignedMap.html\">AlignedMap</a> {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keyword\">typedef</span> std::map&lt;KeyType, ValueType,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      std::less&lt;KeyType&gt;,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;      Eigen::aligned_allocator&lt;std::pair&lt;const KeyType, ValueType&gt; &gt; &gt; type;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;};</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Type, <span class=\"keyword\">typename</span> ... Arguments&gt;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">inline</span> std::shared_ptr&lt;Type&gt; aligned_shared(Arguments&amp;&amp;... arguments) {</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> std::remove_const&lt;Type&gt;::type TypeNonConst;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordflow\">return</span> std::allocate_shared&lt;Type&gt;(Eigen::aligned_allocator&lt;TypeNonConst&gt;(),</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;                                    std::forward&lt;Arguments&gt;(arguments)...);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;}</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;} <span class=\"comment\">// namespace aslam</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">#endif  // ASLAM_MEMORY_HELPERS_H_</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"ttc\" id=\"structaslam_1_1Aligned_html\"><div class=\"ttname\"><a href=\"structaslam_1_1Aligned.html\">aslam::Aligned</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:17</div></div>\n<div class=\"ttc\" id=\"structaslam_1_1AlignedMap_html\"><div class=\"ttname\"><a href=\"structaslam_1_1AlignedMap.html\">aslam::AlignedMap</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:29</div></div>\n<div class=\"ttc\" id=\"structaslam_1_1AlignedUnorderedMap_html\"><div class=\"ttname\"><a href=\"structaslam_1_1AlignedUnorderedMap.html\">aslam::AlignedUnorderedMap</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:22</div></div>\n<div class=\"ttc\" id=\"namespaceaslam_html\"><div class=\"ttname\"><a href=\"namespaceaslam.html\">aslam</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/menu.js",
    "content": "function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {\n  function makeTree(data,relPath) {\n    var result='';\n    if ('children' in data) {\n      result+='<ul>';\n      for (var i in data.children) {\n        result+='<li><a href=\"'+relPath+data.children[i].url+'\">'+\n                                data.children[i].text+'</a>'+\n                                makeTree(data.children[i],relPath)+'</li>';\n      }\n      result+='</ul>';\n    }\n    return result;\n  }\n\n  $('#main-nav').append(makeTree(menudata,relPath));\n  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');\n  if (searchEnabled) {\n    if (serverSide) {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><div class=\"left\"><form id=\"FSearchBox\" action=\"'+searchPage+'\" method=\"get\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag.png\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"'+search+'\" size=\"20\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\"></form></div><div class=\"right\"></div></div></li>');\n    } else {\n      $('#main-menu').append('<li style=\"float:right\"><div id=\"MSearchBox\" class=\"MSearchBoxInactive\"><span class=\"left\"><img id=\"MSearchSelect\" src=\"'+relPath+'search/mag_sel.png\" onmouseover=\"return searchBox.OnSearchSelectShow()\" onmouseout=\"return searchBox.OnSearchSelectHide()\" alt=\"\"/><input type=\"text\" id=\"MSearchField\" value=\"'+search+'\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" onblur=\"searchBox.OnSearchFieldFocus(false)\" onkeyup=\"searchBox.OnSearchFieldChange(event)\"/></span><span class=\"right\"><a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\"><img id=\"MSearchCloseImg\" border=\"0\" src=\"'+relPath+'search/close.png\" alt=\"\"/></a></span></div></li>');\n    }\n  }\n  $('#main-menu').smartmenus();\n}\n"
  },
  {
    "path": "docs/menudata.js",
    "content": "var menudata={children:[\n{text:\"Main Page\",url:\"index.html\"},\n{text:\"Related Pages\",url:\"pages.html\"},\n{text:\"Namespaces\",url:\"namespaces.html\",children:[\n{text:\"Namespace List\",url:\"namespaces.html\"},\n{text:\"Namespace Members\",url:\"namespacemembers.html\",children:[\n{text:\"All\",url:\"namespacemembers.html\"},\n{text:\"Functions\",url:\"namespacemembers_func.html\"},\n{text:\"Enumerations\",url:\"namespacemembers_enum.html\"}]}]},\n{text:\"Classes\",url:\"annotated.html\",children:[\n{text:\"Class List\",url:\"annotated.html\"},\n{text:\"Class Index\",url:\"classes.html\"},\n{text:\"Class Hierarchy\",url:\"inherits.html\"},\n{text:\"Class Members\",url:\"functions.html\",children:[\n{text:\"All\",url:\"functions.html\",children:[\n{text:\"_\",url:\"functions.html#index__\"},\n{text:\"a\",url:\"functions_a.html#index_a\"},\n{text:\"b\",url:\"functions_b.html#index_b\"},\n{text:\"c\",url:\"functions_c.html#index_c\"},\n{text:\"d\",url:\"functions_d.html#index_d\"},\n{text:\"e\",url:\"functions_e.html#index_e\"},\n{text:\"f\",url:\"functions_f.html#index_f\"},\n{text:\"g\",url:\"functions_g.html#index_g\"},\n{text:\"h\",url:\"functions_h.html#index_h\"},\n{text:\"i\",url:\"functions_i.html#index_i\"},\n{text:\"j\",url:\"functions_j.html#index_j\"},\n{text:\"k\",url:\"functions_k.html#index_k\"},\n{text:\"l\",url:\"functions_l.html#index_l\"},\n{text:\"m\",url:\"functions_m.html#index_m\"},\n{text:\"n\",url:\"functions_n.html#index_n\"},\n{text:\"o\",url:\"functions_o.html#index_o\"},\n{text:\"p\",url:\"functions_p.html#index_p\"},\n{text:\"q\",url:\"functions_q.html#index_q\"},\n{text:\"r\",url:\"functions_r.html#index_r\"},\n{text:\"s\",url:\"functions_s.html#index_s\"},\n{text:\"t\",url:\"functions_t.html#index_t\"},\n{text:\"u\",url:\"functions_u.html#index_u\"},\n{text:\"v\",url:\"functions_v.html#index_v\"},\n{text:\"w\",url:\"functions_w.html#index_w\"},\n{text:\"x\",url:\"functions_x.html#index_x\"},\n{text:\"y\",url:\"functions_y.html#index_y\"},\n{text:\"~\",url:\"functions_0x7e.html#index_0x7e\"}]},\n{text:\"Functions\",url:\"functions_func.html\",children:[\n{text:\"_\",url:\"functions_func.html#index__\"},\n{text:\"a\",url:\"functions_func_a.html#index_a\"},\n{text:\"b\",url:\"functions_func_b.html#index_b\"},\n{text:\"c\",url:\"functions_func_c.html#index_c\"},\n{text:\"d\",url:\"functions_func_d.html#index_d\"},\n{text:\"e\",url:\"functions_func_e.html#index_e\"},\n{text:\"f\",url:\"functions_func_f.html#index_f\"},\n{text:\"g\",url:\"functions_func_g.html#index_g\"},\n{text:\"h\",url:\"functions_func_h.html#index_h\"},\n{text:\"i\",url:\"functions_func_i.html#index_i\"},\n{text:\"j\",url:\"functions_func_j.html#index_j\"},\n{text:\"l\",url:\"functions_func_l.html#index_l\"},\n{text:\"m\",url:\"functions_func_m.html#index_m\"},\n{text:\"n\",url:\"functions_func_n.html#index_n\"},\n{text:\"o\",url:\"functions_func_o.html#index_o\"},\n{text:\"p\",url:\"functions_func_p.html#index_p\"},\n{text:\"q\",url:\"functions_func_q.html#index_q\"},\n{text:\"r\",url:\"functions_func_r.html#index_r\"},\n{text:\"s\",url:\"functions_func_s.html#index_s\"},\n{text:\"t\",url:\"functions_func_t.html#index_t\"},\n{text:\"u\",url:\"functions_func_u.html#index_u\"},\n{text:\"v\",url:\"functions_func_v.html#index_v\"},\n{text:\"~\",url:\"functions_func_0x7e.html#index_0x7e\"}]},\n{text:\"Variables\",url:\"functions_vars.html\",children:[\n{text:\"a\",url:\"functions_vars.html#index_a\"},\n{text:\"b\",url:\"functions_vars_b.html#index_b\"},\n{text:\"c\",url:\"functions_vars_c.html#index_c\"},\n{text:\"d\",url:\"functions_vars_d.html#index_d\"},\n{text:\"e\",url:\"functions_vars_e.html#index_e\"},\n{text:\"f\",url:\"functions_vars_f.html#index_f\"},\n{text:\"g\",url:\"functions_vars_g.html#index_g\"},\n{text:\"h\",url:\"functions_vars_h.html#index_h\"},\n{text:\"i\",url:\"functions_vars_i.html#index_i\"},\n{text:\"j\",url:\"functions_vars_j.html#index_j\"},\n{text:\"k\",url:\"functions_vars_k.html#index_k\"},\n{text:\"l\",url:\"functions_vars_l.html#index_l\"},\n{text:\"m\",url:\"functions_vars_m.html#index_m\"},\n{text:\"n\",url:\"functions_vars_n.html#index_n\"},\n{text:\"o\",url:\"functions_vars_o.html#index_o\"},\n{text:\"p\",url:\"functions_vars_p.html#index_p\"},\n{text:\"q\",url:\"functions_vars_q.html#index_q\"},\n{text:\"r\",url:\"functions_vars_r.html#index_r\"},\n{text:\"s\",url:\"functions_vars_s.html#index_s\"},\n{text:\"t\",url:\"functions_vars_t.html#index_t\"},\n{text:\"u\",url:\"functions_vars_u.html#index_u\"},\n{text:\"v\",url:\"functions_vars_v.html#index_v\"},\n{text:\"w\",url:\"functions_vars_w.html#index_w\"},\n{text:\"x\",url:\"functions_vars_x.html#index_x\"},\n{text:\"y\",url:\"functions_vars_y.html#index_y\"}]},\n{text:\"Enumerations\",url:\"functions_enum.html\"},\n{text:\"Related Functions\",url:\"functions_rela.html\"}]}]},\n{text:\"Files\",url:\"files.html\",children:[\n{text:\"File List\",url:\"files.html\"}]}]}\n"
  },
  {
    "path": "docs/mini__least__squares__solver_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit/solver/mini_least_squares_solver.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\">solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">mini_least_squares_solver.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/StdVector&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>solver {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">using namespace </span><a class=\"code\" href=\"namespaceEigen.html\">Eigen</a>;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">enum class</span> Strategy {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  GaussNewton,</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  LevenbergMarquardt</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;};</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">   18</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;{</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464\">   21</a></span>&#160;  Strategy strategy = Strategy::GaussNewton;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">   28</a></span>&#160;  <span class=\"keywordtype\">double</span> mu_init = 0.01f;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561\">   31</a></span>&#160;  <span class=\"keywordtype\">double</span> nu_init = 2.0;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912\">   34</a></span>&#160;  <span class=\"keywordtype\">size_t</span> max_iter = 15;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66\">   37</a></span>&#160;  <span class=\"keywordtype\">size_t</span> max_trials = 5;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b\">   40</a></span>&#160;  <span class=\"keywordtype\">bool</span> stop_when_error_increases = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6\">   43</a></span>&#160;  <span class=\"keywordtype\">bool</span> verbose = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635\">   46</a></span>&#160;  <span class=\"keywordtype\">double</span> eps = 0.0000000001;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;};</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">   53</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;{</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keyword\">typedef</span> T State;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double, D, D&gt; HessianMatrix;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double, D, 1&gt; GradientVector;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double, D, 1&gt; UpdateVector;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a> solver_options_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a>&amp; options);</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keywordtype\">void</span> optimize(State&amp; state);</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keywordtype\">void</span> optimizeGaussNewton(State&amp; state);</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keywordtype\">void</span> optimizeLevenbergMarquardt(State&amp; state);</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">void</span> setPrior(</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keyword\">const</span> State&amp;  prior,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      <span class=\"keyword\">const</span> Matrix&lt;double, D, D&gt;&amp;  Information);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keywordtype\">void</span> reset();</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">   90</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">getError</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keywordflow\">return</span> chi2_;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  }</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">   96</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Matrix&lt;double, D, D&gt;&amp; <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">getHessian</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    <span class=\"keywordflow\">return</span> H_;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  }</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  Implementation&amp; impl()</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">static_cast&lt;</span>Implementation*<span class=\"keyword\">&gt;</span>(<span class=\"keyword\">this</span>);</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  }</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">  112</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">evaluateError</a>(</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;      <span class=\"keyword\">const</span> State&amp; state,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      GradientVector* g)</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  {</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    <span class=\"keywordflow\">return</span> impl().evaluateError(state, H, g);</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  }</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">  121</a></span>&#160;  <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> HessianMatrix&amp; H,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> GradientVector&amp; g,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      UpdateVector&amp; dx)</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  {</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    <span class=\"keywordflow\">if</span>(&amp;<a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">MiniLeastSquaresSolver::solve</a> != &amp;Implementation::solve)</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      <span class=\"keywordflow\">return</span> impl().solve(H, g, dx);</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keywordflow\">return</span> solveDefaultImpl(H, g, dx);</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  }</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">  133</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">update</a>(</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      <span class=\"keyword\">const</span> State&amp; state,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;      State&amp; new_state)</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  {</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    impl().update(state, dx, new_state);</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;  }</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordtype\">void</span> applyPrior(<span class=\"keyword\">const</span> State&amp; current_model)</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  {</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keywordflow\">if</span>(&amp;MiniLeastSquaresSolver::applyPrior != &amp;Implementation::applyPrior)</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      impl().applyPrior(current_model);</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;  }</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;  <span class=\"keywordtype\">void</span> startIteration()</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;  {</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keywordflow\">if</span>(&amp;MiniLeastSquaresSolver::startIteration != &amp;Implementation::startIteration)</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      impl().startIteration();</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;  }</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;  <span class=\"keywordtype\">void</span> finishIteration()</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;  {</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    <span class=\"keywordflow\">if</span>(&amp;MiniLeastSquaresSolver::finishIteration != &amp;Implementation::finishIteration)</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;      impl().finishIteration();</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  }</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  <span class=\"keywordtype\">void</span> finishTrial()</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;  {</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;    <span class=\"keywordflow\">if</span>(&amp;MiniLeastSquaresSolver::finishTrial != &amp;Implementation::finishTrial)</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;      impl().finishTrial();</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;  }</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;  <span class=\"keywordtype\">bool</span> solveDefaultImpl(</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;      <span class=\"keyword\">const</span> HessianMatrix&amp; H,</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;      <span class=\"keyword\">const</span> GradientVector&amp; g,</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;      UpdateVector&amp; dx);</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">  174</a></span>&#160;  HessianMatrix  <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">H_</a>;        </div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">  175</a></span>&#160;  GradientVector <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">g_</a>;        </div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">  176</a></span>&#160;  UpdateVector   <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">dx_</a>;       </div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;  <span class=\"keywordtype\">bool</span> have_prior_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;  State prior_;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">  179</a></span>&#160;  Matrix&lt;double, D, D&gt; <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">I_prior_</a>; </div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3\">  180</a></span>&#160;  <span class=\"keywordtype\">double</span> chi2_ = 0.0;       </div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2\">  181</a></span>&#160;  <span class=\"keywordtype\">double</span> rho_ = 0.0;        </div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e\">  182</a></span>&#160;  <span class=\"keywordtype\">double</span> mu_ = 0.01;        </div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39\">  183</a></span>&#160;  <span class=\"keywordtype\">double</span> nu_ = 2.0;         </div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc\">  184</a></span>&#160;  <span class=\"keywordtype\">size_t</span> n_meas_ = 0;       </div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2\">  185</a></span>&#160;  <span class=\"keywordtype\">bool</span> stop_ = <span class=\"keyword\">false</span>;       </div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">  186</a></span>&#160;  <span class=\"keywordtype\">size_t</span> iter_ = 0;         </div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b\">  187</a></span>&#160;  <span class=\"keywordtype\">size_t</span> trials_ = 0;       </div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;};</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;} <span class=\"comment\">// namespace solver</span></div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;<span class=\"preprocessor\">#include &quot;implementation/mini_least_squares_solver.hpp&quot;</span></div><div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_ad50865303e978ba18160bd2afa46e3cb\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb\">vk::solver::MiniLeastSquaresSolver::getHessian</a></div><div class=\"ttdeci\">const Matrix&lt; double, D, D &gt; &amp; getHessian() const</div><div class=\"ttdoc\">The the Hessian matrix (Information Matrix). </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:96</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"namespaceEigen_html\"><div class=\"ttname\"><a href=\"namespaceEigen.html\">Eigen</a></div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a7dcfeb71948d1620404981525e494e32\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32\">vk::solver::MiniLeastSquaresSolver::dx_</a></div><div class=\"ttdeci\">UpdateVector dx_</div><div class=\"ttdoc\">Update step. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:176</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a10c12d49477a7f5253e9b6f492caf438\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">vk::solver::MiniLeastSquaresSolver::solve</a></div><div class=\"ttdeci\">bool solve(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</div><div class=\"ttdoc\">Solve the linear system H*dx = g to obtain optimal perturbation dx. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:121</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a3b69a83876010cb3f9a37f886aa519bf\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf\">vk::solver::MiniLeastSquaresSolver::H_</a></div><div class=\"ttdeci\">HessianMatrix H_</div><div class=\"ttdoc\">Hessian or approximation Jacobian*Jacobian^T. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:174</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_af986b394da42f7d6087c6d985297a01d\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d\">vk::solver::MiniLeastSquaresSolver::getError</a></div><div class=\"ttdeci\">double getError() const</div><div class=\"ttdoc\">Get the squared error. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:90</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a904b6520e51dd46c43b95fbbedbeafea\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea\">vk::solver::MiniLeastSquaresSolver::g_</a></div><div class=\"ttdeci\">GradientVector g_</div><div class=\"ttdoc\">Jacobian*residual. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:175</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a0c5c9560e3169719421d10f0062bef92\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92\">vk::solver::MiniLeastSquaresSolver::I_prior_</a></div><div class=\"ttdeci\">Matrix&lt; double, D, D &gt; I_prior_</div><div class=\"ttdoc\">Prior information matrix (inverse covariance) </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:179</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a4eb26c1b59bb797ef04f3eb3849edf86\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86\">vk::solver::MiniLeastSquaresSolver::evaluateError</a></div><div class=\"ttdeci\">double evaluateError(const State &amp;state, HessianMatrix *H, GradientVector *g)</div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:112</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a856e362b745dac5b193302bd906b619f\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f\">vk::solver::MiniLeastSquaresSolver::update</a></div><div class=\"ttdeci\">void update(const State &amp;state, const UpdateVector &amp;dx, State &amp;new_state)</div><div class=\"ttdoc\">Apply the perturbation dx to the state. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:133</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/mini__least__squares__solver_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit/solver/implementation/mini_least_squares_solver.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\">solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_94cf7cecc057ddaeac3dd116c524767b.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">mini_least_squares_solver.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/solver/mini_least_squares_solver.h&quot;</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;stdexcept&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>solver {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>utils {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> norm_max(<span class=\"keyword\">const</span> Eigen::VectorXd &amp; v)</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  <span class=\"keywordtype\">double</span> max = -1;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i=0; i&lt;v.size(); i++)</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;    <span class=\"keywordtype\">double</span> abs = std::fabs(v[i]);</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;    <span class=\"keywordflow\">if</span>(abs&gt;max){</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;      max = abs;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    }</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  }</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keywordflow\">return</span> max;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;}</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;} <span class=\"comment\">// namespace utils</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::MiniLeastSquaresSolver(</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keyword\">const</span> MiniLeastSquaresSolverOptions&amp; options)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  : solver_options_(options)</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;{}</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4\">   32</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::optimize</a>(State&amp; state)</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordflow\">if</span>(solver_options_.strategy == Strategy::GaussNewton)</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    optimizeGaussNewton(state);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span>(solver_options_.strategy == Strategy::LevenbergMarquardt)</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    optimizeLevenbergMarquardt(state);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;}</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea\">   42</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::optimizeGaussNewton</a>(State&amp; state)</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;{</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"comment\">// Save the old model to rollback in case of unsuccessful update</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  State old_state = state;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"comment\">// perform iterative estimation</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordflow\">for</span> (iter_ = 0; iter_&lt;solver_options_.max_iter; ++iter_)</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  {</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    rho_ = 0;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    startIteration();</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    H_.setZero();</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    g_.setZero();</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"comment\">// compute initial error</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    n_meas_ = 0;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <span class=\"keywordtype\">double</span> new_chi2 = evaluateError(state, &amp;H_, &amp;g_);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"comment\">// add prior</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keywordflow\">if</span>(have_prior_)</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    {</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;      applyPrior(state);</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    }</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    <span class=\"comment\">// solve the linear system</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keywordflow\">if</span>(!solve(H_, g_, dx_))</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      LOG(WARNING) &lt;&lt; <span class=\"stringliteral\">&quot;Matrix is close to singular! Stop Optimizing.&quot;</span></div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;                   &lt;&lt; <span class=\"stringliteral\">&quot;H = &quot;</span> &lt;&lt; H_ &lt;&lt; <span class=\"stringliteral\">&quot;g = &quot;</span> &lt;&lt; g_;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      stop_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    }</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"comment\">// check if error increased since last optimization</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keywordflow\">if</span>((iter_ &gt; 0 &amp;&amp; new_chi2 &gt; chi2_ &amp;&amp; solver_options_.stop_when_error_increases) || stop_)</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    {</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;      VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;It. &quot;</span> &lt;&lt; iter_</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;                &lt;&lt; <span class=\"stringliteral\">&quot;\\t Failure&quot;</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;                &lt;&lt; <span class=\"stringliteral\">&quot;\\t new_chi2 = &quot;</span> &lt;&lt; new_chi2</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;                &lt;&lt; <span class=\"stringliteral\">&quot;\\t n_meas = &quot;</span> &lt;&lt; n_meas_</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;                &lt;&lt; <span class=\"stringliteral\">&quot;\\t Error increased. Stop optimizing.&quot;</span>;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      state = old_state; <span class=\"comment\">// rollback</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    }</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    <span class=\"comment\">// update the model</span></div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    State new_state;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    update(state, dx_, new_state);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    old_state = state;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    state = new_state;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    chi2_ = new_chi2;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keywordtype\">double</span> x_norm = utils::norm_max(dx_);</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;It. &quot;</span> &lt;&lt; iter_</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;\\t Success&quot;</span></div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;\\t new_chi2 = &quot;</span> &lt;&lt; new_chi2</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;\\t n_meas = &quot;</span> &lt;&lt; n_meas_</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;              &lt;&lt; <span class=\"stringliteral\">&quot;\\t x_norm = &quot;</span> &lt;&lt; x_norm;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    finishIteration();</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"comment\">// stop when converged, i.e. update step too small</span></div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keywordflow\">if</span>(x_norm &lt; solver_options_.eps)</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    {</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;      VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;Converged, x_norm &quot;</span> &lt;&lt; x_norm &lt;&lt; <span class=\"stringliteral\">&quot; &lt; &quot;</span> &lt;&lt; solver_options_.eps;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    }</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  }</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;}</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712\">  110</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::optimizeLevenbergMarquardt</a>(State&amp; state)</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;{</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"comment\">// init parameters</span></div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  mu_ = solver_options_.mu_init;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  nu_ = solver_options_.nu_init;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  <span class=\"comment\">// compute the initial error</span></div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  chi2_ = evaluateError(state, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;init chi2 = &quot;</span> &lt;&lt; chi2_</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;          &lt;&lt; <span class=\"stringliteral\">&quot;\\t n_meas = &quot;</span> &lt;&lt; n_meas_;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"comment\">// TODO: compute initial lambda</span></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"comment\">// Hartley and Zisserman: &quot;A typical init value of lambda is 10^-3 times the</span></div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  <span class=\"comment\">// average of the diagonal elements of J&#39;J&quot;</span></div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  <span class=\"comment\">// Compute Initial Lambda</span></div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keywordflow\">if</span>(mu_ &lt; 0)</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  {</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;    <span class=\"keywordtype\">double</span> H_max_diag = 0;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    <span class=\"keywordtype\">double</span> tau = 1e-4;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">size_t</span> j=0; j&lt;D; ++j)</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;    {</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      H_max_diag = std::max(H_max_diag, std::fabs(H_(j,j)));</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;    }</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    mu_ = tau*H_max_diag;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  }</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;  <span class=\"comment\">// perform iterative estimation</span></div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordflow\">for</span> (iter_ = 0; iter_&lt;solver_options_.max_iter; ++iter_)</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;  {</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    rho_ = 0;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    startIteration();</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    <span class=\"comment\">// try to compute and update, if it fails, try with increased mu</span></div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    trials_ = 0;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keywordflow\">do</span></div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    {</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      <span class=\"comment\">// init variables</span></div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      State new_model;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;      <span class=\"keywordtype\">double</span> new_chi2 = -1;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;      H_.setZero();</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      <span class=\"comment\">//H_ = mu_ * Matrix&lt;double,D,D&gt;::Identity(D,D);</span></div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;      g_.setZero();</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;      <span class=\"comment\">// linearize</span></div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;      n_meas_ = 0;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;      evaluateError(state, &amp;H_, &amp;g_);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;      <span class=\"comment\">// add damping term:</span></div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;      H_ += (H_.diagonal()*mu_).asDiagonal();</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;      <span class=\"comment\">// add prior</span></div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;      <span class=\"keywordflow\">if</span>(have_prior_)</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;      {</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;        applyPrior(state);</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;      }</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;      <span class=\"comment\">// solve the linear system to obtain small perturbation in direction of gradient</span></div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;      <span class=\"keywordflow\">if</span>(solve(H_, g_, dx_))</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;      {</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;        <span class=\"comment\">// apply perturbation to the state</span></div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;        update(state, dx_, new_model);</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;        <span class=\"comment\">// compute error with new model and compare to old error</span></div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;        n_meas_ = 0;</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;        new_chi2 = evaluateError(new_model, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;        rho_ = chi2_-new_chi2;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;      }</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;      <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;      {</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;        LOG(WARNING) &lt;&lt; <span class=\"stringliteral\">&quot;Matrix is close to singular! Stop Optimizing.&quot;</span></div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;                     &lt;&lt; <span class=\"stringliteral\">&quot;H = &quot;</span> &lt;&lt; H_ &lt;&lt; <span class=\"stringliteral\">&quot;g = &quot;</span> &lt;&lt; g_;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;        rho_ = -1;</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;      }</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;      <span class=\"keywordflow\">if</span>(rho_&gt;0)</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;      {</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;        <span class=\"comment\">// update decrased the error -&gt; success</span></div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;        state = new_model;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;        chi2_ = new_chi2;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;        stop_ = utils::norm_max(dx_) &lt; solver_options_.eps;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;        mu_ *= std::max(1./3., std::min(1.-std::pow(2*rho_-1,3), 2./3.));</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;        nu_ = 2.;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;        VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;It. &quot;</span> &lt;&lt; iter_</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t Trial &quot;</span> &lt;&lt; trials_</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t Success&quot;</span></div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t n_meas = &quot;</span> &lt;&lt; n_meas_</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t new_chi2 = &quot;</span> &lt;&lt; new_chi2</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t mu = &quot;</span> &lt;&lt; mu_</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t nu = &quot;</span> &lt;&lt; nu_;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;      }</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;      <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;      {</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;        <span class=\"comment\">// update increased the error -&gt; fail</span></div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;        mu_ *= nu_;</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;        nu_ *= 2.;</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;        ++trials_;</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;        <span class=\"keywordflow\">if</span> (trials_ &gt;= solver_options_.max_trials)</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;          stop_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;        VLOG(400) &lt;&lt; <span class=\"stringliteral\">&quot;It. &quot;</span> &lt;&lt; iter_</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t Trial &quot;</span> &lt;&lt; trials_</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t Failure&quot;</span></div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t n_meas = &quot;</span> &lt;&lt; n_meas_</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t new_chi2 = &quot;</span> &lt;&lt; new_chi2</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t mu = &quot;</span> &lt;&lt; mu_</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;                  &lt;&lt; <span class=\"stringliteral\">&quot;\\t nu = &quot;</span> &lt;&lt; nu_;</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;      }</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;      finishTrial();</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;    } <span class=\"keywordflow\">while</span>(!(rho_&gt;0 || stop_));</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;    <span class=\"keywordflow\">if</span> (stop_)</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;    {</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;      <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;    }</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;    finishIteration();</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;  }</div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;}</div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;</div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3\">  230</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::setPrior</a>(</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;    <span class=\"keyword\">const</span> T&amp;  prior,</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;    <span class=\"keyword\">const</span> Matrix&lt;double, D, D&gt;&amp;  Information)</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;{</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;  have_prior_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;  prior_ = prior;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;  I_prior_ = Information;</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;}</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913\">  240</a></span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::reset</a>()</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;{</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;  have_prior_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;  chi2_ = 1e10;</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;  mu_ = solver_options_.mu_init;</div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;  nu_ = solver_options_.nu_init;</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;  n_meas_ = 0;</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;  iter_ = 0;</div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;  trials_ = 0;</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;  stop_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;}</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">int</span> D, <span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span> Implementation&gt;</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460\">  253</a></span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">MiniLeastSquaresSolver&lt;D, T, Implementation&gt;::solveDefaultImpl</a>(</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;    <span class=\"keyword\">const</span> HessianMatrix&amp; H,</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;    <span class=\"keyword\">const</span> GradientVector&amp; g,</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;    UpdateVector&amp; dx)</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;{</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;  dx = H.ldlt().<a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">solve</a>(g);</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;  <span class=\"keywordflow\">if</span>((<span class=\"keywordtype\">bool</span>) std::isnan((<span class=\"keywordtype\">double</span>) dx[0]))</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;}</div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;</div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;} <span class=\"comment\">// namespace solver</span></div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a10c12d49477a7f5253e9b6f492caf438\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438\">vk::solver::MiniLeastSquaresSolver::solve</a></div><div class=\"ttdeci\">bool solve(const HessianMatrix &amp;H, const GradientVector &amp;g, UpdateVector &amp;dx)</div><div class=\"ttdoc\">Solve the linear system H*dx = g to obtain optimal perturbation dx. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:121</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/mosaic_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_reconstruction/include/dvs_reconstruction/mosaic.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_ab54f8f0af1c0da3c45427edfd19be8d.html\">dvs_reconstruction</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_1031d3994392a9f3ed0ed15ef4f28b8b.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2132e6eb658a67cbcea5d6a82f185c34.html\">dvs_reconstruction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">mosaic.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef GRADIENT_ESTIMATION_H</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define GRADIENT_ESTIMATION_H</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_msgs/Event.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_cloud.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_types.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tf.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_listener.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/opencv.hpp&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">// #define MOSAIC_PERF ///&lt; uncomment to measure performance</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html\">   21</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classMosaic.html\">Mosaic</a> {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    <span class=\"keyword\">typedef</span> cv::Vec2f Velocity;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    <span class=\"keyword\">typedef</span> cv::Vec2f Gradient;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keyword\">typedef</span> cv::Matx&lt;float, 2, 2&gt; Covariance;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keyword\">typedef</span> cv::Matx&lt;float, 1, 1&gt; Scalar;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">double</span> Time;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <a class=\"code\" href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> sigma_m, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> init_cov, <span class=\"keywordtype\">int</span> window_size,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;           <span class=\"keywordtype\">int</span> map_blur, tf::TransformListener &amp;tf, ros::NodeHandle &amp;nh,</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;           ros::NodeHandle &amp;nhp);</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">setCamModel</a>(image_geometry::PinholeCameraModel &amp;c);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">compute</a>(<span class=\"keyword\">const</span> std::vector&lt;dvs_msgs::Event&gt; &amp;evs,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;                 <span class=\"keyword\">const</span> pcl::PointCloud&lt;pcl::PointXYZ&gt;::ConstPtr &amp;map);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    cv::Mat <a class=\"code\" href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">getAbsoluteGradient</a>();</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    cv::Mat <a class=\"code\" href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">getReconstructedImage</a>();</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">reprojectDepthmap</a>(<span class=\"keyword\">const</span> tf::Transform &amp;T, cv::Mat &amp;_depthmap,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;                           <span class=\"keywordtype\">bool</span> virtual_cam = <span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">  105</a></span>&#160;    cv::Mat_&lt;Gradient&gt; <a class=\"code\" href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">grad</a>;   </div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">  106</a></span>&#160;    cv::Mat_&lt;Covariance&gt; <a class=\"code\" href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">cov</a>;  </div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    cv::Mat <a class=\"code\" href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">depthmap</a>;          </div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">  109</a></span>&#160;    cv::Mat <a class=\"code\" href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">image</a>;             </div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;   <span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"comment\">/* ROS */</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    ros::NodeHandle &amp;nh_, &amp;nhp_;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    tf::TransformListener &amp;tf_;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    image_transport::ImageTransport it_;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    Scalar R_;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">  117</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">init_cov_</a>;      </div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">  118</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">window_size_</a>;  </div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">  119</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">map_blur_</a>;     </div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">  120</a></span>&#160;    <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">depth_median_</a>;  </div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">  122</a></span>&#160;    image_transport::Publisher <a class=\"code\" href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">pub_img_</a>;    </div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">  123</a></span>&#160;    image_transport::Publisher <a class=\"code\" href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">pub_depth_</a>;  </div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">  125</a></span>&#160;    ros::Time <a class=\"code\" href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">ts_ref_</a>;  </div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">  128</a></span>&#160;    std::string <a class=\"code\" href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">frame_id_</a>;  </div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">  129</a></span>&#160;    std::string <a class=\"code\" href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">world_frame_id_</a>;  </div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    std::vector&lt;cv::Point2d&gt;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">  132</a></span>&#160;        <a class=\"code\" href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">rectification_map_</a>;  </div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">  134</a></span>&#160;    image_geometry::PinholeCameraModel <a class=\"code\" href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">c_</a>;  </div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">  135</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">w_</a>;                              </div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">  136</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">h_</a>;                              </div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">  137</a></span>&#160;    tf::Matrix3x3 <a class=\"code\" href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">K_</a>;                       </div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">  138</a></span>&#160;    tf::Matrix3x3 <a class=\"code\" href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">KInv_</a>;                    </div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    <span class=\"comment\">/* virtual camera -&gt; super resolution s, param: &quot;super_resolution_factor */</span></div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">  141</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">w_virt_</a>;            </div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">  142</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">h_virt_</a>;            </div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">  143</a></span>&#160;    tf::Matrix3x3 <a class=\"code\" href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">K_virt_</a>;     </div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">  144</a></span>&#160;    tf::Matrix3x3 <a class=\"code\" href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">KInv_virt_</a>;  </div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">  146</a></span>&#160;    std::vector&lt;tf::Vector3&gt; <a class=\"code\" href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">map_</a>;  </div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">update</a>(<span class=\"keyword\">const</span> cv::Mat &amp;new_grad, <span class=\"keyword\">const</span> ros::Time &amp;t0,</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;                <span class=\"keyword\">const</span> ros::Time &amp;t1);</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">precomputeRectificationMap</a>();</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">publishImageReconstruction</a>();</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">publishDepthmap</a>(<span class=\"keyword\">const</span> cv::Mat &amp;depth);</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;};</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;<span class=\"preprocessor\">#endif  // GRADIENT_ESTIMATION_H</span></div><div class=\"ttc\" id=\"classMosaic_html_a8a95091b2b681537c0953833908da6de\"><div class=\"ttname\"><a href=\"classMosaic.html#a8a95091b2b681537c0953833908da6de\">Mosaic::window_size_</a></div><div class=\"ttdeci\">size_t window_size_</div><div class=\"ttdoc\">window of events between EKF updates </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:118</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a826ebc128647464ed1c24650e08f4761\"><div class=\"ttname\"><a href=\"classMosaic.html#a826ebc128647464ed1c24650e08f4761\">Mosaic::c_</a></div><div class=\"ttdeci\">image_geometry::PinholeCameraModel c_</div><div class=\"ttdoc\">camera model </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:134</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_afedc6f48c1efb28dda255b25c22d2742\"><div class=\"ttname\"><a href=\"classMosaic.html#afedc6f48c1efb28dda255b25c22d2742\">Mosaic::map_blur_</a></div><div class=\"ttdeci\">size_t map_blur_</div><div class=\"ttdoc\">gaussian blur kernel size </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:119</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a372b4117e8e80a22de2a8f3100dfe002\"><div class=\"ttname\"><a href=\"classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002\">Mosaic::world_frame_id_</a></div><div class=\"ttdeci\">std::string world_frame_id_</div><div class=\"ttdoc\">The root of the tf system. </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:129</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a93390709e5b74021d5a4edd36d3d6efd\"><div class=\"ttname\"><a href=\"classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd\">Mosaic::rectification_map_</a></div><div class=\"ttdeci\">std::vector&lt; cv::Point2d &gt; rectification_map_</div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:132</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a9e4ad268d0e54b8c4db76a7ffffdd235\"><div class=\"ttname\"><a href=\"classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235\">Mosaic::w_virt_</a></div><div class=\"ttdeci\">size_t w_virt_</div><div class=\"ttdoc\">virtual camera width = s * w_ </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:141</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a10fe521b7d59fef41086247db9a3c53d\"><div class=\"ttname\"><a href=\"classMosaic.html#a10fe521b7d59fef41086247db9a3c53d\">Mosaic::K_virt_</a></div><div class=\"ttdeci\">tf::Matrix3x3 K_virt_</div><div class=\"ttdoc\">intrinsic camera matrix of virtual camera </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:143</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_aba58a0d6482ecf38a45ca83815569443\"><div class=\"ttname\"><a href=\"classMosaic.html#aba58a0d6482ecf38a45ca83815569443\">Mosaic::map_</a></div><div class=\"ttdeci\">std::vector&lt; tf::Vector3 &gt; map_</div><div class=\"ttdoc\">3D Point Cloud for Depthmap </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:146</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ae16bd5cd096b8dd38cda50eeaae96c46\"><div class=\"ttname\"><a href=\"classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46\">Mosaic::update</a></div><div class=\"ttdeci\">void update(const cv::Mat &amp;new_grad, const ros::Time &amp;t0, const ros::Time &amp;t1)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:280</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ac1c6102c7e4614eef736dfbb8953a918\"><div class=\"ttname\"><a href=\"classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918\">Mosaic::KInv_virt_</a></div><div class=\"ttdeci\">tf::Matrix3x3 KInv_virt_</div><div class=\"ttdoc\">inverse of K_virt_ </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:144</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ade1f356723fa9f8f0427b7ce5829350f\"><div class=\"ttname\"><a href=\"classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f\">Mosaic::Mosaic</a></div><div class=\"ttdeci\">Mosaic(const float sigma_m, const float init_cov, int window_size, int map_blur, tf::TransformListener &amp;tf, ros::NodeHandle &amp;nh, ros::NodeHandle &amp;nhp)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:17</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_aa554763fc8027f7aaa388120001d5e09\"><div class=\"ttname\"><a href=\"classMosaic.html#aa554763fc8027f7aaa388120001d5e09\">Mosaic::getReconstructedImage</a></div><div class=\"ttdeci\">cv::Mat getReconstructedImage()</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:237</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a962d6b0d6ad32b9a425f0e86f6e2a5fb\"><div class=\"ttname\"><a href=\"classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb\">Mosaic::pub_img_</a></div><div class=\"ttdeci\">image_transport::Publisher pub_img_</div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:122</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a0a5422c2b2ec65a9d18809bb03cd071b\"><div class=\"ttname\"><a href=\"classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b\">Mosaic::setCamModel</a></div><div class=\"ttdeci\">void setCamModel(image_geometry::PinholeCameraModel &amp;c)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:33</div></div>\n<div class=\"ttc\" id=\"classMosaic_html\"><div class=\"ttname\"><a href=\"classMosaic.html\">Mosaic</a></div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:21</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a65b2ef6acb4ed91d4a09c4dacf316e7a\"><div class=\"ttname\"><a href=\"classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a\">Mosaic::depthmap</a></div><div class=\"ttdeci\">cv::Mat depthmap</div><div class=\"ttdoc\">Dense Depthmap projected in Map Frame. </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:108</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a003358a147ccb575966016de5cde0bf3\"><div class=\"ttname\"><a href=\"classMosaic.html#a003358a147ccb575966016de5cde0bf3\">Mosaic::w_</a></div><div class=\"ttdeci\">size_t w_</div><div class=\"ttdoc\">image width </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:135</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_abf3db73be0330023eb59bb65a012538b\"><div class=\"ttname\"><a href=\"classMosaic.html#abf3db73be0330023eb59bb65a012538b\">Mosaic::grad</a></div><div class=\"ttdeci\">cv::Mat_&lt; Gradient &gt; grad</div><div class=\"ttdoc\">gradient map (2 channels of float) </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:105</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a20353ba89de5fae20b608b04ca01b49f\"><div class=\"ttname\"><a href=\"classMosaic.html#a20353ba89de5fae20b608b04ca01b49f\">Mosaic::ts_ref_</a></div><div class=\"ttdeci\">ros::Time ts_ref_</div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:125</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a9de6c4db4cff9714a205f2d5d3f580f7\"><div class=\"ttname\"><a href=\"classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7\">Mosaic::KInv_</a></div><div class=\"ttdeci\">tf::Matrix3x3 KInv_</div><div class=\"ttdoc\">inverse of K_ </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:138</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ad157f94d001d23cdcfbcf220abe6255c\"><div class=\"ttname\"><a href=\"classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c\">Mosaic::h_</a></div><div class=\"ttdeci\">size_t h_</div><div class=\"ttdoc\">image height </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:136</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_aaa65f5a9c89892cc31196b6f0271c8e4\"><div class=\"ttname\"><a href=\"classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4\">Mosaic::image</a></div><div class=\"ttdeci\">cv::Mat image</div><div class=\"ttdoc\">Reconstructed Image. </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:109</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a1c0a4a5d28cefce72d2d525022235170\"><div class=\"ttname\"><a href=\"classMosaic.html#a1c0a4a5d28cefce72d2d525022235170\">Mosaic::init_cov_</a></div><div class=\"ttdeci\">float init_cov_</div><div class=\"ttdoc\">initial guess for the covariance of the EKF </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:117</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a39d705ffa05effc9b4692c181aa115cb\"><div class=\"ttname\"><a href=\"classMosaic.html#a39d705ffa05effc9b4692c181aa115cb\">Mosaic::cov</a></div><div class=\"ttdeci\">cv::Mat_&lt; Covariance &gt; cov</div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:106</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ad97f67d85ef30287348e1cf78a0a125e\"><div class=\"ttname\"><a href=\"classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e\">Mosaic::publishDepthmap</a></div><div class=\"ttdeci\">void publishDepthmap(const cv::Mat &amp;depth)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:149</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_abc2b9dbc7f6f51df7c69a9a2fc22363e\"><div class=\"ttname\"><a href=\"classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e\">Mosaic::depth_median_</a></div><div class=\"ttdeci\">float depth_median_</div><div class=\"ttdoc\">median scene depth </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:120</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a217dcd4a95e50bafe98ded8ba553e481\"><div class=\"ttname\"><a href=\"classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481\">Mosaic::pub_depth_</a></div><div class=\"ttdeci\">image_transport::Publisher pub_depth_</div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:123</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ad8fa166741a0b96227d348072cae2ea4\"><div class=\"ttname\"><a href=\"classMosaic.html#ad8fa166741a0b96227d348072cae2ea4\">Mosaic::compute</a></div><div class=\"ttdeci\">void compute(const std::vector&lt; dvs_msgs::Event &gt; &amp;evs, const pcl::PointCloud&lt; pcl::PointXYZ &gt;::ConstPtr &amp;map)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:50</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a4b51f56ef447d56e030832edae88c4b1\"><div class=\"ttname\"><a href=\"classMosaic.html#a4b51f56ef447d56e030832edae88c4b1\">Mosaic::precomputeRectificationMap</a></div><div class=\"ttdeci\">void precomputeRectificationMap()</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:267</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a6766ab54811dbf49a92706f458d8f8f5\"><div class=\"ttname\"><a href=\"classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5\">Mosaic::frame_id_</a></div><div class=\"ttdeci\">std::string frame_id_</div><div class=\"ttdoc\">camera transformation frame id, &quot;dvs_frame_id&quot; </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:128</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a178afd3f88bdf4531c6f5bce3a9c2c8b\"><div class=\"ttname\"><a href=\"classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b\">Mosaic::K_</a></div><div class=\"ttdeci\">tf::Matrix3x3 K_</div><div class=\"ttdoc\">intrinsic camera matrix </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:137</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a0b0a0ca054904c835a8e73657e9f3772\"><div class=\"ttname\"><a href=\"classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772\">Mosaic::getAbsoluteGradient</a></div><div class=\"ttdeci\">cv::Mat getAbsoluteGradient()</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:225</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_a3af6d4164d8a1f965321a6cdfbc39dd7\"><div class=\"ttname\"><a href=\"classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7\">Mosaic::publishImageReconstruction</a></div><div class=\"ttdeci\">void publishImageReconstruction()</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:132</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_ab1a8d5f03e8f6651a8854f7d34f9927b\"><div class=\"ttname\"><a href=\"classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b\">Mosaic::h_virt_</a></div><div class=\"ttdeci\">size_t h_virt_</div><div class=\"ttdoc\">virtual camera height = s * h_ </div><div class=\"ttdef\"><b>Definition:</b> mosaic.hpp:142</div></div>\n<div class=\"ttc\" id=\"classMosaic_html_accda2a740d174b0d2188c9577c8fd2a7\"><div class=\"ttname\"><a href=\"classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7\">Mosaic::reprojectDepthmap</a></div><div class=\"ttdeci\">void reprojectDepthmap(const tf::Transform &amp;T, cv::Mat &amp;_depthmap, bool virtual_cam=false)</div><div class=\"ttdef\"><b>Definition:</b> mosaic.cpp:165</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/motion__correction_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_bootstrapping/include/motion_correction.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_516a7f4e30cbe24e1a7beeb3c3044b88.html\">dvs_bootstrapping</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_77d0aaa9b1a808cb652b0b7308189d7e.html\">include</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">motion_correction.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#ifndef MOTION_CORRECTION_HPP</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#define MOTION_CORRECTION_HPP</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_msgs/Event.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;ros/time.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Dense&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/highgui.hpp&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/video/tracking.hpp&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacemotion__correction.html\">motion_correction</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">using</span> EventArray = std::vector&lt;dvs_msgs::Event&gt;;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> int_floor(<span class=\"keywordtype\">float</span> x) {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keywordtype\">int</span> i = (int)x;     <span class=\"comment\">/* truncate */</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keywordflow\">return</span> i - (i &gt; x); <span class=\"comment\">/* convert trunc to floor */</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;}</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> resetMat(cv::Mat&amp; <a class=\"code\" href=\"namespacearr.html\">arr</a>, <span class=\"keyword\">const</span> cv::Size&amp; size,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;                            <span class=\"keywordtype\">int</span> type = CV_32F) {</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keywordflow\">if</span> (arr.cols == 0 || arr.rows == 0) {</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;        arr = cv::Mat::zeros(size, type);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;        arr.setTo(0);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    }</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;}</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">   52</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a> {</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">   54</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">warp_mode</a>;              </div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">   55</a></span>&#160;    <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">num_pyramid_levels</a>;     </div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">   56</a></span>&#160;    cv::Size <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a>;       </div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">   57</a></span>&#160;    cv::TermCriteria <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">criteria</a>;  </div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a>() {}</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a>(<span class=\"keywordtype\">int</span> nIt, <span class=\"keywordtype\">double</span> eps, <span class=\"keywordtype\">int</span> mode, <span class=\"keywordtype\">int</span> lvls,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;                     cv::Size sensor_size)</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;        : <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">warp_mode</a>(mode),</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;          <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">num_pyramid_levels</a>(lvls),</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;          <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">criteria</a>(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, nIt, eps),</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;          <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a>(sensor_size) {}</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;};</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keywordtype\">void</span> initWarp(cv::Mat&amp; warp, <span class=\"keyword\">const</span> <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a>&amp; params);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;<span class=\"keywordtype\">void</span> updateWarp(cv::Mat&amp; warp, <span class=\"keyword\">const</span> cv::Mat&amp; img0, <span class=\"keyword\">const</span> cv::Mat&amp; img1,</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;                <span class=\"keyword\">const</span> <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html\">WarpUpdateParams</a>&amp; params);</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;cv::Mat computeFlowFromWarp(<span class=\"keyword\">const</span> cv::Mat&amp; warp, <span class=\"keywordtype\">double</span> dt,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;                            cv::Size <a class=\"code\" href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">sensor_size</a>,</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;                            std::vector&lt;cv::Point2f&gt; rectified_points);</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;<span class=\"keywordtype\">void</span> drawEventsUndistorted(EventArray::iterator ev_first,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;                           EventArray::iterator ev_last, cv::Mat&amp; out,</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;                           cv::Size sensor_size,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;                           <span class=\"keyword\">const</span> std::vector&lt;cv::Point2f&gt;&amp; rectified_points,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;                           <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> use_polarity);</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;<span class=\"keywordtype\">void</span> drawEventsMotionCorrectedOpticalFlow(</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    EventArray::iterator ev_first, EventArray::iterator ev_last,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; flow_field, cv::Mat&amp; out, cv::Size sensor_size,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;cv::Point2f&gt;&amp; rectified_points, <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> use_polarity);</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;}  <span class=\"comment\">// namespace motion_correction</span></div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"ttc\" id=\"namespacemotion__correction_html\"><div class=\"ttname\"><a href=\"namespacemotion__correction.html\">motion_correction</a></div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:16</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html\">motion_correction::WarpUpdateParams</a></div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:52</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html_a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17\">motion_correction::WarpUpdateParams::num_pyramid_levels</a></div><div class=\"ttdeci\">int num_pyramid_levels</div><div class=\"ttdoc\">pyramid levels used to estimate the warp</div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:55</div></div>\n<div class=\"ttc\" id=\"namespacearr_html\"><div class=\"ttname\"><a href=\"namespacearr.html\">arr</a></div><div class=\"ttdef\"><b>Definition:</b> laplace.h:31</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html_a526331c824445d1998abceb0e9e0d1f1\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1\">motion_correction::WarpUpdateParams::sensor_size</a></div><div class=\"ttdeci\">cv::Size sensor_size</div><div class=\"ttdoc\">image size </div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:56</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html_ac6581bf6b6c5889fc421acb56e15bc08\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08\">motion_correction::WarpUpdateParams::criteria</a></div><div class=\"ttdeci\">cv::TermCriteria criteria</div><div class=\"ttdoc\">termination criteria for the optimization </div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:57</div></div>\n<div class=\"ttc\" id=\"classmotion__correction_1_1WarpUpdateParams_html_a84a8ddbd114e714571e57c5d93fa2091\"><div class=\"ttname\"><a href=\"classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091\">motion_correction::WarpUpdateParams::warp_mode</a></div><div class=\"ttdeci\">int warp_mode</div><div class=\"ttdoc\">currently supported: cv::MOTION_HOMOGRAPHY </div><div class=\"ttdef\"><b>Definition:</b> motion_correction.hpp:54</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacemembers.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented namespace members with links to the namespaces they belong to:</div><ul>\n<li>createImgPyramid()\n: <a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228\">svo::frame_utils</a>\n</li>\n<li>DetectorType\n: <a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">svo</a>\n</li>\n<li>getSceneDepth()\n: <a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1\">svo::frame_utils</a>\n</li>\n<li>InitializerType\n: <a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">svo</a>\n</li>\n<li>KeyframeCriterion\n: <a class=\"el\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">svo</a>\n</li>\n<li>Stage\n: <a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">svo</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacemembers_enum.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>DetectorType\n: <a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">svo</a>\n</li>\n<li>InitializerType\n: <a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">svo</a>\n</li>\n<li>KeyframeCriterion\n: <a class=\"el\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">svo</a>\n</li>\n<li>Stage\n: <a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">svo</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacemembers_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>createImgPyramid()\n: <a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228\">svo::frame_utils</a>\n</li>\n<li>getSceneDepth()\n: <a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1\">svo::frame_utils</a>\n</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespaces.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Namespace List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Namespace List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all documented namespaces with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacesvo.html\" target=\"_self\">svo</a></td><td class=\"desc\">&lt; for FloatTypeGpu </td></tr>\n<tr id=\"row_0_0_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacesvo_1_1feature__alignment.html\" target=\"_self\">feature_alignment</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacesvo_1_1frame__utils.html\" target=\"_self\">frame_utils</a></td><td class=\"desc\">Some helper functions for the frame object </td></tr>\n<tr id=\"row_0_2_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacesvo_1_1warp.html\" target=\"_self\">warp</a></td><td class=\"desc\">Warp a patch from the reference view to the current view </td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacesvo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo Namespace Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>&lt; for FloatTypeGpu  \n<a href=\"#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacesvo_1_1feature__alignment\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"> &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo_1_1feature__alignment.html\">feature_alignment</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacesvo_1_1frame__utils\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"> &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo_1_1frame__utils.html\">frame_utils</a></td></tr>\n<tr class=\"memdesc:namespacesvo_1_1frame__utils\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Some helper functions for the frame object. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacesvo_1_1warp\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"> &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo_1_1warp.html\">warp</a></td></tr>\n<tr class=\"memdesc:namespacesvo_1_1warp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Warp a patch from the reference view to the current view. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Defines interface for various bundle adjustment methods.  <a href=\"classsvo_1_1AbstractBundleAdjustment.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">All detectors should derive from this abstract class.  <a href=\"classsvo_1_1AbstractDetector.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Bootstrapping the map from the first two views.  <a href=\"classsvo_1_1AbstractInitialization.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html\">AllPixelsDetector</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Dummy detector that selects all pixels.  <a href=\"classsvo_1_1AllPixelsDetector.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ArrayInitGeometric.html\">ArrayInitGeometric</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ArrayInitOptimization.html\">ArrayInitOptimization</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendInterface.html\">BackendInterface</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendOptimizer.html\">BackendOptimizer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BackendVisualizer.html\">BackendVisualizer</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Publish visualisation messages to ROS.  <a href=\"classsvo_1_1BackendVisualizer.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Options for base frame handler module. Sets tracing and quality options.  <a href=\"structsvo_1_1BaseOptions.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1BenchmarkNode.html\">BenchmarkNode</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1CannyDetector.html\">CannyDetector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">Corner</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Temporary container used for corner detection. Features are initialized from these.  <a href=\"structsvo_1_1Corner.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1CsvDatasetReader.html\">CsvDatasetReader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthEstimator.html\">DepthEstimator</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth estimation by minimizing photometric error.  <a href=\"classsvo_1_1DepthEstimator.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Depth-filter config parameters.  <a href=\"structsvo_1_1DepthFilterOptions.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Common options of all feature detectors.  <a href=\"structsvo_1_1DetectorOptions.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FastDetector.html\">FastDetector</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">FAST detector by Edward Rosten.  <a href=\"classsvo_1_1FastDetector.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">FastGradDetector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FivePointInit.html\">FivePointInit</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Tracks features using KLT and then estimate the relative pose using 5pt RANSAC.  <a href=\"classsvo_1_1FivePointInit.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A frame saves the image, the associated features and the estimated pose.  <a href=\"classsvo_1_1Frame.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameGpu.html\">FrameGpu</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The <a class=\"el\" href=\"classsvo_1_1FrameGpu.html\" title=\"The FrameGpu class adds GPU data members to the frame base class. \">FrameGpu</a> class adds GPU data members to the frame base class.  <a href=\"classsvo_1_1FrameGpu.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerArray.html\">FrameHandlerArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerBase.html\">FrameHandlerBase</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Base class for various VO pipelines. Manages the map and the state machine.  <a href=\"classsvo_1_1FrameHandlerBase.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerMono.html\">FrameHandlerMono</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1FrameHandlerStereo.html\">FrameHandlerStereo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1GradientDetector.html\">GradientDetector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1GradientDetectorGrid.html\">GradientDetectorGrid</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1GradientHuangMumfordDetector.html\">GradientHuangMumfordDetector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1GraphManager.html\">GraphManager</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1HomographyInit.html\">HomographyInit</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Tracks features using Lucas-Kanade tracker and then estimates a homography.  <a href=\"classsvo_1_1HomographyInit.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuCalibration.html\">ImuCalibration</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Settings for the IMU statistics Check the following references for more information about the IMU parameters:  <a href=\"classsvo_1_1ImuCalibration.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ImuInitialization.html\">ImuInitialization</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classsvo_1_1Map.html\" title=\"Map object which saves all keyframes which are in a map. \">Map</a> object which saves all keyframes which are in a map.  <a href=\"classsvo_1_1Map.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Patch-matcher for reprojection-matching and epipolar search in triangulation.  <a href=\"classsvo_1_1Matcher.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1OneShotInit.html\">OneShotInit</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A 3D point on the surface of the scene.  <a href=\"classsvo_1_1Point.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Thread-safe point-ID provider.  <a href=\"classsvo_1_1PointIdProvider.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1PreintegratedImuMeasurement.html\">PreintegratedImuMeasurement</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SobelDetector.html\">SobelDetector</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Optimize the pose of the frame by minimizing the photometric error of feature patches.  <a href=\"classsvo_1_1SparseImgAlign.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Optimize the pose of the frame by minimizing the photometric error of feature patches.  <a href=\"classsvo_1_1SparseImgAlignBase.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Optimize the pose of the frame by minimizing the photometric error of feature patches.  <a href=\"classsvo_1_1SparseImgAlignGpu.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sparse Image Alignment Options.  <a href=\"structsvo_1_1SparseImgAlignOptions.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">State to be estimated.  <a href=\"structsvo_1_1SparseImgAlignState.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1StereoInit.html\">StereoInit</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">SVO Interface.  <a href=\"classsvo_1_1SvoInterface.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1TwoPointInit.html\">TwoPointInit</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1ViNodeState.html\">ViNodeState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Publish visualisation messages to ROS.  <a href=\"classsvo_1_1Visualizer.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a167655a84b0d302621aafd836dbb073f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a167655a84b0d302621aafd836dbb073f\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>StereoTriangulationPtr</b></td></tr>\n<tr class=\"separator:a167655a84b0d302621aafd836dbb073f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c0589bfba6db9d49d49e34698fd253e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4c0589bfba6db9d49d49e34698fd253e\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PerformanceMonitorPtr</b></td></tr>\n<tr class=\"separator:a4c0589bfba6db9d49d49e34698fd253e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a299a6ca3aa46909eadbbc9faa5fe5778\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a299a6ca3aa46909eadbbc9faa5fe5778\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FramePtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &gt;</td></tr>\n<tr class=\"separator:a299a6ca3aa46909eadbbc9faa5fe5778\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a388d6df2c99366a43570b5a1dfcb81a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a388d6df2c99366a43570b5a1dfcb81a2\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameWeakPtr</b> = std::weak_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &gt;</td></tr>\n<tr class=\"separator:a388d6df2c99366a43570b5a1dfcb81a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88d4e4531cf324da264645de9d9dffb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88d4e4531cf324da264645de9d9dffb0\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FrameBundlePtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FrameBundle.html\">FrameBundle</a> &gt;</td></tr>\n<tr class=\"separator:a88d4e4531cf324da264645de9d9dffb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a807fe9cf3adf4875da7366daf179fb67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a807fe9cf3adf4875da7366daf179fb67\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeaturePtr</b> = std::shared_ptr&lt; Feature &gt;</td></tr>\n<tr class=\"separator:a807fe9cf3adf4875da7366daf179fb67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af160a99b54db77e2128570d84a4cc3ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af160a99b54db77e2128570d84a4cc3ef\"></a>\ntypedef std::weak_ptr&lt; Feature &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureWeakPtr</b></td></tr>\n<tr class=\"separator:af160a99b54db77e2128570d84a4cc3ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a231d1097a336eae415b2210c5f59404d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a231d1097a336eae415b2210c5f59404d\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PointPtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Point.html\">Point</a> &gt;</td></tr>\n<tr class=\"separator:a231d1097a336eae415b2210c5f59404d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a65627bb6f864734ddd72ba940c7bbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9a65627bb6f864734ddd72ba940c7bbd\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1ImuHandler.html\">ImuHandler</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImuHandlerPtr</b></td></tr>\n<tr class=\"separator:a9a65627bb6f864734ddd72ba940c7bbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa76a5b982fb139c7351a7485a353074b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa76a5b982fb139c7351a7485a353074b\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignBasePtr</b></td></tr>\n<tr class=\"separator:aa76a5b982fb139c7351a7485a353074b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2600e0500aea46536d0b821ef34e41c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2600e0500aea46536d0b821ef34e41c0\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Map.html\">Map</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MapPtr</b></td></tr>\n<tr class=\"separator:a2600e0500aea46536d0b821ef34e41c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4dbfd974c2d18be07f1fbb46811a3c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa4dbfd974c2d18be07f1fbb46811a3c3\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MatcherPtr</b></td></tr>\n<tr class=\"separator:aa4dbfd974c2d18be07f1fbb46811a3c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25d72b56b4b2de8acffe985fa90e1da1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a25d72b56b4b2de8acffe985fa90e1da1\"></a>\ntypedef SeedInverse&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedImplementation</b></td></tr>\n<tr class=\"separator:a25d72b56b4b2de8acffe985fa90e1da1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f7f359e98e0e43c5f0cb27c96530262\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8f7f359e98e0e43c5f0cb27c96530262\"></a>\ntypedef std::shared_ptr&lt; SeedImplementation &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedPtr</b></td></tr>\n<tr class=\"separator:a8f7f359e98e0e43c5f0cb27c96530262\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1de4bddbecfc5aa447f66f856ecabc62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1de4bddbecfc5aa447f66f856ecabc62\"></a>\ntypedef std::vector&lt; SeedPtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Seeds</b></td></tr>\n<tr class=\"separator:a1de4bddbecfc5aa447f66f856ecabc62\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f9fa589375beef8ee31c92926fe5d22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f9fa589375beef8ee31c92926fe5d22\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DetectorPtr</b></td></tr>\n<tr class=\"separator:a5f9fa589375beef8ee31c92926fe5d22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72d26924eb5a1b4dc94dac4110c9e1a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a72d26924eb5a1b4dc94dac4110c9e1a5\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImgPyr</b> = std::vector&lt; cv::Mat &gt;</td></tr>\n<tr class=\"separator:a72d26924eb5a1b4dc94dac4110c9e1a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02bdedb6ccb1a74bb938ddefa675df66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a02bdedb6ccb1a74bb938ddefa675df66\"></a>\ntypedef std::vector&lt; FeaturePtr &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Features</b></td></tr>\n<tr class=\"separator:a02bdedb6ccb1a74bb938ddefa675df66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3217bad832d7456ee6f3da4cd864e51a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3217bad832d7456ee6f3da4cd864e51a\"></a>\ntypedef std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractBundleAdjustment.html\">AbstractBundleAdjustment</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractBundleAdjustmentPtr</b></td></tr>\n<tr class=\"separator:a3217bad832d7456ee6f3da4cd864e51a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d1d9b794888e347afba19df0d3c2b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9d1d9b794888e347afba19df0d3c2b7e\"></a>\ntypedef std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractInitialization.html\">AbstractInitialization</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InitializerPtr</b></td></tr>\n<tr class=\"separator:a9d1d9b794888e347afba19df0d3c2b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a228ffe3af6fcfd14315ce06060896bd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a228ffe3af6fcfd14315ce06060896bd5\"></a>\ntypedef std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PoseOptimizerPtr</b></td></tr>\n<tr class=\"separator:a228ffe3af6fcfd14315ce06060896bd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d1298ab8b7a114acb8ec929b252d50d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6d1298ab8b7a114acb8ec929b252d50d\"></a>\ntypedef std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SparseImgAlignPtr</b></td></tr>\n<tr class=\"separator:a6d1298ab8b7a114acb8ec929b252d50d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2729cfa7c22eff5f24de768d7f7df1b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2729cfa7c22eff5f24de768d7f7df1b4\"></a>\ntypedef std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>DepthFilterPtr</b></td></tr>\n<tr class=\"separator:a2729cfa7c22eff5f24de768d7f7df1b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b5783bc3650c4f5794ffca900208272\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2b5783bc3650c4f5794ffca900208272\"></a>\ntypedef std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ReprojectorPtr</b></td></tr>\n<tr class=\"separator:a2b5783bc3650c4f5794ffca900208272\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23f9bad07c48113fb524cffb684cdcb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a23f9bad07c48113fb524cffb684cdcb1\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>LoopClosingPtr</b> = std::unique_ptr&lt; LoopClosing &gt;</td></tr>\n<tr class=\"separator:a23f9bad07c48113fb524cffb684cdcb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40c660c40d3e6c182a56efc9e803738d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40c660c40d3e6c182a56efc9e803738d\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureTrackerUniquePtr</b> = std::unique_ptr&lt; <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a> &gt;</td></tr>\n<tr class=\"separator:a40c660c40d3e6c182a56efc9e803738d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28b06bbd61237542d8ff1386e707605e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a28b06bbd61237542d8ff1386e707605e\"></a>\ntypedef std::deque&lt; <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImuMeasurements</b></td></tr>\n<tr class=\"separator:a28b06bbd61237542d8ff1386e707605e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4f0886e9d68f4c032baf587eac49774\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad4f0886e9d68f4c032baf587eac49774\"></a>\ntypedef <a class=\"el\" href=\"classgtsam_1_1GenericProjectionFactor.html\">gtsam::GenericProjectionFactor</a>&lt; gtsam::Pose3, gtsam::Point3, gtsam::Cal3_S2 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ProjectionFactor</b></td></tr>\n<tr class=\"separator:ad4f0886e9d68f4c032baf587eac49774\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8115046c82af1642cc285412b2e86527\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8115046c82af1642cc285412b2e86527\"></a>\ntypedef <a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">gtsam::SmartProjectionPoseFactor</a>&lt; gtsam::Cal3_S2 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SmartFactor</b></td></tr>\n<tr class=\"separator:a8115046c82af1642cc285412b2e86527\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f1c0089819d37a399fd2a973ea26528\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f1c0089819d37a399fd2a973ea26528\"></a>\ntypedef <a class=\"el\" href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap</a>&lt; boost::shared_ptr&lt; <a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartFactor</a> &gt;, size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FactorIndexMap</b></td></tr>\n<tr class=\"separator:a9f1c0089819d37a399fd2a973ea26528\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab651aa4c70d4418692d03394fc8f3ea6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab651aa4c70d4418692d03394fc8f3ea6\"></a>\ntypedef <a class=\"el\" href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap</a>&lt; int, std::pair&lt; boost::shared_ptr&lt; <a class=\"el\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartFactor</a> &gt;, int &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SmartFactorMap</b></td></tr>\n<tr class=\"separator:ab651aa4c70d4418692d03394fc8f3ea6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19782659be9e422b6af944ee122de0e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a19782659be9e422b6af944ee122de0e0\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Camera</b> = <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></td></tr>\n<tr class=\"separator:a19782659be9e422b6af944ee122de0e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55cf396456ca9ca0e801b8971334893b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55cf396456ca9ca0e801b8971334893b\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraPtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &gt;</td></tr>\n<tr class=\"separator:a55cf396456ca9ca0e801b8971334893b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a132b38e830661098d89000c1230814d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a132b38e830661098d89000c1230814d4\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraBundle</b> = <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></td></tr>\n<tr class=\"separator:a132b38e830661098d89000c1230814d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a972875a5b47dc91d165c06c75f004676\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a972875a5b47dc91d165c06c75f004676\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraBundlePtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">CameraBundle</a> &gt;</td></tr>\n<tr class=\"separator:a972875a5b47dc91d165c06c75f004676\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8df5642ecb9467c9a81510025fb2fe56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8df5642ecb9467c9a81510025fb2fe56\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>KeypointIdentifierList</b> = std::vector&lt; <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a> &gt;</td></tr>\n<tr class=\"separator:a8df5642ecb9467c9a81510025fb2fe56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a761033c4f0e8e8e6e4f08e5b3ea5e99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a761033c4f0e8e8e6e4f08e5b3ea5e99c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix23d</b> = Eigen::Matrix&lt; double, 2, 3 &gt;</td></tr>\n<tr class=\"separator:a761033c4f0e8e8e6e4f08e5b3ea5e99c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20777054a638f56cf3265381d5990dd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a20777054a638f56cf3265381d5990dd5\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Transformation</b> = kindr::minimal::QuatTransformation</td></tr>\n<tr class=\"separator:a20777054a638f56cf3265381d5990dd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fbeac1173a902dc77e3c8b21ad603c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2fbeac1173a902dc77e3c8b21ad603c7\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Quaternion</b> = kindr::minimal::RotationQuaternion</td></tr>\n<tr class=\"separator:a2fbeac1173a902dc77e3c8b21ad603c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53c07804eba633fa818ec7b1b98aa39e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a53c07804eba633fa818ec7b1b98aa39e\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>size_t</b> = std::size_t</td></tr>\n<tr class=\"separator:a53c07804eba633fa818ec7b1b98aa39e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cb55a38e004e93716a12432d2db9e24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2cb55a38e004e93716a12432d2db9e24\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uint8_t</b> = std::uint8_t</td></tr>\n<tr class=\"separator:a2cb55a38e004e93716a12432d2db9e24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31c0dc14493eb5ad36c35a8afc4b2dde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31c0dc14493eb5ad36c35a8afc4b2dde\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uint64_t</b> = std::uint64_t</td></tr>\n<tr class=\"separator:a31c0dc14493eb5ad36c35a8afc4b2dde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d5b23c315961949292f2583c2fde9ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6d5b23c315961949292f2583c2fde9ef\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FloatType</b> = double</td></tr>\n<tr class=\"separator:a6d5b23c315961949292f2583c2fde9ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f13c1676a6ba5d68daa0441a614ea23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f13c1676a6ba5d68daa0441a614ea23\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Keypoint</b> = Eigen::Matrix&lt; FloatType, 2, 1 &gt;</td></tr>\n<tr class=\"separator:a3f13c1676a6ba5d68daa0441a614ea23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada8eb60110f8b6124614932b5dc827f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ada8eb60110f8b6124614932b5dc827f9\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BearingVector</b> = Eigen::Matrix&lt; FloatType, 3, 1 &gt;</td></tr>\n<tr class=\"separator:ada8eb60110f8b6124614932b5dc827f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a141899eda9990bbfc401fabdd1475e52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a141899eda9990bbfc401fabdd1475e52\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Position</b> = Eigen::Matrix&lt; FloatType, 3, 1 &gt;</td></tr>\n<tr class=\"separator:a141899eda9990bbfc401fabdd1475e52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd085bffed76322ba773aa4fcd55dd94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afd085bffed76322ba773aa4fcd55dd94\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>GradientVector</b> = Eigen::Matrix&lt; FloatType, 2, 1 &gt;</td></tr>\n<tr class=\"separator:afd085bffed76322ba773aa4fcd55dd94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf3260fa2d73bcee602e7358f74d5df4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abf3260fa2d73bcee602e7358f74d5df4\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedState</b> = Eigen::Matrix&lt; FloatType, 4, 1 &gt;</td></tr>\n<tr class=\"separator:abf3260fa2d73bcee602e7358f74d5df4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a37578bcb49e1980f8a887d5f84e6e2f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a37578bcb49e1980f8a887d5f84e6e2f5\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Level</b> = int</td></tr>\n<tr class=\"separator:a37578bcb49e1980f8a887d5f84e6e2f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95ec50c21c77b71b2afe9ce2fcee2588\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95ec50c21c77b71b2afe9ce2fcee2588\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Score</b> = FloatType</td></tr>\n<tr class=\"separator:a95ec50c21c77b71b2afe9ce2fcee2588\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af40dc618f576ae3b0ae08f508130e25c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af40dc618f576ae3b0ae08f508130e25c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Keypoints</b> = Eigen::Matrix&lt; FloatType, 2, Eigen::Dynamic, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:af40dc618f576ae3b0ae08f508130e25c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac761417def09c9e3bfa3c2c635072bed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac761417def09c9e3bfa3c2c635072bed\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Bearings</b> = Eigen::Matrix&lt; FloatType, 3, Eigen::Dynamic, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:ac761417def09c9e3bfa3c2c635072bed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe5846d519faf182f44341945a1f4886\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afe5846d519faf182f44341945a1f4886\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Positions</b> = Eigen::Matrix&lt; FloatType, 3, Eigen::Dynamic, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:afe5846d519faf182f44341945a1f4886\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ce4f0fb847055050f1850a03500405c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5ce4f0fb847055050f1850a03500405c\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Gradients</b> = Eigen::Matrix&lt; FloatType, 2, Eigen::Dynamic, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a5ce4f0fb847055050f1850a03500405c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a887387cbe75a58fadbad48f99d92db35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a887387cbe75a58fadbad48f99d92db35\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Scores</b> = Eigen::Matrix&lt; FloatType, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:a887387cbe75a58fadbad48f99d92db35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3b0da574a82772b685148871f7b94d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa3b0da574a82772b685148871f7b94d2\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Levels</b> = Eigen::Matrix&lt; Level, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:aa3b0da574a82772b685148871f7b94d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad00ed6564189a48f8a702ec4604924d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad00ed6564189a48f8a702ec4604924d5\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InlierMask</b> = Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:ad00ed6564189a48f8a702ec4604924d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adecc978f3cfd2b540f82487b1ca5a993\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adecc978f3cfd2b540f82487b1ca5a993\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedStates</b> = Eigen::Matrix&lt; FloatType, 4, Eigen::Dynamic, Eigen::ColMajor &gt;</td></tr>\n<tr class=\"separator:adecc978f3cfd2b540f82487b1ca5a993\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abddd01306b578540928f9dcb52065f32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abddd01306b578540928f9dcb52065f32\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>TrackIds</b> = Eigen::VectorXi</td></tr>\n<tr class=\"separator:abddd01306b578540928f9dcb52065f32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c2b2184c45b951a632a558bf7a85463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4c2b2184c45b951a632a558bf7a85463\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BundleId</b> = int</td></tr>\n<tr class=\"separator:a4c2b2184c45b951a632a558bf7a85463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5459398aa2d867e2038ed7b4569e9fbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5459398aa2d867e2038ed7b4569e9fbf\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureTypes</b> = std::vector&lt; FeatureType &gt;</td></tr>\n<tr class=\"separator:a5459398aa2d867e2038ed7b4569e9fbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ba8c34112efbaf24e7bcd64ce161d0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0ba8c34112efbaf24e7bcd64ce161d0a\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Corners</b> = std::vector&lt; <a class=\"el\" href=\"structsvo_1_1Corner.html\">Corner</a> &gt;</td></tr>\n<tr class=\"separator:a0ba8c34112efbaf24e7bcd64ce161d0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ff345f6a7d587a1fd0a3d1b9af0d1d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ff345f6a7d587a1fd0a3d1b9af0d1d2\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AbstractDetectorPtr</b> = std::shared_ptr&lt; <a class=\"el\" href=\"classsvo_1_1AbstractDetector.html\">AbstractDetector</a> &gt;</td></tr>\n<tr class=\"separator:a2ff345f6a7d587a1fd0a3d1b9af0d1d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54606a2162e59b90d90a23b3122ad66e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54606a2162e59b90d90a23b3122ad66e\"></a>\ntypedef float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FloatTypeGpu</b></td></tr>\n<tr class=\"separator:a54606a2162e59b90d90a23b3122ad66e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7fecd5a5222841e97163b479b4a514f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af7fecd5a5222841e97163b479b4a514f\"></a>\ntypedef imp::Pixel32fC1&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FloatPixelGpu</b></td></tr>\n<tr class=\"separator:af7fecd5a5222841e97163b479b4a514f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82653142ed9c8bf2533bb62e0a86cb6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82653142ed9c8bf2533bb62e0a86cb6c\"></a>\ntypedef float2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Float2TypeGpu</b></td></tr>\n<tr class=\"separator:a82653142ed9c8bf2533bb62e0a86cb6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a437648a3b03b9151d28d5f0c18dea7c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a437648a3b03b9151d28d5f0c18dea7c6\"></a>\ntypedef imp::Pixel32fC2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Float2PixelGpu</b></td></tr>\n<tr class=\"separator:a437648a3b03b9151d28d5f0c18dea7c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8d5612240c2b114d18bb3ff64972feb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af8d5612240c2b114d18bb3ff64972feb\"></a>\ntypedef float3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Float3TypeGpu</b></td></tr>\n<tr class=\"separator:af8d5612240c2b114d18bb3ff64972feb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4faeb11949838de4906e5cf72f6c4de4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4faeb11949838de4906e5cf72f6c4de4\"></a>\ntypedef imp::Pixel32fC3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Float3PixelGpu</b></td></tr>\n<tr class=\"separator:a4faeb11949838de4906e5cf72f6c4de4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f030677d5efa9ab1413feed1dda5942\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f030677d5efa9ab1413feed1dda5942\"></a>\ntypedef std::uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UIntTypeGpu</b></td></tr>\n<tr class=\"separator:a3f030677d5efa9ab1413feed1dda5942\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af960f5e1a181986e3fed159867e47a44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af960f5e1a181986e3fed159867e47a44\"></a>\ntypedef imp::Pixel32uC1&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UIntPixelGpu</b></td></tr>\n<tr class=\"separator:af960f5e1a181986e3fed159867e47a44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93c99d2ffcb647f8676e1ae38efc43fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a93c99d2ffcb647f8676e1ae38efc43fc\"></a>\ntypedef unsigned char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BoolTypeGpu</b></td></tr>\n<tr class=\"separator:a93c99d2ffcb647f8676e1ae38efc43fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2beb4ba1c9cb75347dbd6b813e08e64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad2beb4ba1c9cb75347dbd6b813e08e64\"></a>\ntypedef imp::Pixel8uC1&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>BoolPixelGpu</b></td></tr>\n<tr class=\"separator:ad2beb4ba1c9cb75347dbd6b813e08e64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a9f73db349fd01d71f1672e19733d69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a9f73db349fd01d71f1672e19733d69\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 2, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UvCache</b></td></tr>\n<tr class=\"separator:a3a9f73db349fd01d71f1672e19733d69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac933745e3bde031123a345085af8b90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aac933745e3bde031123a345085af8b90\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 3, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>XyzRefCache</b></td></tr>\n<tr class=\"separator:aac933745e3bde031123a345085af8b90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54b4944be4becd96e87945c9c55b23a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a54b4944be4becd96e87945c9c55b23a8\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 6, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JacobianProjCache</b></td></tr>\n<tr class=\"separator:a54b4944be4becd96e87945c9c55b23a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4ade381a8e5cb6dda9296dcbfea1431\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae4ade381a8e5cb6dda9296dcbfea1431\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 8, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JacobianCache</b></td></tr>\n<tr class=\"separator:ae4ade381a8e5cb6dda9296dcbfea1431\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefa39a94d1b53f14cb80fadfe6d1fd7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aefa39a94d1b53f14cb80fadfe6d1fd7d\"></a>\ntypedef Eigen::Matrix&lt; FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ResidualCache</b></td></tr>\n<tr class=\"separator:aefa39a94d1b53f14cb80fadfe6d1fd7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af43b067d65282db0b54cc936bc65c812\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af43b067d65282db0b54cc936bc65c812\"></a>\ntypedef Eigen::Matrix&lt; bool, Eigen::Dynamic, 1, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>VisibilityMask</b></td></tr>\n<tr class=\"separator:af43b067d65282db0b54cc936bc65c812\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a247b222e4a3c5e15d40536d33b7d6ae5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a247b222e4a3c5e15d40536d33b7d6ae5\"></a>\ntypedef Eigen::Matrix&lt; FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>RefPatchCache</b></td></tr>\n<tr class=\"separator:a247b222e4a3c5e15d40536d33b7d6ae5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7c9294c63e0ff7475f26096890dc70c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad7c9294c63e0ff7475f26096890dc70c\"></a>\ntypedef Eigen::Matrix&lt; double, 8, 8 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Matrix8d</b></td></tr>\n<tr class=\"separator:ad7c9294c63e0ff7475f26096890dc70c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb339fe3c2c110a7d65355d7d0d6e62b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abb339fe3c2c110a7d65355d7d0d6e62b\"></a>\ntypedef Eigen::Matrix&lt; double, 8, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector8d</b></td></tr>\n<tr class=\"separator:abb339fe3c2c110a7d65355d7d0d6e62b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41726556186601fa5a2d5788acbe9647\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a41726556186601fa5a2d5788acbe9647\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 2, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector2ft</b></td></tr>\n<tr class=\"separator:a41726556186601fa5a2d5788acbe9647\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55b2b8018be01876793457bda0dc6bfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a55b2b8018be01876793457bda0dc6bfd\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 3, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector3ft</b></td></tr>\n<tr class=\"separator:a55b2b8018be01876793457bda0dc6bfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace0a881c187fc07f01cbb259643b284d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace0a881c187fc07f01cbb259643b284d\"></a>\ntypedef Eigen::Matrix&lt; FloatType, 8, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector8ft</b></td></tr>\n<tr class=\"separator:ace0a881c187fc07f01cbb259643b284d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1411d87e867b7d28d27e6ee946b142be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1411d87e867b7d28d27e6ee946b142be\"></a>\ntypedef Eigen::Matrix&lt; FloatTypeGpu, 3, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Vector3ftGpu</b></td></tr>\n<tr class=\"separator:a1411d87e867b7d28d27e6ee946b142be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59a70b0957b48f9760e2755d1c5d0185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a59a70b0957b48f9760e2755d1c5d0185\"></a>\ntypedef std::vector&lt; <a class=\"el\" href=\"classsvo_1_1FeatureRef.html\">FeatureRef</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureRefList</b></td></tr>\n<tr class=\"separator:a59a70b0957b48f9760e2755d1c5d0185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7d8452c53f064de38c3593293239eac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa7d8452c53f064de38c3593293239eac\"></a>\ntypedef std::vector&lt; <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a>, Eigen::aligned_allocator&lt; <a class=\"el\" href=\"classsvo_1_1FeatureTrack.html\">FeatureTrack</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureTracks</b></td></tr>\n<tr class=\"separator:aa7d8452c53f064de38c3593293239eac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a96dffa3404d720ee055bec35ea8b0ecf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a96dffa3404d720ee055bec35ea8b0ecf\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">KeyframeCriterion</a> { <b>DOWNLOOKING</b>, \n<b>FORWARD</b>\n }<tr class=\"memdesc:a96dffa3404d720ee055bec35ea8b0ecf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keyframe Selection Criterion. <br /></td></tr>\n</td></tr>\n<tr class=\"separator:a96dffa3404d720ee055bec35ea8b0ecf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c1176ccbb7b56cacacb02f43677e115\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">Stage</a> { <a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7\">Stage::kPaused</a>, \n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd\">Stage::kInitializing</a>, \n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\">Stage::kTracking</a>, \n<a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64\">Stage::kRelocalization</a>\n }</td></tr>\n<tr class=\"separator:a8c1176ccbb7b56cacacb02f43677e115\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae91e8173fb4c485ef4c5eb2f5ccafb3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae91e8173fb4c485ef4c5eb2f5ccafb3f\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>TrackingQuality</b> { <b>kInsufficient</b>, \n<b>kBad</b>, \n<b>kGood</b>\n }</td></tr>\n<tr class=\"separator:ae91e8173fb4c485ef4c5eb2f5ccafb3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90cf4b2e2e710f197f4fd88bb1ecaf77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a90cf4b2e2e710f197f4fd88bb1ecaf77\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UpdateResult</b> { <b>kDefault</b>, \n<b>kKeyframe</b>, \n<b>kFailure</b>\n }</td></tr>\n<tr class=\"separator:a90cf4b2e2e710f197f4fd88bb1ecaf77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab74b27eaa142b8cdf1ddd3ab9f8f192\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">InitializerType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\">InitializerType::kHomography</a>, \n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59\">InitializerType::kTwoPoint</a>, \n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554\">InitializerType::kFivePoint</a>, \n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3\">InitializerType::kOneShot</a>, \n<br />\n&#160;&#160;<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\">InitializerType::kStereo</a>, \n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6\">InitializerType::kArrayGeometric</a>, \n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb\">InitializerType::kArrayOptimization</a>\n<br />\n }</td></tr>\n<tr class=\"separator:aab74b27eaa142b8cdf1ddd3ab9f8f192\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a826268ba6cc07057dad29dfcf132b854\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a826268ba6cc07057dad29dfcf132b854\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InitResult</b> { <b>kFailure</b>, \n<b>kNoKeyframe</b>, \n<b>kTracking</b>, \n<b>kSuccess</b>\n }</td></tr>\n<tr class=\"separator:a826268ba6cc07057dad29dfcf132b854\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f1135a325327ed4cc7ada0d5157a789\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f1135a325327ed4cc7ada0d5157a789\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>EstimatorState</b> { <b>kUninitialized</b>, \n<b>kInitialBundleAdjustment</b>, \n<b>kRunning</b>\n }</td></tr>\n<tr class=\"separator:a9f1135a325327ed4cc7ada0d5157a789\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85add1e2e14b4d8df520bae8f4e088b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a85add1e2e14b4d8df520bae8f4e088b6\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureType</b> : uint8_t { <br />\n&#160;&#160;<b>kEdgeletSeed</b> = 0, \n<b>kCornerSeed</b> = 1, \n<b>kEdgeletSeedConverged</b> = 2, \n<b>kCornerSeedConverged</b> = 3, \n<br />\n&#160;&#160;<b>kEdgelet</b> = 4, \n<b>kCorner</b> = 5, \n<b>kOutlier</b> = 6\n<br />\n }</td></tr>\n<tr class=\"separator:a85add1e2e14b4d8df520bae8f4e088b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c5c118b76aef39320e48bbc566eeb18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">DetectorType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\">DetectorType::kFast</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca\">DetectorType::kGrad</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97\">DetectorType::kFastGrad</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b\">DetectorType::kGridGrad</a>, \n<br />\n&#160;&#160;<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6\">DetectorType::kAll</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084\">DetectorType::kGradHuangMumford</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359\">DetectorType::kCanny</a>, \n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b\">DetectorType::kSobel</a>\n<br />\n }<tr class=\"memdesc:a3c5c118b76aef39320e48bbc566eeb18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Available Feature Detector Types.  <a href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">More...</a><br /></td></tr>\n</td></tr>\n<tr class=\"separator:a3c5c118b76aef39320e48bbc566eeb18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6ede71df5a2f5369960f2bf00f762f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af6ede71df5a2f5369960f2bf00f762f9\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PipelineType</b> { <b>kMono</b>, \n<b>kStereo</b>, \n<b>kArray</b>\n }</td></tr>\n<tr class=\"separator:af6ede71df5a2f5369960f2bf00f762f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad27a56952857c6642d62fafdfac12720\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad27a56952857c6642d62fafdfac12720\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isSeed</b> (const FeatureType &amp;t)</td></tr>\n<tr class=\"separator:ad27a56952857c6642d62fafdfac12720\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e86d42bab2ebf0dcd04cd579f9af0ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5e86d42bab2ebf0dcd04cd579f9af0ba\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isConvergedSeed</b> (const FeatureType &amp;t)</td></tr>\n<tr class=\"separator:a5e86d42bab2ebf0dcd04cd579f9af0ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67b572bd39bbb99c1e208ec90bdc4783\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a67b572bd39bbb99c1e208ec90bdc4783\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isUnconvergedSeed</b> (const FeatureType &amp;t)</td></tr>\n<tr class=\"separator:a67b572bd39bbb99c1e208ec90bdc4783\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a274198d807b76bb3eacbc6d423174a8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a274198d807b76bb3eacbc6d423174a8d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isEdgelet</b> (const FeatureType &amp;t)</td></tr>\n<tr class=\"separator:a274198d807b76bb3eacbc6d423174a8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a459e5340a12f50059ff64ef5503718a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a459e5340a12f50059ff64ef5503718a5\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isCorner</b> (const FeatureType &amp;t)</td></tr>\n<tr class=\"separator:a459e5340a12f50059ff64ef5503718a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c5e56c46c12c6d12c40ee005105608b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c5e56c46c12c6d12c40ee005105608b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>visualizeTracks</b> (const <a class=\"el\" href=\"classsvo_1_1FeatureTracker.html\">FeatureTracker</a> &amp;tracker, size_t frame_index, int sleep)</td></tr>\n<tr class=\"separator:a2c5e56c46c12c6d12c40ee005105608b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>&lt; for FloatTypeGpu </p>\n<dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000006\">Todo:</a></b></dt><dd>move to <a class=\"el\" href=\"camera_8h_source.html\">camera.h</a> ? </dd></dl>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a3c5c118b76aef39320e48bbc566eeb18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c5c118b76aef39320e48bbc566eeb18\">&#9670;&nbsp;</a></span>DetectorType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">svo::DetectorType</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Available Feature Detector Types. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\"></a>kFast&#160;</td><td class=\"fielddoc\"><p>Fast <a class=\"el\" href=\"structsvo_1_1Corner.html\" title=\"Temporary container used for corner detection. Features are initialized from these. \">Corner</a> Detector by Edward Rosten. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca\"></a>kGrad&#160;</td><td class=\"fielddoc\"><p>Gradient detector for edgelets. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97\"></a>kFastGrad&#160;</td><td class=\"fielddoc\"><p>Combined Fast and Gradient detector. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b\"></a>kGridGrad&#160;</td><td class=\"fielddoc\"><p>Gradient detector with feature grid. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6\"></a>kAll&#160;</td><td class=\"fielddoc\"><p>Every pixel is a feature! </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084\"></a>kGradHuangMumford&#160;</td><td class=\"fielddoc\"><p>'Natural' edges (see Huang CVPR'99) </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359\"></a>kCanny&#160;</td><td class=\"fielddoc\"><p>Canny edge detector. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b\"></a>kSobel&#160;</td><td class=\"fielddoc\"><p>Sobel edge detector. </p>\n</td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab74b27eaa142b8cdf1ddd3ab9f8f192\">&#9670;&nbsp;</a></span>InitializerType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">svo::InitializerType</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\"></a>kHomography&#160;</td><td class=\"fielddoc\"><p>Estimates a plane from the first two views. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59\"></a>kTwoPoint&#160;</td><td class=\"fielddoc\"><p>Assumes known rotation from IMU and estimates translation. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554\"></a>kFivePoint&#160;</td><td class=\"fielddoc\"><p>Estimate relative pose of two cameras using 5pt RANSAC. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3\"></a>kOneShot&#160;</td><td class=\"fielddoc\"><p>Initialize points on a plane with given depth. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\"></a>kStereo&#160;</td><td class=\"fielddoc\"><p>Triangulate from two views with known pose. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6\"></a>kArrayGeometric&#160;</td><td class=\"fielddoc\"><p>Estimate relative pose of two camera arrays, using 17pt RANSAC. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb\"></a>kArrayOptimization&#160;</td><td class=\"fielddoc\"><p>Estimate relative pose of two camera arrays using GTSAM. </p>\n</td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a8c1176ccbb7b56cacacb02f43677e115\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c1176ccbb7b56cacacb02f43677e115\">&#9670;&nbsp;</a></span>Stage</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115\">svo::Stage</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7\"></a>kPaused&#160;</td><td class=\"fielddoc\"><p>Stage at the beginning and after reset. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd\"></a>kInitializing&#160;</td><td class=\"fielddoc\"><p>Stage until the first frame with enough features is found. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c\"></a>kTracking&#160;</td><td class=\"fielddoc\"><p>Stage when SVO is running and everything is well. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64\"></a>kRelocalization&#160;</td><td class=\"fielddoc\"><p>Stage when SVO looses tracking and it tries to relocalize. </p>\n</td></tr>\n</table>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacesvo_1_1feature__alignment.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::feature_alignment Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacesvo_1_1feature__alignment.html\">feature_alignment</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::feature_alignment Namespace Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ae2934d02eb09be471f6fde200c8721ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae2934d02eb09be471f6fde200c8721ae\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>align1D</b> (const cv::Mat &amp;cur_img, const Eigen::Ref&lt; GradientVector &gt; &amp;dir, uint8_t *ref_patch_with_border, uint8_t *ref_patch, const int n_iter, const bool affine_est_offset, const bool affine_est_gain, Keypoint *cur_px_estimate, double *h_inv=nullptr)</td></tr>\n<tr class=\"separator:ae2934d02eb09be471f6fde200c8721ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b239162a3344bd4d2204f45f63d570d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0b239162a3344bd4d2204f45f63d570d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>align2D</b> (const cv::Mat &amp;cur_img, uint8_t *ref_patch_with_border, uint8_t *ref_patch, const int n_iter, const bool affine_est_offset, const bool affine_est_gain, Keypoint &amp;cur_px_estimate, bool no_simd=false, std::vector&lt; Eigen::Vector2f &gt; *each_step=nullptr)</td></tr>\n<tr class=\"separator:a0b239162a3344bd4d2204f45f63d570d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6681d845e1988274997101f30145d721\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6681d845e1988274997101f30145d721\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>align2D_SSE2</b> (const cv::Mat &amp;cur_img, uint8_t *ref_patch_with_border, uint8_t *ref_patch, const int n_iter, Keypoint &amp;cur_px_estimate)</td></tr>\n<tr class=\"separator:a6681d845e1988274997101f30145d721\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e17665b9d25ddad90663ed541b6493d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e17665b9d25ddad90663ed541b6493d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>align2D_NEON</b> (const cv::Mat &amp;cur_img, uint8_t *ref_patch_with_border, uint8_t *ref_patch, const int n_iter, Keypoint &amp;cur_px_estimate)</td></tr>\n<tr class=\"separator:a0e17665b9d25ddad90663ed541b6493d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf8608c4820ec569ca162425e1ffd6e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acf8608c4820ec569ca162425e1ffd6e4\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>alignPyr2DVec</b> (const std::vector&lt; cv::Mat &gt; &amp;img_pyr_ref, const std::vector&lt; cv::Mat &gt; &amp;img_pyr_cur, const int max_level, const int min_level, const std::vector&lt; int &gt; &amp;patch_sizes, const int n_iter, const float min_update_squared, const std::vector&lt; cv::Point2f &gt; &amp;px_ref, std::vector&lt; cv::Point2f &gt; &amp;px_cur, std::vector&lt; uint8_t &gt; &amp;status)</td></tr>\n<tr class=\"separator:acf8608c4820ec569ca162425e1ffd6e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea1f36d8d2c85d2167ffba331668d1ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aea1f36d8d2c85d2167ffba331668d1ba\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>alignPyr2D</b> (const std::vector&lt; cv::Mat &gt; &amp;img_pyr_ref, const std::vector&lt; cv::Mat &gt; &amp;img_pyr_cur, const int max_level, const int min_level, const std::vector&lt; int &gt; &amp;patch_sizes, const int n_iter, const float min_update_squared, const Eigen::Vector2i &amp;px_ref_level_0, Keypoint &amp;px_cur_level_0)</td></tr>\n<tr class=\"separator:aea1f36d8d2c85d2167ffba331668d1ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Subpixel refinement of a reference feature patch with the current image. Implements the inverse-compositional approach (see \"Lucas-Kanade 20 Years on\" paper by Baker. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacesvo_1_1frame__utils.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::frame_utils Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacesvo_1_1frame__utils.html\">frame_utils</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::frame_utils Namespace Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Some helper functions for the frame object.  \n<a href=\"#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab66effb506ec377e6edf35e95c5d8228\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab66effb506ec377e6edf35e95c5d8228\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228\">createImgPyramid</a> (const cv::Mat &amp;img_level_0, int n_levels, ImgPyr &amp;pyr)</td></tr>\n<tr class=\"memdesc:ab66effb506ec377e6edf35e95c5d8228\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an image pyramid of half-sampled images. <br /></td></tr>\n<tr class=\"separator:ab66effb506ec377e6edf35e95c5d8228\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e14f30975b878994df3a16db2593bb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e14f30975b878994df3a16db2593bb1\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1\">getSceneDepth</a> (const FramePtr &amp;frame, double &amp;depth_median, double &amp;depth_min, double &amp;depth_max)</td></tr>\n<tr class=\"memdesc:a3e14f30975b878994df3a16db2593bb1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Get the average depth of the features in the image. <br /></td></tr>\n<tr class=\"separator:a3e14f30975b878994df3a16db2593bb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0940c9ce6590676ccbd43b5adee10c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa0940c9ce6590676ccbd43b5adee10c6\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>computeNormalizedBearingVectors</b> (const Keypoints &amp;px_vec, const <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a> &amp;cam, Bearings *f_vec)</td></tr>\n<tr class=\"separator:aa0940c9ce6590676ccbd43b5adee10c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Some helper functions for the frame object. </p>\n<p>Utility functions for the <a class=\"el\" href=\"classsvo_1_1Frame.html\" title=\"A frame saves the image, the associated features and the estimated pose. \">Frame</a> class. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/namespacesvo_1_1warp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::warp Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacesvo_1_1warp.html\">warp</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::warp Namespace Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Warp a patch from the reference view to the current view.  \n<a href=\"#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a3a63ccc61b2c2ba05eac27c94565e080\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a63ccc61b2c2ba05eac27c94565e080\"></a>\nusing&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>AffineTransformation2</b> = Eigen::Matrix2d</td></tr>\n<tr class=\"separator:a3a63ccc61b2c2ba05eac27c94565e080\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ae5fe0d85bd8af5b8f56b6d53cbca3d8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5fe0d85bd8af5b8f56b6d53cbca3d8f\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getWarpMatrixAffine</b> (const CameraPtr &amp;cam_ref, const CameraPtr &amp;cam_cur, const Eigen::Ref&lt; Keypoint &gt; &amp;px_ref, const Eigen::Ref&lt; BearingVector &gt; &amp;f_ref, const double depth_ref, const Transformation &amp;T_cur_ref, const int level_ref, AffineTransformation2 *A_cur_ref)</td></tr>\n<tr class=\"separator:ae5fe0d85bd8af5b8f56b6d53cbca3d8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdd208d04136902bf2eaa7a7e70a8296\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abdd208d04136902bf2eaa7a7e70a8296\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getWarpMatrixAffineHomography</b> (const CameraPtr &amp;cam_ref, const CameraPtr &amp;cam_cur, const Keypoint &amp;px_ref, const BearingVector &amp;f_ref, const BearingVector &amp;normal_ref, const double depth_ref, const Transformation T_cur_ref, const int level_ref, AffineTransformation2 &amp;A_cur_ref)</td></tr>\n<tr class=\"separator:abdd208d04136902bf2eaa7a7e70a8296\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb57f9586d7ee16c106dd76d6de57861\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb57f9586d7ee16c106dd76d6de57861\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getBestSearchLevel</b> (const AffineTransformation2 &amp;A_cur_ref, const int max_level)</td></tr>\n<tr class=\"separator:afb57f9586d7ee16c106dd76d6de57861\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a754d2c1c540c29bb7b2a372e8f41ca4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a754d2c1c540c29bb7b2a372e8f41ca4e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>warpAffine</b> (const AffineTransformation2 &amp;A_cur_ref, const cv::Mat &amp;img_ref, const Eigen::Ref&lt; Keypoint &gt; &amp;px_ref, const int level_ref, const int level_cur, const int halfpatch_size, uint8_t *patch)</td></tr>\n<tr class=\"separator:a754d2c1c540c29bb7b2a372e8f41ca4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a954e0febdea9933f62fdef5a99edd7a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a954e0febdea9933f62fdef5a99edd7a2\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>warpPixelwise</b> (const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;cur_frame, const <a class=\"el\" href=\"classsvo_1_1Frame.html\">Frame</a> &amp;ref_frame, const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;ref_ftr, const int level_ref, const int level_cur, const int halfpatch_size, uint8_t *patch)</td></tr>\n<tr class=\"separator:a954e0febdea9933f62fdef5a99edd7a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a762019daeb0abb1d690195d3ab5afa21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a762019daeb0abb1d690195d3ab5afa21\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createPatchNoWarp</b> (const cv::Mat &amp;img, const Eigen::Vector2i &amp;px, const int halfpatch_size, uint8_t *patch)</td></tr>\n<tr class=\"separator:a762019daeb0abb1d690195d3ab5afa21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fd3a32f576a9a87a03777f4ad0e92d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fd3a32f576a9a87a03777f4ad0e92d3\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>createPatchNoWarpInterpolated</b> (const cv::Mat &amp;img, const Eigen::Ref&lt; Keypoint &gt; &amp;px, const int halfpatch_size, uint8_t *patch)</td></tr>\n<tr class=\"separator:a6fd3a32f576a9a87a03777f4ad0e92d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Warp a patch from the reference view to the current view. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/ncamera-yaml-serialization_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/yaml/ncamera-yaml-serialization.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b52211d97cb29aa6c603e5e675788789.html\">yaml</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">ncamera-yaml-serialization.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#pragma GCC diagnostic ignored &quot;-Wdeprecated-declarations&quot;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;yaml-cpp/yaml.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma diagnostic pop</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">class </span>NCamera;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceYAML.html\">YAML</a> {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">template</span>&lt;&gt;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">   17</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::shared_ptr&lt;vk::cameras::NCamera&gt;&gt; {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, std::shared_ptr&lt;vk::cameras::NCamera&gt;&amp; ncamera);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> std::shared_ptr&lt;vk::cameras::NCamera&gt;&amp; ncamera);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;};</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">template</span>&lt;&gt;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">   27</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacevk.html\">vk</a>::cameras::NCamera&gt; {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>&amp; ncamera);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a>&amp; ncamera);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;};</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;}  <span class=\"comment\">// namespace YAML</span></div><div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"namespaceYAML_html\"><div class=\"ttname\"><a href=\"namespaceYAML.html\">YAML</a></div><div class=\"ttdef\"><b>Definition:</b> camera-yaml-serialization.h:14</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:21</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/ncamera_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/ncamera.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">ncamera.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/macros.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/pose-types.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">class </span>CameraGeometryBase;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">using</span> Camera = CameraGeometryBase;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">using</span> Transformation = aslam::Transformation;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">using</span> TransformationVector = aslam::TransformationVector;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">using</span> Quaternion = aslam::Quaternion;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html\">   21</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;{</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  ASLAM_POINTER_TYPEDEFS(<a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>);</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>(</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;      <span class=\"keyword\">const</span> TransformationVector&amp; T_C_B,</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;std::shared_ptr&lt;Camera&gt;&gt;&amp; cameras,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;      <span class=\"keyword\">const</span> std::string&amp; label);</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>() {}</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">void</span> operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html\">NCamera</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keyword\">static</span> std::shared_ptr&lt;NCamera&gt; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">loadFromYaml</a>(<span class=\"keyword\">const</span> std::string&amp; yaml_file);</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">   45</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">getNumCameras</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">cameras_</a>.size(); }</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keyword\">const</span> Transformation&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">get_T_C_B</a>(<span class=\"keywordtype\">size_t</span> camera_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">const</span> TransformationVector&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">getTransformationVector</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">Camera</a>&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">getCamera</a>(<span class=\"keywordtype\">size_t</span> camera_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  std::shared_ptr&lt;Camera&gt; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">getCameraShared</a>(<span class=\"keywordtype\">size_t</span> camera_index);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  std::shared_ptr&lt;const Camera&gt; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">getCameraShared</a>(<span class=\"keywordtype\">size_t</span> camera_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">   63</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">numCameras</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">cameras_</a>.size(); }</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">printParameters</a>(std::ostream&amp; out, <span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;Camera: &quot;</span>) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keyword\">const</span> std::vector&lt;std::shared_ptr&lt;Camera&gt;&gt;&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">getCameraVector</a>() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">   72</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::string&amp; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">getLabel</a>()<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">label_</a>;}</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">   75</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">setLabel</a>(<span class=\"keyword\">const</span> std::string&amp; label) {<a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">label_</a> = label;}</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">initInternal</a>();</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">   82</a></span>&#160;  TransformationVector <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">T_C_B_</a>;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">   85</a></span>&#160;  std::vector&lt;std::shared_ptr&lt;Camera&gt;&gt; <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">cameras_</a>;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">   88</a></span>&#160;  std::string <a class=\"code\" href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">label_</a>;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;};</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;} <span class=\"comment\">// namespace vikit</span></div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ab82489ff15eb2aa23114566d34c1b47d\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d\">vk::cameras::NCamera::getCameraVector</a></div><div class=\"ttdeci\">const std::vector&lt; std::shared_ptr&lt; Camera &gt; &gt; &amp; getCameraVector() const</div><div class=\"ttdoc\">Get all cameras. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:111</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a7eccedb85ac34cec9eb0e5bb5a31f997\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997\">vk::cameras::NCamera::getLabel</a></div><div class=\"ttdeci\">const std::string &amp; getLabel() const</div><div class=\"ttdoc\">Get a label for the camera. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:72</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a3b2f13ab67e8d2f2ebb9add468b35bc5\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5\">vk::cameras::NCamera::initInternal</a></div><div class=\"ttdeci\">void initInternal()</div><div class=\"ttdoc\">Internal consistency checks and initialization. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:61</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a832186f4e9e9599a3c12cdf94bf8dc41\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41\">vk::cameras::NCamera::label_</a></div><div class=\"ttdeci\">std::string label_</div><div class=\"ttdoc\">A label for this camera rig, a name. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:88</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_aad3f560613c3d47cdc7ba9d0097d0ba9\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9\">vk::cameras::NCamera::numCameras</a></div><div class=\"ttdeci\">size_t numCameras() const</div><div class=\"ttdoc\">How many cameras does this system have? </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:63</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a715647d79d0319c7d4bcc4e4ccd05f3f\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f\">vk::cameras::NCamera::get_T_C_B</a></div><div class=\"ttdeci\">const Transformation &amp; get_T_C_B(size_t camera_index) const</div><div class=\"ttdoc\">Get the pose of body frame with respect to the camera i. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:70</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ad40fbb66998063aebdfaf64a705c86df\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df\">vk::cameras::NCamera::T_C_B_</a></div><div class=\"ttdeci\">TransformationVector T_C_B_</div><div class=\"ttdoc\">The mounting transformations. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:82</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ad477facc6c06e87b1b33469108e39c93\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93\">vk::cameras::NCamera::loadFromYaml</a></div><div class=\"ttdeci\">static std::shared_ptr&lt; NCamera &gt; loadFromYaml(const std::string &amp;yaml_file)</div><div class=\"ttdoc\">Load a camera rig form a yaml file. Returns a nullptr if the loading fails. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:26</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ac32ad5bdf9d5867cf21c2fa6bf021d5d\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d\">vk::cameras::NCamera::getTransformationVector</a></div><div class=\"ttdeci\">const TransformationVector &amp; getTransformationVector() const</div><div class=\"ttdoc\">Get all transformations. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:76</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ad233ea2d278087592f477449c7b15332\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332\">vk::cameras::NCamera::getNumCameras</a></div><div class=\"ttdeci\">size_t getNumCameras() const</div><div class=\"ttdoc\">Get the number of cameras. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:45</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a447cfe8121a730f567cfcf41fb913bf4\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4\">vk::cameras::NCamera::printParameters</a></div><div class=\"ttdeci\">void printParameters(std::ostream &amp;out, const std::string &amp;s=&quot;Camera: &quot;) const</div><div class=\"ttdoc\">Print camera infos. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:100</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a902480d3836876993bc8138a36429815\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815\">vk::cameras::NCamera::setLabel</a></div><div class=\"ttdeci\">void setLabel(const std::string &amp;label)</div><div class=\"ttdoc\">Set a label for the camera. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:75</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a70cf2f8aeb34093f4fc3dad63405c306\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306\">vk::cameras::NCamera::getCamera</a></div><div class=\"ttdeci\">const Camera &amp; getCamera(size_t camera_index) const</div><div class=\"ttdoc\">Get the geometry object for camera i. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:81</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_a36057e5cace3259c1f1689381c183a45\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45\">vk::cameras::NCamera::getCameraShared</a></div><div class=\"ttdeci\">std::shared_ptr&lt; Camera &gt; getCameraShared(size_t camera_index)</div><div class=\"ttdoc\">Get the geometry object for camera i. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.cpp:88</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a></div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:21</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1NCamera_html_ac820561513d67fdd3ff8833db5a28d27\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27\">vk::cameras::NCamera::cameras_</a></div><div class=\"ttdeci\">std::vector&lt; std::shared_ptr&lt; Camera &gt; &gt; cameras_</div><div class=\"ttdoc\">The camera geometries. </div><div class=\"ttdef\"><b>Definition:</b> ncamera.h:85</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/no__distortion_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/no_distortion.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">no_distortion.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Dense&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a> </div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> distort(</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;      <span class=\"keywordtype\">double</span>&amp; <span class=\"comment\">/*u*/</span>, <span class=\"keywordtype\">double</span>&amp; <span class=\"comment\">/*v*/</span>)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">  </span>{}</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector2d distort(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; vector)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    <span class=\"keywordflow\">return</span> vector;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  }</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Matrix2d jacobian(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; <span class=\"comment\">/*vector*/</span>)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    <span class=\"keywordflow\">return</span> Eigen::Matrix2d::Identity();</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  }</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> undistort(</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      <span class=\"keywordtype\">double</span>&amp; <span class=\"comment\">/*u*/</span>, <span class=\"keywordtype\">double</span>&amp; <span class=\"comment\">/*v*/</span>)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">  </span>{}</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(std::ostream&amp; out)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    out &lt;&lt; <span class=\"stringliteral\">&quot;  Distortion: No&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  }</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"comment\">// returns distortion parameters as vector (here empty vector)</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">inline</span> Eigen::VectorXd getDistortionParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    Eigen::VectorXd distortion;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keywordflow\">return</span> distortion;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  }</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a> createTestDistortion() {</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1NoDistortion.html\">NoDistortion</a>();</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  }</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;};</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1NoDistortion_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1NoDistortion.html\">vk::cameras::NoDistortion</a></div><div class=\"ttdef\"><b>Definition:</b> no_distortion.h:10</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/numdiff-jacobian-tester_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/numdiff-jacobian-tester.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">numdiff-jacobian-tester.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Dense&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;eigen-checks/gtest.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceaslam.html\">aslam</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>common {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">// Enable/disable debug outputs.</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#define NUMDIFF_DEBUG_OUTPUT false</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"preprocessor\">#define TEST_JACOBIAN_FINITE_DIFFERENCE(FUNCTOR_TYPE, X, STEP, TOLERANCE, ...) \\</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;<span class=\"preprocessor\">    do {\\</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">      FUNCTOR_TYPE functor(__VA_ARGS__);                                 \\</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"preprocessor\">      typename aslam::common::NumericalDiffTraits&lt;FUNCTOR_TYPE&gt;::type numDiff(functor, STEP); \\</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"preprocessor\">      typename FUNCTOR_TYPE::JacobianType Jnumeric;                      \\</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"preprocessor\">      bool success = numDiff.getJacobianNumerical(X, Jnumeric);          \\</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"preprocessor\">      EXPECT_TRUE(success) &lt;&lt; &quot;Num. differentiation failed!&quot;;            \\</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"preprocessor\">      typename FUNCTOR_TYPE::JacobianType Jsymbolic;                     \\</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"preprocessor\">      success = functor.getJacobian(X, &amp;Jsymbolic);                      \\</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;<span class=\"preprocessor\">      EXPECT_TRUE(success) &lt;&lt; &quot;Getting analytical Jacobian failed!&quot;;     \\</span></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"preprocessor\">      EXPECT_TRUE(EIGEN_MATRIX_NEAR(Jnumeric, Jsymbolic, TOLERANCE));    \\</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"preprocessor\">      VLOG(3) &lt;&lt; &quot;Jnumeric: &quot; &lt;&lt; Jnumeric &lt;&lt; &quot;\\n&quot;;                       \\</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;<span class=\"preprocessor\">      VLOG(3) &lt;&lt; &quot;Jsymbolic: &quot; &lt;&lt; Jsymbolic &lt;&lt; &quot;\\n&quot;;                     \\</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"preprocessor\">    } while (0)</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"comment\">// Functor base for numerical differentiation.</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keywordtype\">int</span> NY, <span class=\"keywordtype\">int</span> NX, <span class=\"keyword\">typename</span> _Scalar = <span class=\"keywordtype\">double</span>&gt;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">   63</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a> {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"comment\">// Type definitions.</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">enum</span> {</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    InputsAtCompileTime = NX,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    ValuesAtCompileTime = NY</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  };</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keyword\">typedef</span> _Scalar Scalar;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;Scalar, InputsAtCompileTime, 1&gt; InputType;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;Scalar, ValuesAtCompileTime, 1&gt; ValueType;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keyword\">typedef</span> Eigen::Matrix&lt;Scalar, ValuesAtCompileTime, InputsAtCompileTime&gt; JacobianType;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <a class=\"code\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a>() {};</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a>() {};</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> functional(<span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> NumDiffFunctor::InputType&amp; x,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;                          <span class=\"keyword\">typename</span> NumDiffFunctor::ValueType&amp; fvec,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;                          <span class=\"keyword\">typename</span> NumDiffFunctor::JacobianType* Jout) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">bool</span> operator()(<span class=\"keyword\">const</span> InputType&amp; x, ValueType&amp; fvec)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    <span class=\"keywordflow\">return</span> functional(x, fvec, <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  };</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keywordtype\">bool</span> getJacobian(<span class=\"keyword\">const</span> InputType&amp; x,</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;                   JacobianType* out_jacobian)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    ValueType fvec;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <span class=\"keywordflow\">return</span> functional(x, fvec, out_jacobian);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  };</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;};</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;<span class=\"keyword\">enum</span> NumericalDiffMode {</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  Forward,</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  Central,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  CentralSecond</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;};</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"comment\">// The NumericalDiff class won&#39;t compile if ValuesAtCompileTime is zero.</span></div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;<span class=\"comment\">// This class can be chosen by template magic in this case.</span></div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> _Functor, NumericalDiffMode mode = CentralSecond&gt;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">  104</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a> {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keyword\">typedef</span> _Functor Functor;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::Scalar Scalar;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::InputType InputType;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::ValueType ValueType;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::JacobianType JacobianType;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"keyword\">enum</span> {</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    InputsAtCompileTime = _Functor::InputsAtCompileTime,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    ValuesAtCompileTime = _Functor::ValuesAtCompileTime</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  };</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  <a class=\"code\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a>(<span class=\"keyword\">const</span> Functor&amp; <span class=\"comment\">/* f */</span>, Scalar <span class=\"comment\">/* _epsfcn */</span>) {};</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a>() {};</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  <span class=\"keywordtype\">bool</span> getJacobianNumerical(<span class=\"keyword\">const</span> InputType&amp; <span class=\"comment\">/* _x */</span>, JacobianType &amp;<span class=\"comment\">/* jac */</span>)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  }</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;};</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> _Functor, NumericalDiffMode mode = CentralSecond&gt;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">  126</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a> : <span class=\"keyword\">public</span> _Functor {</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keyword\">typedef</span> _Functor Functor;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::Scalar Scalar;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::InputType InputType;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::ValueType ValueType;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Functor::JacobianType JacobianType;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a>(<span class=\"keyword\">const</span> Functor&amp; f, Scalar _epsfcn = 0.)</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      : Functor(f),</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;        epsfcn(_epsfcn) {}</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;  <span class=\"keyword\">enum</span> {</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    InputsAtCompileTime = Functor::InputsAtCompileTime,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    ValuesAtCompileTime = Functor::ValuesAtCompileTime</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  };</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">bool</span> getJacobianNumerical(<span class=\"keyword\">const</span> InputType&amp; _x, JacobianType &amp;jac)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    static_assert(InputsAtCompileTime &gt; 0,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;                  <span class=\"stringliteral\">&quot;Numerical Differentiation does not work for zero-sized Jacobians.&quot;</span>);</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keyword\">using</span> std::sqrt;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keyword\">using</span> std::abs;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    <span class=\"comment\">/* Local variables */</span></div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    Scalar h;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keyword\">typename</span> InputType::Index n = _x.size();</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    <span class=\"keyword\">const</span> Scalar eps = sqrt(((std::max)(epsfcn, Eigen::NumTraits&lt;Scalar&gt;::epsilon())));</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    <span class=\"comment\">// Build jacobian.</span></div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;    InputType x = _x;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    ValueType val1, val2, val3, val4;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    <span class=\"keywordtype\">bool</span> success = <span class=\"keyword\">true</span>;  <span class=\"comment\">// Success of value generating function.</span></div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> j = 0; j &lt; n; ++j) {</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;      h = eps * abs(x[j]);</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;      <span class=\"keywordflow\">if</span> (h == 0.) {</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;        h = eps;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;      }</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;      <span class=\"keywordflow\">switch</span> (mode) {</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;        <span class=\"keywordflow\">case</span> Forward:</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;          success &amp;= Functor::operator()(x, val1);</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;          x[j] += h;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;          success &amp;= Functor::operator()(x, val2);</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;          x[j] = _x[j];</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;          jac.col(j) = (val2 - val1) / h;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;          <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;        <span class=\"keywordflow\">case</span> Central:</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;          x[j] += h;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;          success &amp;= Functor::operator()(x, val2);</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;          x[j] -= 2 * h;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;          success &amp;= Functor::operator()(x, val1);</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;          x[j] = _x[j];</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;          jac.col(j) = (val2 - val1) / (2 * h);</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;          <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;        <span class=\"keywordflow\">case</span> CentralSecond:</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;          x[j] += 2.0 * h;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;          success &amp;= Functor::operator()(x, val1);</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;          x[j] -= h;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;          success &amp;= Functor::operator()(x, val2);</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;          x[j] -= 2.0 * h;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;          success &amp;= Functor::operator()(x, val3);</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;          x[j] -= h;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;          success &amp;= Functor::operator()(x, val4);</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;          x[j] = _x[j];</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;          jac.col(j) = ((8.0 * val2) + val4 - val1 - (8.0 * val3)) / (h * 12.0);</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;          <span class=\"keywordflow\">break</span>;</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;        <span class=\"keywordflow\">default</span>:</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;          eigen_assert(<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;      };</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;    }</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;    <span class=\"keywordflow\">return</span> success;</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;  }</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;  Scalar epsfcn;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;  <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a>&amp;);</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;};</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> _Functor, NumericalDiffMode mode, <span class=\"keywordtype\">int</span> ValuesAtCompileTime&gt;</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">  203</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a> {</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;  <span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff&lt;_Functor, mode&gt;</a> <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">type</a>;</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;};</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> _Functor, NumericalDiffMode mode&gt;</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">  208</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a>&lt;_Functor, mode, 0&gt; {</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;  <span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff&lt;_Functor, mode&gt;</a> <a class=\"code\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">type</a>;</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;};</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> _Functor, NumericalDiffMode mode = CentralSecond&gt;</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">  213</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">NumericalDiffTraits</a> {</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;  <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiffTraitsSelector&lt;_Functor, mode, _Functor::InputsAtCompileTime&gt;::type</a> <a class=\"code\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">type</a>;</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;};</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;}  <span class=\"comment\">// namespace common</span></div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;}  <span class=\"comment\">// namespace aslam</span></div><div class=\"ttc\" id=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_html\"><div class=\"ttname\"><a href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">aslam::common::NumericalDiffTraitsSelector</a></div><div class=\"ttdef\"><b>Definition:</b> numdiff-jacobian-tester.h:203</div></div>\n<div class=\"ttc\" id=\"structaslam_1_1common_1_1NumDiffFunctor_html\"><div class=\"ttname\"><a href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor</a></div><div class=\"ttdef\"><b>Definition:</b> numdiff-jacobian-tester.h:63</div></div>\n<div class=\"ttc\" id=\"classaslam_1_1common_1_1ZeroNumericalDiff_html\"><div class=\"ttname\"><a href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">aslam::common::ZeroNumericalDiff</a></div><div class=\"ttdef\"><b>Definition:</b> numdiff-jacobian-tester.h:104</div></div>\n<div class=\"ttc\" id=\"structaslam_1_1common_1_1NumericalDiffTraits_html\"><div class=\"ttname\"><a href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">aslam::common::NumericalDiffTraits</a></div><div class=\"ttdef\"><b>Definition:</b> numdiff-jacobian-tester.h:213</div></div>\n<div class=\"ttc\" id=\"classaslam_1_1common_1_1NumericalDiff_html\"><div class=\"ttname\"><a href=\"classaslam_1_1common_1_1NumericalDiff.html\">aslam::common::NumericalDiff</a></div><div class=\"ttdoc\">Modified numerical differentiation code from unsupported/Eigen library. </div><div class=\"ttdef\"><b>Definition:</b> numdiff-jacobian-tester.h:126</div></div>\n<div class=\"ttc\" id=\"namespaceaslam_html\"><div class=\"ttname\"><a href=\"namespaceaslam.html\">aslam</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/occupancy__grid__2d_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/occupancy_grid_2d.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">occupancy_grid_2d.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;    </div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1OccupandyGrid2D.html\">   11</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keyword\">using</span> Grid = std::vector&lt;bool&gt;;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>(<span class=\"keywordtype\">int</span> cell_size, <span class=\"keywordtype\">int</span> n_cols, <span class=\"keywordtype\">int</span> n_rows)</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;    : cell_size(cell_size)</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    , n_cols(n_cols)</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    , n_rows(n_rows)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    , occupancy_(n_cols*n_rows, <span class=\"keyword\">false</span>)</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  {}</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> cell_size;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_cols;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> n_rows;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  Grid occupancy_;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> reset() {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    std::fill(occupancy_.begin(), occupancy_.end(), <span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  }</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> size() {</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keywordflow\">return</span> occupancy_.size();</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  }</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> empty() {</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keywordflow\">return</span> occupancy_.empty();</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  }</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isOccupied(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> cell_index)</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  {</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    CHECK_LT(cell_index, occupancy_.size());</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keywordflow\">return</span> occupancy_[cell_index];</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  }</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setOccupied(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> cell_index)</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  {</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    CHECK_LT(cell_index, occupancy_.size());</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    occupancy_[cell_index] = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Derived&gt;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">size_t</span> getCellIndex(<span class=\"keyword\">const</span> Eigen::MatrixBase&lt;Derived&gt;&amp; px)</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  {</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 2, 1);</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">size_t</span><span class=\"keyword\">&gt;</span>((px(1))/cell_size*n_cols</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;                             + (px(0))/cell_size);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  }</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> getCellIndex(<span class=\"keywordtype\">int</span> x, <span class=\"keywordtype\">int</span> y, <span class=\"keywordtype\">int</span> scale = 1)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">size_t</span><span class=\"keyword\">&gt;</span>((scale*y)/cell_size*n_cols</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;                             + (scale*x)/cell_size);</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  }</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> fillWithKeypoints(<span class=\"keyword\">const</span> Keypoints&amp; keypoints)</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    <span class=\"comment\">// TODO(cfo): could be implemented using block operations.</span></div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> i = 0; i &lt; keypoints.cols(); ++i)</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      occupancy_.at(getCellIndex(static_cast&lt;int&gt;(keypoints(0,i)),</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;                                 static_cast&lt;int&gt;(keypoints(1,i)), 1)) = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;};</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1OccupandyGrid2D_html\"><div class=\"ttname\"><a href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></div><div class=\"ttdef\"><b>Definition:</b> occupancy_grid_2d.h:11</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/omni__geometry_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/omni_geometry.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">omni_geometry.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/camera_geometry.h&quot;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/omni_projection.h&quot;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// Omni geometry is strongly typed to enforce mask.</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometry.html\">CameraGeometry</a>&lt;OmniProjection&gt;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  constexpr <span class=\"keyword\">static</span> <span class=\"keywordtype\">size_t</span> kParamNum = 24;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;               <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 5, 1&gt;&amp; polynomial,</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;               <span class=\"keyword\">const</span> Eigen::Vector2d&amp; principal_point,</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;               <span class=\"keyword\">const</span> Eigen::Vector3d&amp; distortion,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;               <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 12, 1&gt;&amp; inverse_polynomial,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;               <span class=\"keyword\">const</span> Eigen::Vector2d&amp; mask_relative_radii);</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"comment\">// Version which does not apply a mask.</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;               <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 5, 1&gt;&amp; polynomial,</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;               <span class=\"keyword\">const</span> Eigen::Vector2d&amp; principal_point,</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;               <span class=\"keyword\">const</span> Eigen::Vector3d&amp; distortion,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;               <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 12, 1&gt;&amp; inverse_polynomial);</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;               <span class=\"keyword\">const</span> Eigen::VectorXd&amp; intrinsics);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1cameras_1_1OmniGeometry.html\">OmniGeometry</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> Eigen::Vector2d kDontMask;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;};</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometry.html\">vk::cameras::CameraGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry.h:12</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1OmniGeometry_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1OmniGeometry.html\">vk::cameras::OmniGeometry</a></div><div class=\"ttdef\"><b>Definition:</b> omni_geometry.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/omni__projection_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/omni_projection.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">omni_projection.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Dense&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/camera_geometry_base.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kInversePolynomialOrder = 12;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">const</span> CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kOmni;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"comment\">// TODO(tcies) Outsource distortion to distortion class?</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1OmniProjection.html\">OmniProjection</a>(<span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 5, 1&gt;&amp; polynomial,</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;                 <span class=\"keyword\">const</span> Eigen::Vector2d&amp; principal_point,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;                 <span class=\"keyword\">const</span> Eigen::Vector3d&amp; distortion,</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;                 <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, kInversePolynomialOrder, 1&gt;&amp;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;                 inverse_polynomial);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keywordtype\">bool</span> backProject3(</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;      Eigen::Vector3d* out_bearing_vector) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordtype\">void</span> project3(</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">double</span> errorMultiplier() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keywordtype\">void</span> print(std::ostream&amp; out) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">enum</span> IntrinsicParameters</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  {</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    kPolinomial0,</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    kPolinomial1,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    kPolinomial2,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    kPolinomial3,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    kPolinomial4,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    kPrincipalPointX,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    kPrincipalPointY</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  };</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"comment\">// Returns the parameters in Vector form:</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"comment\">// [polynomial(0) ... polynomial(4), cx_, cy_]</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  Eigen::VectorXd getIntrinsicParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"comment\">// Returns the distortion parameters</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  Eigen::VectorXd getDistortionParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 5, 1&gt; polynomial_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector2d principal_point_;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 12, 1&gt; inverse_polynomial_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">const</span> Eigen::Matrix2d affine_correction_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keyword\">const</span> Eigen::Matrix2d affine_correction_inverse_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;};</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;}  <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;}  <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1OmniProjection_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1OmniProjection.html\">vk::cameras::OmniProjection</a></div><div class=\"ttdef\"><b>Definition:</b> omni_projection.h:10</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/output__helper_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/include/vikit/output_helper.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cecfdde874a5fd435c34b7d3c386dfd0.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">output_helper.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * output_helper.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: Jan 20, 2013</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: cforster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_broadcaster.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">using</span> Transformation = kindr::minimal::QuatTransformation;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">namespace </span>output_helper {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">using namespace </span><a class=\"code\" href=\"namespacestd.html\">std</a>;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">using namespace </span><a class=\"code\" href=\"namespaceEigen.html\">Eigen</a>;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keywordtype\">void</span> publishTfTransform(</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; stamp,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; frame_id,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; child_frame_id,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    tf::TransformBroadcaster&amp; br);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keywordtype\">void</span> publishPointMarker(</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; pos,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; color,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    ros::Duration lifetime = ros::Duration(0.0));</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keywordtype\">void</span> publishLineMarker(</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; start,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; end,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; color,</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    ros::Duration lifetime = ros::Duration(0.0));</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;<span class=\"keywordtype\">void</span> publishArrowMarker(</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; pos,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; dir,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keywordtype\">double</span> scale,</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; color);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"keywordtype\">void</span> publishHexacopterMarker(</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; frame_id,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; color);</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"keywordtype\">void</span> publishQuadrocopterMarkers(ros::Publisher pub,</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;                        <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; frame_id,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;                        <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;                        <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;                        <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;                        <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;                        <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;                        <span class=\"keyword\">const</span> Vector3d&amp; color);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keywordtype\">void</span> publishCameraMarker(</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; frame_id,</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; color);</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;<span class=\"keywordtype\">void</span> publishFrameMarker(</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    ros::Publisher pub,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    <span class=\"keyword\">const</span> Matrix3d&amp; rot,</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    <span class=\"keyword\">const</span> Vector3d&amp; pos,</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keyword\">const</span> ros::Time&amp; timestamp,</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    <span class=\"keywordtype\">double</span> marker_scale,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    ros::Duration lifetime = ros::Duration(0.0));</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;<span class=\"keywordtype\">void</span> publishGtsamPoseCovariance(</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keyword\">const</span> ros::Publisher&amp; pub,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector3d&amp; mean,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_W_B, <span class=\"comment\">// Body in World-Frame</span></div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 6&gt;&amp; covariance,</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">string</span>&amp; ns,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    <span class=\"keywordtype\">int</span> action,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    <span class=\"keywordtype\">double</span> sigma_scale,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    <span class=\"keyword\">const</span> Vector4d&amp; color);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;} <span class=\"comment\">// namespace output_helper</span></div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"ttc\" id=\"namespaceEigen_html\"><div class=\"ttname\"><a href=\"namespaceEigen.html\">Eigen</a></div></div>\n<div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/pages.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Related Pages</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Related Pages</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all related documentation pages:</div><div class=\"directory\">\n<table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"md_README.html\" target=\"_self\">EVO: Event based Visual Odometry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"md_rqt_evo_README.html\" target=\"_self\">README</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"md_rqt_svo_README.html\" target=\"_self\">README</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"md_svo_vikit_README.html\" target=\"_self\">VIKIT</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"todo.html\" target=\"_self\">Todo List</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"deprecated.html\" target=\"_self\">Deprecated List</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/params__helper_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_ros/include/vikit/params_helper.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9b2859c3cc702bea7061d419fab589ba.html\">vikit_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_3f2bc8ef94161df31aa0fa998a8e5031.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cecfdde874a5fd435c34b7d3c386dfd0.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">params_helper.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * ros_params_helper.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: Feb 22, 2013</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: cforster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\"> * from libpointmatcher_ros</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#ifndef ROS_PARAMS_HELPER_H_</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#define ROS_PARAMS_HELPER_H_</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">inline</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keywordtype\">bool</span> hasParam(<span class=\"keyword\">const</span> std::string&amp; name)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;{</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keywordflow\">return</span> ros::param::has(name);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;}</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;T getParam(<span class=\"keyword\">const</span> std::string&amp; name, <span class=\"keyword\">const</span> T&amp; defaultValue)</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;{</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  T v;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordflow\">if</span>(ros::param::get(name, v))</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    ROS_WARN_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, assigning default: &quot;</span> &lt;&lt; defaultValue);</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordflow\">return</span> defaultValue;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;}</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;T getParam(<span class=\"keyword\">const</span> std::string&amp; name)</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;{</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  T v;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordflow\">if</span>(ros::param::get(name, v))</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  {</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  }</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    ROS_ERROR_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span> &lt;&lt; name);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordflow\">return</span> T();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;}</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;T param(<span class=\"keyword\">const</span> ros::NodeHandle&amp; nh, <span class=\"keyword\">const</span> std::string&amp; name, <span class=\"keyword\">const</span> T&amp; defaultValue)</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;{</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keywordflow\">if</span>(nh.hasParam(name))</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  {</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    T v;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    nh.param&lt;T&gt;(name, v, defaultValue);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  }</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  ROS_WARN_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, assigning default: &quot;</span> &lt;&lt; defaultValue);</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keywordflow\">return</span> defaultValue;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;}</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"preprocessor\">#endif // ROS_PARAMS_HELPER_H_</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/params__helper_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: evo_utils/include/rpg_common_ros/params_helper.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_35a308418869f453df6bdc9dae9af9de.html\">evo_utils</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_5662785bbd659b100e1cfd445838d4ba.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_054b5b29f13da08c38c280177936499d.html\">rpg_common_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">params_helper.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * ros_params_helper.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: Feb 22, 2013</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: cforster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\"> * from libpointmatcher_ros</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common__ros.html\">rpg_common_ros</a> {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> hasParam(<span class=\"keyword\">const</span> std::string&amp; name) { <span class=\"keywordflow\">return</span> ros::param::has(name); }</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;T getParam(<span class=\"keyword\">const</span> std::string&amp; name, <span class=\"keyword\">const</span> T&amp; defaultValue) {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    T v;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    <span class=\"keywordflow\">if</span> (ros::param::get(name, v)) {</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;        ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;        <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    } <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;        ROS_WARN_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;                        &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, assigning default: &quot;</span> &lt;&lt; defaultValue);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keywordflow\">return</span> defaultValue;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;}</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;T getParam(<span class=\"keyword\">const</span> std::string&amp; name) {</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    T v;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keywordflow\">if</span> (ros::param::get(name, v)) {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;        ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;        <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    } <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;        ROS_ERROR_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span> &lt;&lt; name);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keywordflow\">return</span> T();</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;}</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;T param(<span class=\"keyword\">const</span> ros::NodeHandle&amp; nh, <span class=\"keyword\">const</span> std::string&amp; name,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;        <span class=\"keyword\">const</span> T&amp; defaultValue) {</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordflow\">if</span> (nh.hasParam(name)) {</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;        T v;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;        nh.param&lt;T&gt;(name, v, defaultValue);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;        ROS_INFO_STREAM(<span class=\"stringliteral\">&quot;Found parameter: &quot;</span> &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, value: &quot;</span> &lt;&lt; v);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;        <span class=\"keywordflow\">return</span> v;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    ROS_WARN_STREAM(<span class=\"stringliteral\">&quot;Cannot find value for parameter: &quot;</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;                    &lt;&lt; name &lt;&lt; <span class=\"stringliteral\">&quot;, assigning default: &quot;</span> &lt;&lt; defaultValue);</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    <span class=\"keywordflow\">return</span> defaultValue;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;}</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;}  <span class=\"comment\">// namespace rpg_common_ros</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common__ros.html\">rpg_ros</a> = <a class=\"code\" href=\"namespacerpg__common__ros.html\">rpg_common_ros</a>;</div><div class=\"ttc\" id=\"namespacerpg__common__ros_html\"><div class=\"ttname\"><a href=\"namespacerpg__common__ros.html\">rpg_common_ros</a></div><div class=\"ttdef\"><b>Definition:</b> params_helper.hpp:16</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/patch__normal_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/patch_normal.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">patch_normal.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/mini_least_squares_solver.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">class </span>AbstractCamera;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;}</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">class </span>Point;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">struct </span>Feature;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PatchNormal.html\">   25</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a>&lt;2, Eigen::Vector2d, PatchNormal&gt;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;{</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> = <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> patch_halfsize_ = 20;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> patch_size_ = 2*patch_halfsize_;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> patch_area_ = patch_size_*patch_size_;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <a class=\"code\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a>(<span class=\"keyword\">const</span> SolverOptions&amp; solver_options);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1PatchNormal.html\">PatchNormal</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keyword\">static</span> SolverOptions getDefaultSolverOptions();</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">void</span> run(</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;      std::shared_ptr&lt;Feature&gt; ftr_ref,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;      <span class=\"keywordtype\">double</span> depth,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame_cur,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;      Eigen::Vector3d&amp; normal_ref,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      Eigen::Matrix2d&amp; information);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordtype\">void</span> precomputeJacobian();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"comment\">//protected:</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keywordtype\">bool</span> display_;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  cv::Mat img_residuals_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  FeaturePtr ftr_ref_;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">   55</a></span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">depth_</a>;                  </div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">   56</a></span>&#160;  FramePtr <a class=\"code\" href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">frame_ref_</a>;              </div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  FramePtr frame_cur_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  Transformation T_c_r_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  Eigen::Vector3d normal_;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  Eigen::Vector3d update_x_vec_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  Eigen::Vector3d update_y_vec_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"comment\">// cache:</span></div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  Eigen::Matrix&lt;double, 2, patch_area_&gt; jacobian_cache_;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">bool</span> have_ref_patch_cache_;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keywordtype\">double</span> evaluateError(</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <span class=\"keyword\">const</span> State&amp; params,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      GradientVector* g);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keywordtype\">void</span> update(</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;      <span class=\"keyword\">const</span> State&amp; param_old,</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;      State&amp; param_new);</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keywordtype\">void</span> applyPrior(<span class=\"keyword\">const</span> State&amp; current_model);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <span class=\"keywordtype\">void</span> startIteration();</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">void</span> finishIteration();</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;};</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PatchNormal_html_a3e0d5857d012898d6cb810c97b3a9935\"><div class=\"ttname\"><a href=\"classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935\">svo::PatchNormal::frame_ref_</a></div><div class=\"ttdeci\">FramePtr frame_ref_</div><div class=\"ttdoc\">reference frame </div><div class=\"ttdef\"><b>Definition:</b> patch_normal.h:56</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PatchNormal_html_a3f8819885e232809ce767f3f526498b2\"><div class=\"ttname\"><a href=\"classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2\">svo::PatchNormal::depth_</a></div><div class=\"ttdeci\">double depth_</div><div class=\"ttdoc\">depth of the point in the reference frame </div><div class=\"ttdef\"><b>Definition:</b> patch_normal.h:55</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PatchNormal_html\"><div class=\"ttname\"><a href=\"classsvo_1_1PatchNormal.html\">svo::PatchNormal</a></div><div class=\"ttdef\"><b>Definition:</b> patch_normal.h:25</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/patch__score_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/patch_score.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">patch_score.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#if __SSSE3__</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\"># include &lt;tmmintrin.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#ifdef __ARM_NEON__</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\"># include &lt;arm_neon.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">namespace </span>patch_score {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#if __SSSE3__</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">// Horizontal sum of uint16s stored in an XMM register</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> SumXMM_16(__m128i &amp;target)</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;{</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <span class=\"keywordtype\">int</span> sums_store[8];</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  _mm_storeu_si128((__m128i*)sums_store, target);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordflow\">return</span> sums_store[0] + sums_store[1] + sums_store[2] + sums_store[3] +</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    sums_store[4] + sums_store[5] + sums_store[6] + sums_store[7];</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;}</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"comment\">// Horizontal sum of uint32s stored in an XMM register</span></div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> SumXMM_32(__m128i &amp;target)</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;{</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> sums_store[4];</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  _mm_storeu_si128((__m128i*)sums_store, target);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordflow\">return</span> sums_store[0] + sums_store[1] + sums_store[2] + sums_store[3];</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;}</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keywordtype\">int</span> HALF_PATCH_SIZE&gt;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"keyword\">class </span>ZMSSD {</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size_ = 2*HALF_PATCH_SIZE;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_area_ = patch_size_*patch_size_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> threshold_  = 2000*patch_area_;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  uint8_t* ref_patch_;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordtype\">int</span> sumA_, sumAA_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  ZMSSD(uint8_t* ref_patch) :</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    ref_patch_(ref_patch)</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  {</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;<span class=\"preprocessor\">#ifdef __ARM_NEON__</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keywordflow\">if</span>(patch_size_ == 0)</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    {</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;      uint16x8_t tpl_x8;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;      uint16x8_t sumAx8  = vdupq_n_u16(0);</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;      uint32x4_t sumAAx4 = vdupq_n_u32(0);</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;      <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> i=0; i&lt;64; i+=8)</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;      {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;        tpl_x8 = vmovl_u8(vld1_u8(&amp;ref_patch_[i]));</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;        sumAx8 = vaddq_u16(sumAx8, tpl_x8);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;        sumAAx4 = vmlal_u16(sumAAx4, vget_low_u16(tpl_x8), vget_low_u16(tpl_x8));</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;        sumAAx4 = vmlal_u16(sumAAx4, vget_high_u16(tpl_x8), vget_high_u16(tpl_x8));</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      }</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;       uint16x4_t sumAx4 = vpadd_u16(vget_low_u16(sumAx8), vget_high_u16(sumAx8));</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;       sumA_ = vget_lane_u16(sumAx4, 0) + vget_lane_u16(sumAx4, 1)</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;             + vget_lane_u16(sumAx4, 2) + vget_lane_u16(sumAx4, 3);</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;       uint32x2_t sumAAx2 = vpadd_u32(vget_low_u32(sumAAx4), vget_high_u32(sumAAx4));</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;       sumAA_ = vget_lane_u32(sumAAx2, 0) + vget_lane_u32(sumAAx2, 1);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    }</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    {</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;      uint32_t sumA_uint=0, sumAA_uint=0;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;      <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> r = 0; r &lt; patch_area_; r++)</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      {</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;        uint8_t n = ref_patch_[r];</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;        sumA_uint += n;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;        sumAA_uint += n*n;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      }</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;      sumA_ = sumA_uint;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      sumAA_ = sumAA_uint;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    }</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  }</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> threshold() { <span class=\"keywordflow\">return</span> threshold_; }</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  <span class=\"keywordtype\">int</span> computeScore(uint8_t* cur_patch)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    uint32_t sumB_uint = 0;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    uint32_t sumBB_uint = 0;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    uint32_t sumAB_uint = 0;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> r = 0; r &lt; patch_area_; r++)</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    {</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;      <span class=\"keyword\">const</span> uint8_t cur_pixel = cur_patch[r];</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;      sumB_uint  += cur_pixel;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;      sumBB_uint += cur_pixel*cur_pixel;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;      sumAB_uint += cur_pixel * ref_patch_[r];</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    }</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> sumB = sumB_uint;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> sumBB = sumBB_uint;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> sumAB = sumAB_uint;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keywordflow\">return</span> sumAA_ - 2*sumAB + sumBB - (sumA_*sumA_ - 2*sumA_*sumB + sumB*sumB)/patch_area_;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  }</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"keywordtype\">int</span> computeScore(uint8_t* cur_patch, <span class=\"keywordtype\">int</span> stride)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    <span class=\"keywordtype\">int</span> sumB, sumBB, sumAB;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"preprocessor\">#ifdef __SSSE3__</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    <span class=\"keywordflow\">if</span>(patch_size_ == 8)</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    {</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;      <span class=\"comment\">// From PTAM-GPL, Copyright 2008 Isis Innovation Limited</span></div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;      __m128i xImageAsEightBytes;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      __m128i xImageAsWords;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;      __m128i xTemplateAsEightBytes;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;      __m128i xTemplateAsWords;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      __m128i xZero;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      __m128i xImageSums;   <span class=\"comment\">// These sums are 8xuint16</span></div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      __m128i xImageSqSums; <span class=\"comment\">// These sums are 4xint32</span></div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;      __m128i xCrossSums;   <span class=\"comment\">// These sums are 4xint32</span></div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;      __m128i xProduct;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      xImageSums = _mm_setzero_si128();</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      xImageSqSums = _mm_setzero_si128();</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      xCrossSums = _mm_setzero_si128();</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      xZero = _mm_setzero_si128();</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      uint8_t* imagepointer = cur_patch;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      uint8_t* templatepointer = ref_patch_;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keywordtype\">long</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> cur_stride = stride;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      templatepointer += 16;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;      templatepointer += 16;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;      templatepointer += 16;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;      imagepointer += cur_stride;</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;      templatepointer += 16;</div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00212\"></a><span class=\"lineno\">  212</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00213\"></a><span class=\"lineno\">  213</span>&#160;      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);</div><div class=\"line\"><a name=\"l00214\"></a><span class=\"lineno\">  214</span>&#160;      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);</div><div class=\"line\"><a name=\"l00217\"></a><span class=\"lineno\">  217</span>&#160;      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);</div><div class=\"line\"><a name=\"l00218\"></a><span class=\"lineno\">  218</span>&#160;      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);</div><div class=\"line\"><a name=\"l00219\"></a><span class=\"lineno\">  219</span>&#160;      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);</div><div class=\"line\"><a name=\"l00220\"></a><span class=\"lineno\">  220</span>&#160;      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);</div><div class=\"line\"><a name=\"l00221\"></a><span class=\"lineno\">  221</span>&#160;</div><div class=\"line\"><a name=\"l00222\"></a><span class=\"lineno\">  222</span>&#160;      sumB = SumXMM_16(xImageSums);</div><div class=\"line\"><a name=\"l00223\"></a><span class=\"lineno\">  223</span>&#160;      sumAB = SumXMM_32(xCrossSums);</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;      sumBB = SumXMM_32(xImageSqSums);</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;    }</div><div class=\"line\"><a name=\"l00226\"></a><span class=\"lineno\">  226</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00227\"></a><span class=\"lineno\">  227</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00228\"></a><span class=\"lineno\">  228</span>&#160;<span class=\"preprocessor\">#ifdef __ARM_NEON__</span></div><div class=\"line\"><a name=\"l00229\"></a><span class=\"lineno\">  229</span>&#160;    <span class=\"keywordflow\">if</span>(patch_size_ == 8)</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;    {</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;      uint16x8_t img_x8, tpl_x8;</div><div class=\"line\"><a name=\"l00232\"></a><span class=\"lineno\">  232</span>&#160;      uint16x8_t sumBx8  = vdupq_n_u16(0);</div><div class=\"line\"><a name=\"l00233\"></a><span class=\"lineno\">  233</span>&#160;      uint32x4_t sumBBx4 = vdupq_n_u32(0);</div><div class=\"line\"><a name=\"l00234\"></a><span class=\"lineno\">  234</span>&#160;      uint32x4_t sumABx4 = vdupq_n_u32(0);</div><div class=\"line\"><a name=\"l00235\"></a><span class=\"lineno\">  235</span>&#160;      uint8_t* cur_ptr = cur_patch;</div><div class=\"line\"><a name=\"l00236\"></a><span class=\"lineno\">  236</span>&#160;      uint8_t* ref_ptr = ref_patch_;</div><div class=\"line\"><a name=\"l00237\"></a><span class=\"lineno\">  237</span>&#160;      <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> i=0; i&lt;64; i+=8, cur_ptr+=stride, ref_ptr+=8)</div><div class=\"line\"><a name=\"l00238\"></a><span class=\"lineno\">  238</span>&#160;      {</div><div class=\"line\"><a name=\"l00239\"></a><span class=\"lineno\">  239</span>&#160;        <span class=\"comment\">// load first row of image and tpl</span></div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\">  240</span>&#160;        img_x8 = vmovl_u8(vld1_u8(cur_ptr));</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;        tpl_x8 = vmovl_u8(vld1_u8(ref_ptr));</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;        <span class=\"comment\">// sum img</span></div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;        sumBx8 = vaddq_u16(sumBx8, img_x8);</div><div class=\"line\"><a name=\"l00244\"></a><span class=\"lineno\">  244</span>&#160;        <span class=\"comment\">// multiply and sum</span></div><div class=\"line\"><a name=\"l00245\"></a><span class=\"lineno\">  245</span>&#160;        sumBBx4 = vmlal_u16(sumBBx4, vget_low_u16(img_x8), vget_low_u16(img_x8));</div><div class=\"line\"><a name=\"l00246\"></a><span class=\"lineno\">  246</span>&#160;        sumBBx4 = vmlal_u16(sumBBx4, vget_high_u16(img_x8), vget_high_u16(img_x8));</div><div class=\"line\"><a name=\"l00247\"></a><span class=\"lineno\">  247</span>&#160;        <span class=\"comment\">// multiply and sum</span></div><div class=\"line\"><a name=\"l00248\"></a><span class=\"lineno\">  248</span>&#160;        sumABx4 = vmlal_u16(sumABx4, vget_low_u16(tpl_x8), vget_low_u16(img_x8));</div><div class=\"line\"><a name=\"l00249\"></a><span class=\"lineno\">  249</span>&#160;        sumABx4 = vmlal_u16(sumABx4, vget_high_u16(tpl_x8), vget_high_u16(img_x8));</div><div class=\"line\"><a name=\"l00250\"></a><span class=\"lineno\">  250</span>&#160;      }</div><div class=\"line\"><a name=\"l00251\"></a><span class=\"lineno\">  251</span>&#160;      uint16x4_t sumBx4 = vpadd_u16(vget_low_u16(sumBx8), vget_high_u16(sumBx8));</div><div class=\"line\"><a name=\"l00252\"></a><span class=\"lineno\">  252</span>&#160;      sumB = vget_lane_u16(sumBx4, 0) + vget_lane_u16(sumBx4, 1)</div><div class=\"line\"><a name=\"l00253\"></a><span class=\"lineno\">  253</span>&#160;           + vget_lane_u16(sumBx4, 2) + vget_lane_u16(sumBx4, 3);</div><div class=\"line\"><a name=\"l00254\"></a><span class=\"lineno\">  254</span>&#160;</div><div class=\"line\"><a name=\"l00255\"></a><span class=\"lineno\">  255</span>&#160;      uint32x2_t sumBBx2 = vpadd_u32(vget_low_u32(sumBBx4), vget_high_u32(sumBBx4));</div><div class=\"line\"><a name=\"l00256\"></a><span class=\"lineno\">  256</span>&#160;      sumBB = vget_lane_u32(sumBBx2, 0) + vget_lane_u32(sumBBx2, 1);</div><div class=\"line\"><a name=\"l00257\"></a><span class=\"lineno\">  257</span>&#160;</div><div class=\"line\"><a name=\"l00258\"></a><span class=\"lineno\">  258</span>&#160;      uint32x2_t sumABx2 = vpadd_u32(vget_low_u32(sumABx4), vget_high_u32(sumABx4));</div><div class=\"line\"><a name=\"l00259\"></a><span class=\"lineno\">  259</span>&#160;      sumAB = vget_lane_u32(sumABx2, 0) + vget_lane_u32(sumABx2, 1);</div><div class=\"line\"><a name=\"l00260\"></a><span class=\"lineno\">  260</span>&#160;</div><div class=\"line\"><a name=\"l00261\"></a><span class=\"lineno\">  261</span>&#160;    }</div><div class=\"line\"><a name=\"l00262\"></a><span class=\"lineno\">  262</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00263\"></a><span class=\"lineno\">  263</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00264\"></a><span class=\"lineno\">  264</span>&#160;    {</div><div class=\"line\"><a name=\"l00265\"></a><span class=\"lineno\">  265</span>&#160;      uint32_t sumB_uint = 0;</div><div class=\"line\"><a name=\"l00266\"></a><span class=\"lineno\">  266</span>&#160;      uint32_t sumBB_uint = 0;</div><div class=\"line\"><a name=\"l00267\"></a><span class=\"lineno\">  267</span>&#160;      uint32_t sumAB_uint = 0;</div><div class=\"line\"><a name=\"l00268\"></a><span class=\"lineno\">  268</span>&#160;      <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> y=0, r=0; y &lt; patch_size_; ++y)</div><div class=\"line\"><a name=\"l00269\"></a><span class=\"lineno\">  269</span>&#160;      {</div><div class=\"line\"><a name=\"l00270\"></a><span class=\"lineno\">  270</span>&#160;        uint8_t* cur_patch_ptr = cur_patch + y*stride;</div><div class=\"line\"><a name=\"l00271\"></a><span class=\"lineno\">  271</span>&#160;        <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> x=0; x &lt; patch_size_; ++x, ++r)</div><div class=\"line\"><a name=\"l00272\"></a><span class=\"lineno\">  272</span>&#160;        {</div><div class=\"line\"><a name=\"l00273\"></a><span class=\"lineno\">  273</span>&#160;          <span class=\"keyword\">const</span> uint8_t cur_px = cur_patch_ptr[x];</div><div class=\"line\"><a name=\"l00274\"></a><span class=\"lineno\">  274</span>&#160;          sumB_uint  += cur_px;</div><div class=\"line\"><a name=\"l00275\"></a><span class=\"lineno\">  275</span>&#160;          sumBB_uint += cur_px * cur_px;</div><div class=\"line\"><a name=\"l00276\"></a><span class=\"lineno\">  276</span>&#160;          sumAB_uint += cur_px * ref_patch_[r];</div><div class=\"line\"><a name=\"l00277\"></a><span class=\"lineno\">  277</span>&#160;        }</div><div class=\"line\"><a name=\"l00278\"></a><span class=\"lineno\">  278</span>&#160;      }</div><div class=\"line\"><a name=\"l00279\"></a><span class=\"lineno\">  279</span>&#160;      sumB = sumB_uint;</div><div class=\"line\"><a name=\"l00280\"></a><span class=\"lineno\">  280</span>&#160;      sumBB = sumBB_uint;</div><div class=\"line\"><a name=\"l00281\"></a><span class=\"lineno\">  281</span>&#160;      sumAB = sumAB_uint;</div><div class=\"line\"><a name=\"l00282\"></a><span class=\"lineno\">  282</span>&#160;    }</div><div class=\"line\"><a name=\"l00283\"></a><span class=\"lineno\">  283</span>&#160;    <span class=\"keywordflow\">return</span> sumAA_ - 2*sumAB + sumBB - (sumA_*sumA_ - 2*sumA_*sumB + sumB*sumB)/patch_area_;</div><div class=\"line\"><a name=\"l00284\"></a><span class=\"lineno\">  284</span>&#160;  }</div><div class=\"line\"><a name=\"l00285\"></a><span class=\"lineno\">  285</span>&#160;};</div><div class=\"line\"><a name=\"l00286\"></a><span class=\"lineno\">  286</span>&#160;</div><div class=\"line\"><a name=\"l00287\"></a><span class=\"lineno\">  287</span>&#160;} <span class=\"comment\">// namespace patch_score</span></div><div class=\"line\"><a name=\"l00288\"></a><span class=\"lineno\">  288</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"line\"><a name=\"l00289\"></a><span class=\"lineno\">  289</span>&#160;</div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/patch__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/patch_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">patch_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/imgproc/imgproc.hpp&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">namespace </span>patch_utils {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> createPatchFromPatchWithBorder(</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    <span class=\"keyword\">const</span> uint8_t* <span class=\"keyword\">const</span> patch_with_border,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size,</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    uint8_t* patch)</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;{</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  uint8_t* patch_ptr = patch;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> y=1; y&lt;patch_size+1; ++y, patch_ptr += patch_size)</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  {</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keyword\">const</span> uint8_t* ref_patch_border_ptr = patch_with_border + y*(patch_size+2) + 1;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> x=0; x&lt;patch_size; ++x)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;      patch_ptr[x] = ref_patch_border_ptr[x];</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  }</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;}</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> patchToMat(</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keyword\">const</span> uint8_t* <span class=\"keyword\">const</span> patch_data,</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> patch_width,</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    cv::Mat* img)</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;{</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  CHECK_NOTNULL(img);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  *img = cv::Mat(patch_width, patch_width, CV_8UC1);</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  std::memcpy(img-&gt;data, patch_data, patch_width*patch_width);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;}</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> normalizeAndUpsamplePatch(</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; patch,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"keywordtype\">double</span> upsample_factor,</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    cv::Mat* img_rgb)</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;{</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  CHECK_NOTNULL(img_rgb);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  cv::Mat patch_normalized;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keywordflow\">if</span>(patch.type() == CV_32FC1)</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  {</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keywordtype\">double</span> minval, maxval;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    cv::minMaxLoc(patch, &amp;minval, &amp;maxval);</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    patch_normalized = (patch - minval) / (maxval - minval);</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  }</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span>(patch.type() == CV_8UC1)</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  {</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    patch.convertTo(patch_normalized, CV_32FC1);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    <span class=\"keywordtype\">double</span> minval, maxval;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    cv::minMaxLoc(patch_normalized, &amp;minval, &amp;maxval);</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    patch_normalized = (patch_normalized - minval) / (maxval - minval);</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  }</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  {</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    LOG(FATAL) &lt;&lt; <span class=\"stringliteral\">&quot;Image Type not supported.&quot;</span>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  }</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  cv::Mat img_gray;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  cv::resize(patch_normalized, img_gray, cv::Size(0,0), upsample_factor, upsample_factor, cv::INTER_NEAREST);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  *img_rgb = cv::Mat(img_gray.size(), CV_8UC3);</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  cv::cvtColor(img_gray, *img_rgb, cv::COLOR_GRAY2RGB);</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;}</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> concatenatePatches(</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    std::vector&lt;cv::Mat&gt; patches,</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    cv::Mat* result_rgb)</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;{</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> n = patches.size();</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> width = patches.at(0).cols;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> height = patches.at(0).rows;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  *result_rgb = cv::Mat(height, n*width, CV_32FC3);</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">size_t</span> i = 0; i &lt; n; ++i)</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    CHECK_EQ(width, patches[i].cols);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    CHECK_EQ(height, patches[i].rows);</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    cv::Mat roi(*result_rgb, cv::Rect(i*width, 0, width, height));</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    cv::Mat patch_rgb(patches[i].size(), CV_32FC3);</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    cv::cvtColor(patches[i], patch_rgb, cv::COLOR_GRAY2RGB);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    patch_rgb.copyTo(roi);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  }</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;}</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;} <span class=\"comment\">// namespace patch_utils</span></div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/patch__warp_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_direct/include/svo/direct/patch_warp.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_2b883add7b135c9e5e3bfc8f505b3884.html\">svo_direct</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8f491c12e2a100af2306a4d4f8aa2ecb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2ff6cdea7b8bbaa0dd52696e21837862.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be044225ce3721f38f90ce22572be618.html\">direct</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">patch_warp.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">// Forward declarations.</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">class </span>FeatureWrapper;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacesvo_1_1warp.html\">   21</a></span>&#160;<span class=\"keyword\">namespace </span>warp {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">using</span> AffineTransformation2 = Eigen::Matrix2d;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keywordtype\">void</span> getWarpMatrixAffine(</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keyword\">const</span> CameraPtr&amp; cam_ref,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keyword\">const</span> CameraPtr&amp; cam_cur,</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;Keypoint&gt;&amp; px_ref,</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;BearingVector&gt;&amp; f_ref,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_ref,</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_ref,</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    AffineTransformation2* A_cur_ref);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keywordtype\">void</span> getWarpMatrixAffineHomography(</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keyword\">const</span> CameraPtr&amp; cam_ref,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> CameraPtr&amp; cam_cur,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> Keypoint&amp; px_ref,</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keyword\">const</span> BearingVector&amp; f_ref,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keyword\">const</span> BearingVector&amp; normal_ref,</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> depth_ref,</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keyword\">const</span> Transformation T_cur_ref,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_ref,</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    AffineTransformation2&amp; A_cur_ref);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"keywordtype\">int</span> getBestSearchLevel(</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> AffineTransformation2&amp; A_cur_ref,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keywordtype\">bool</span> warpAffine(</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keyword\">const</span> AffineTransformation2&amp; A_cur_ref,</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img_ref,</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;Keypoint&gt;&amp; px_ref,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_ref,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_cur,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    uint8_t* patch);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"keywordtype\">bool</span> warpPixelwise(</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; cur_frame,</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; ref_ftr,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_ref,</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> level_cur,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    uint8_t* patch);</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"keywordtype\">void</span> createPatchNoWarp(</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    <span class=\"keyword\">const</span> Eigen::Vector2i&amp; px,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    uint8_t* patch);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keywordtype\">void</span> createPatchNoWarpInterpolated(</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    <span class=\"keyword\">const</span> cv::Mat&amp; img,</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;Keypoint&gt;&amp; px,</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> halfpatch_size,</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    uint8_t* patch);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;} <span class=\"comment\">// namespace warp</span></div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/path__utils_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/path_utils.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">path_utils.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span>path_utils {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// usage: getFileDir(__FILE__)</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">inline</span> std::string getBaseName(<span class=\"keyword\">const</span> std::string&amp; filename)</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  <span class=\"keyword\">const</span> std::string separator = <span class=\"stringliteral\">&quot;/&quot;</span>;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  std::size_t last_separator = filename.find_last_of(separator);</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keywordflow\">if</span>(last_separator == std::string::npos)</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;    <span class=\"keywordflow\">return</span> std::string();</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  }</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keywordflow\">return</span> filename.substr(0, last_separator);</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;}</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;} <span class=\"comment\">// namespace path_utils</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/performance__monitor_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/performance_monitor.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">performance_monitor.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * performance_monitor.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: Aug 26, 2011</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: Christian Forster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_PERFORMANCE_MONITOR_H</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#define VIKIT_PERFORMANCE_MONITOR_H</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;map&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/timer.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;{</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structvk_1_1LogItem.html\">   20</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structvk_1_1LogItem.html\">LogItem</a></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;{</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keywordtype\">double</span> data;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keywordtype\">bool</span>   <span class=\"keyword\">set</span>;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;};</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1PerformanceMonitor.html\">   26</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;{</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <a class=\"code\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a>();</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1PerformanceMonitor.html\">PerformanceMonitor</a>();</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keywordtype\">void</span> init(<span class=\"keyword\">const</span> std::string&amp; trace_name, <span class=\"keyword\">const</span> std::string&amp; trace_dir);</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keywordtype\">void</span> addTimer(<span class=\"keyword\">const</span> std::string&amp; name);</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">void</span> addLog(<span class=\"keyword\">const</span> std::string&amp; name);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">void</span> writeToFile();</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">void</span> startTimer(<span class=\"keyword\">const</span> std::string&amp; name);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">void</span> stopTimer(<span class=\"keyword\">const</span> std::string&amp; name);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keywordtype\">double</span> getTime(<span class=\"keyword\">const</span> std::string&amp; name) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">void</span> log(<span class=\"keyword\">const</span> std::string&amp; name, <span class=\"keywordtype\">double</span> data);</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  std::map&lt;std::string, Timer&gt;      timers_;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  std::map&lt;std::string, LogItem&gt;    logs_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  std::string                       trace_name_;        <span class=\"comment\">//&lt;! name of the thread that started the performance monitor</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  std::string                       trace_dir_;         <span class=\"comment\">//&lt;! directory where the logfiles are saved</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  std::ofstream                     ofs_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">void</span> trace();</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordtype\">void</span> traceHeader();</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;};</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_PERFORMANCE_MONITOR_H</span></div><div class=\"ttc\" id=\"classvk_1_1PerformanceMonitor_html\"><div class=\"ttname\"><a href=\"classvk_1_1PerformanceMonitor.html\">vk::PerformanceMonitor</a></div><div class=\"ttdef\"><b>Definition:</b> performance_monitor.h:26</div></div>\n<div class=\"ttc\" id=\"structvk_1_1LogItem_html\"><div class=\"ttname\"><a href=\"structvk_1_1LogItem.html\">vk::LogItem</a></div><div class=\"ttdef\"><b>Definition:</b> performance_monitor.h:20</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/pinhole__projection_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/pinhole_projection.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">pinhole_projection.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/no_distortion.h&quot;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &quot;vikit/cameras/camera_geometry_base.h&quot;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">   12</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;{</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">typedef</span> Distortion distortion_t;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">const</span> CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kPinhole;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a>(</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;      <span class=\"keywordtype\">double</span> fx, <span class=\"keywordtype\">double</span> fy, <span class=\"keywordtype\">double</span> cx, <span class=\"keywordtype\">double</span> cy, distortion_t distortion);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"comment\">// Intrinsic parameters ordering: fu, fv, cu, cv</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a>(<span class=\"keyword\">const</span> Eigen::VectorXd&amp; intrinsics, distortion_t distortion);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"comment\">// Computes bearing vector from pixel coordinates. Z-component of the returned</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"comment\">// bearing vector is 1. IMPORTANT: returned vector is NOT of unit length!</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordtype\">bool</span> backProject3(</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;      Eigen::Vector3d* out_point_3d) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"comment\">// Computes pixel coordinates from bearing vector.</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">void</span> project3(</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;        <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;        Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;        Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point) <span class=\"keyword\">const</span> ;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"comment\">// Returns focal length (transforms unit plane error to pixel error).</span></div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keywordtype\">double</span> errorMultiplier() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keywordtype\">double</span> getAngleError(<span class=\"keywordtype\">double</span> img_err) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"comment\">// Focal length will be width / 2, thus corresponding to a 90deg field of</span></div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"comment\">// view.</span></div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1PinholeProjection.html\">PinholeProjection&lt;Distortion&gt;</a> createTestProjection(</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> image_width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> image_height);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">const</span> T* distortion() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keywordtype\">void</span> print(std::ostream&amp; out) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">enum</span> IntrinsicParameters</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  {</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    kFocalLengthX,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    kFocalLengthY,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    kPricipalPointX,</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    kPrincipalPointY</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  };</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"comment\">// Returns the intrinsic Parameters in vectof of form</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"comment\">// [fx, fy, cx, cy]</span></div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  Eigen::VectorXd getIntrinsicParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"comment\">// returns the distortion Parameters of the underlying distortion model</span></div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  Eigen::VectorXd getDistortionParameters() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">double</span> fx_ = 1; <span class=\"comment\">// Focal length x.</span></div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keywordtype\">double</span> fy_ = 1; <span class=\"comment\">// Focal length y.</span></div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keywordtype\">double</span> fx_inv_ = 1; <span class=\"comment\">// Inverse focal length x</span></div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keywordtype\">double</span> fy_inv_ = 1; <span class=\"comment\">// Inverse focal length y</span></div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  <span class=\"keywordtype\">double</span> cx_ = 0; <span class=\"comment\">// Principle point x.</span></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">double</span> cy_ = 0; <span class=\"comment\">// Principle point y.</span></div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  distortion_t distortion_;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;};</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/implementation/pinhole_projection.hpp&gt;</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1PinholeProjection_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1PinholeProjection.html\">vk::cameras::PinholeProjection</a></div><div class=\"ttdef\"><b>Definition:</b> pinhole_projection.h:12</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/pinhole__projection_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/implementation/pinhole_projection.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d384eab21aaa23c4b65ee34b4c32ed1c.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">pinhole_projection.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/cameras/pinhole_projection.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;PinholeProjection&lt;Distortion&gt;::PinholeProjection(</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;    <span class=\"keywordtype\">double</span> fx, <span class=\"keywordtype\">double</span> fy, <span class=\"keywordtype\">double</span> cx, <span class=\"keywordtype\">double</span> cy, distortion_t distortion)</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;  : fx_(fx), fy_(fy), fx_inv_(1.0/fx_), fy_inv_(1.0/fy_)</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  , cx_(cx), cy_(cy), distortion_(distortion)</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;{}</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;PinholeProjection&lt;Distortion&gt;::PinholeProjection(</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;    <span class=\"keyword\">const</span> Eigen::VectorXd&amp; intrinsics, distortion_t distortion)</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  : distortion_(distortion)</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;{</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  CHECK(intrinsics.size() == 4);</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  fx_ = intrinsics(0);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  fy_ = intrinsics(1);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  cx_ = intrinsics(2);</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  cy_ = intrinsics(3);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  fx_inv_ = 1.0/fx_;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  fy_inv_ = 1.0/fy_;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;}</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keywordtype\">bool</span> PinholeProjection&lt;Distortion&gt;::backProject3(</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector2d&gt;&amp; keypoint,</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    Eigen::Vector3d* out_point_3d)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">double</span> x = (keypoint[0]-cx_)*fx_inv_;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordtype\">double</span> y = (keypoint[1]-cy_)*fy_inv_;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  distortion_.undistort(x, y);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  (*out_point_3d)[0] = x;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  (*out_point_3d)[1] = y;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  (*out_point_3d)[2] = 1.0;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;}</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"keywordtype\">void</span> PinholeProjection&lt;Distortion&gt;::project3(</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Eigen::Vector3d&gt;&amp; point_3d,</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    Eigen::Vector2d* out_keypoint,</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    Eigen::Matrix&lt;double, 2, 3&gt;* out_jacobian_point)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv = 1 / point_3d(2);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"comment\">// TODO(tcies) precalced member?</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">const</span> Eigen::DiagonalMatrix&lt;double, 2&gt; focal_matrix(fx_, fy_);</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keyword\">const</span> Eigen::Vector2d uv = point_3d.head&lt;2&gt;() * z_inv;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  (*out_keypoint) =</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      focal_matrix * distortion_.distort(uv) + Eigen::Vector2d(cx_, cy_);</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"keywordflow\">if</span>(out_jacobian_point)</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  {</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    Eigen::Matrix&lt;double, 2, 3&gt; duv_dxy;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    duv_dxy.leftCols&lt;2&gt;() = Eigen::Matrix2d::Identity() * z_inv;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    duv_dxy.rightCols&lt;1&gt;() = - point_3d.head&lt;2&gt;() * z_inv * z_inv;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    (*out_jacobian_point) = focal_matrix * distortion_.jacobian(uv) * duv_dxy;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  }</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;}</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"keywordtype\">double</span> PinholeProjection&lt;Distortion&gt;::errorMultiplier()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordflow\">return</span> std::abs(fx_);</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;}</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keywordtype\">double</span> PinholeProjection&lt;Distortion&gt;::getAngleError(<span class=\"keywordtype\">double</span> img_err)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordflow\">return</span> std::atan(img_err/(2.0*fx_)) + std::atan(img_err/(2.0*fy_));</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;}</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;PinholeProjection&lt;Distortion&gt;</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;PinholeProjection&lt;Distortion&gt;::createTestProjection(</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> image_width, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> image_height) {</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordflow\">return</span> PinholeProjection(</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      image_width / 2, image_width / 2, image_width / 2, image_height / 2,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      Distortion::createTestDistortion());</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;}</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;<span class=\"keyword\">const</span> T* PinholeProjection&lt;Distortion&gt;::distortion()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">dynamic_cast&lt;</span><span class=\"keyword\">const </span>T*<span class=\"keyword\">&gt;</span>(&amp;distortion_);</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;}</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;<span class=\"keywordtype\">void</span> PinholeProjection&lt;Distortion&gt;::print(std::ostream&amp; out)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  out &lt;&lt; <span class=\"stringliteral\">&quot;  Projection = Pinhole&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  out &lt;&lt; <span class=\"stringliteral\">&quot;  Focal length = (&quot;</span> &lt;&lt; fx_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; fy_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  out &lt;&lt; <span class=\"stringliteral\">&quot;  Principal point = (&quot;</span> &lt;&lt; cx_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; cy_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span> &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  distortion_.print(out);</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;}</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;Eigen::VectorXd PinholeProjection&lt;Distortion&gt;::getIntrinsicParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  Eigen::VectorXd intrinsics(4);</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  intrinsics(0) = fx_;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  intrinsics(1) = fy_;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  intrinsics(2) = cx_;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  intrinsics(3) = cy_;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"keywordflow\">return</span> intrinsics;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;}</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> Distortion&gt;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;Eigen::VectorXd PinholeProjection&lt;Distortion&gt;::getDistortionParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keywordflow\">return</span> distortion_.getDistortionParameters();</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;}</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/point_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/point.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">point.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;array&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;atomic&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PointIdProvider.html\">   22</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;{</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <a class=\"code\" href=\"classsvo_1_1PointIdProvider.html\">PointIdProvider</a>() = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> getNewPointId()</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    <span class=\"keywordflow\">return</span> last_id_.fetch_add(1);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  }</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;   <span class=\"keyword\">static</span> std::atomic&lt;int&gt; last_id_;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;};</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1KeypointIdentifier.html\">   36</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;{</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  FrameWeakPtr frame;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">int</span> frame_id;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordtype\">size_t</span> keypoint_index_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <a class=\"code\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a>(<span class=\"keyword\">const</span> FramePtr&amp; _frame, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> _feature_index);</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> operator ==(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a>&amp; other)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    CHECK(frame.lock() &amp;&amp; other.frame.lock());</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordflow\">return</span> frame.lock().get() == other.frame.lock().get() &amp;&amp;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;        frame_id == other.frame_id &amp;&amp; keypoint_index_ == other.keypoint_index_;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  }</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;};</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keyword\">using</span> KeypointIdentifierList = std::vector&lt;KeypointIdentifier&gt;;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"keyword\">using</span> Matrix23d = Eigen::Matrix&lt;double, 2, 3&gt;;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html\">   55</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;{</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"comment\">// observation saves frame-id and pointer to feature</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keyword\">typedef</span> std::vector&lt;KeypointIdentifier&gt; KeypointIdentifierList;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">enum</span> PointType {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    TYPE_EDGELET_SEED,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    TYPE_CORNER_SEED,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    TYPE_EDGELET,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    TYPE_CORNER</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  };</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">   70</a></span>&#160;  <span class=\"keywordtype\">int</span>           <a class=\"code\" href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">id_</a>;                       </div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">   71</a></span>&#160;  Position      <a class=\"code\" href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">pos_</a>;                      </div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">   72</a></span>&#160;  KeypointIdentifierList  <a class=\"code\" href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">obs_</a>;                      </div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">   73</a></span>&#160;  Eigen::Vector3d      <a class=\"code\" href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">normal_</a>;                   </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">   74</a></span>&#160;  Eigen::Matrix2d      <a class=\"code\" href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">normal_information_</a>;       </div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0\">   75</a></span>&#160;  <span class=\"keywordtype\">bool</span>          normal_set_ = <span class=\"keyword\">false</span>;       </div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a\">   76</a></span>&#160;  uint64_t      last_published_ts_ = 0;    </div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">   77</a></span>&#160;  std::array&lt;int, 8&gt; <a class=\"code\" href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">last_projected_kf_id_</a>;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a\">   78</a></span>&#160;  PointType     type_ = TYPE_CORNER;       </div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6\">   79</a></span>&#160;  <span class=\"keywordtype\">int</span>           n_failed_reproj_ = 0;      </div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e\">   80</a></span>&#160;  <span class=\"keywordtype\">int</span>           n_succeeded_reproj_ = 0;   </div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc\">   81</a></span>&#160;  <span class=\"keywordtype\">int</span>           last_structure_optim_ = 0; </div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"comment\">// bundle adjustment:</span></div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b\">   84</a></span>&#160;  <span class=\"keywordtype\">bool</span>          in_ba_graph_ = <span class=\"keyword\">false</span>;     </div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad\">   85</a></span>&#160;  int64_t       last_ba_update_ = -1;     </div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; pos);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>, <span class=\"keyword\">const</span> Eigen::Vector3d&amp; pos);</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>();</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"comment\">// no copy</span></div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>&amp; operator=(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Point.html\">Point</a>&amp;) = <span class=\"keyword\">delete</span>;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  <span class=\"keywordtype\">void</span> addObservation(<span class=\"keyword\">const</span> FramePtr&amp; frame, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> feature_index);</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keywordtype\">void</span> removeObservation(<span class=\"keywordtype\">int</span> frame_id);</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keywordtype\">void</span> initNormal();</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  <span class=\"keywordtype\">bool</span> getCloseViewObs(<span class=\"keyword\">const</span> Eigen::Vector3d&amp; pos, FramePtr&amp; ref_frame, <span class=\"keywordtype\">size_t</span>&amp; ref_feature_index) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordtype\">double</span> getTriangulationParallax() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  FramePtr getSeedFrame() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">  119</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">nRefs</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> obs_.size(); }</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"keywordtype\">bool</span> triangulateLinear();</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keywordtype\">void</span> updateHessianGradientUnitPlane(</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_f,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_f_w,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      Eigen::Matrix3d&amp; A,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      Eigen::Vector3d&amp; b,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      <span class=\"keywordtype\">double</span>&amp; new_chi2);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  <span class=\"keywordtype\">void</span> updateHessianGradientUnitSphere(</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> Eigen::Ref&lt;BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_f,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_f_w,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      Eigen::Matrix3d&amp; A,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      Eigen::Vector3d&amp; b,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;      <span class=\"keywordtype\">double</span>&amp; new_chi2);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">void</span> optimize(<span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> n_iter, <span class=\"keywordtype\">bool</span> using_bearing_vector=<span class=\"keyword\">false</span>);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  <span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> std::string&amp; s = <span class=\"stringliteral\">&quot;Point:&quot;</span>) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">  149</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">id</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> id_; }</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">  152</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> Eigen::Vector3d&amp; <a class=\"code\" href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">pos</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> pos_; }</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">  155</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> PointType&amp; <a class=\"code\" href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">type</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> type_; }</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">  158</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">jacobian_xyz2uv</a>(</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_f,</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_f_w,</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;      svo::Matrix23d&amp; point_jac)</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;  {</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv = 1.0/p_in_f[2];</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> z_inv_sq = z_inv*z_inv;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;    point_jac(0, 0) = z_inv;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;    point_jac(0, 1) = 0.0;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;    point_jac(0, 2) = -p_in_f[0] * z_inv_sq;</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;    point_jac(1, 0) = 0.0;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;    point_jac(1, 1) = z_inv;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;    point_jac(1, 2) = -p_in_f[1] * z_inv_sq;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;    point_jac = - point_jac * R_f_w;</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;  }</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">  175</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">jacobian_xyz2f</a>(</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; p_in_f,</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix3d&amp; R_f_w,</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;      Eigen::Matrix3d&amp; point_jac)</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;  {</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;    Eigen::Matrix3d J_normalize;</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    <span class=\"keywordtype\">double</span> x2 = p_in_f[0]*p_in_f[0];</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;    <span class=\"keywordtype\">double</span> y2 = p_in_f[1]*p_in_f[1];</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;    <span class=\"keywordtype\">double</span> z2 = p_in_f[2]*p_in_f[2];</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;    <span class=\"keywordtype\">double</span> xy = p_in_f[0]*p_in_f[1];</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;    <span class=\"keywordtype\">double</span> yz = p_in_f[1]*p_in_f[2];</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    <span class=\"keywordtype\">double</span> zx = p_in_f[2]*p_in_f[0];</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;    J_normalize &lt;&lt; y2+z2, -xy, -zx,</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;        -xy, x2+z2, -yz,</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;        -zx, -yz, x2+y2;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    J_normalize *= 1.0 / std::pow(x2+y2+z2, 1.5);</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;    point_jac = (-1.0) * J_normalize * R_f_w;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;  }</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;};</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacestd.html\">std</a> {</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;<span class=\"keyword\">inline</span> ostream&amp; operator &lt;&lt;(ostream&amp; stream, <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>&amp; <span class=\"keywordtype\">id</span>)</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;{</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;  stream &lt;&lt; <span class=\"stringliteral\">&quot;(&quot;</span> &lt;&lt; <span class=\"keywordtype\">id</span>.frame_id &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; <span class=\"keywordtype\">id</span>.keypoint_index_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span>;</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;  <span class=\"keywordflow\">return</span> stream;</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;}</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;}  <span class=\"comment\">// namespace std</span></div><div class=\"ttc\" id=\"classsvo_1_1Point_html_ac2ddc680bb87e76fc38db6839f9178b5\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5\">svo::Point::pos_</a></div><div class=\"ttdeci\">Position pos_</div><div class=\"ttdoc\">3d pos of the point in the world coordinate frame. </div><div class=\"ttdef\"><b>Definition:</b> point.h:71</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_aff310168138bfa71fa520726378179f6\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6\">svo::Point::id</a></div><div class=\"ttdeci\">int id() const</div><div class=\"ttdoc\">Return unique point identifier. </div><div class=\"ttdef\"><b>Definition:</b> point.h:149</div></div>\n<div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PointIdProvider_html\"><div class=\"ttname\"><a href=\"classsvo_1_1PointIdProvider.html\">svo::PointIdProvider</a></div><div class=\"ttdoc\">Thread-safe point-ID provider. </div><div class=\"ttdef\"><b>Definition:</b> point.h:22</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1KeypointIdentifier_html\"><div class=\"ttname\"><a href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></div><div class=\"ttdef\"><b>Definition:</b> point.h:36</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_aafc301b3b365b5de22a372eac0cfafd6\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6\">svo::Point::normal_information_</a></div><div class=\"ttdeci\">Eigen::Matrix2d normal_information_</div><div class=\"ttdoc\">Inverse covariance matrix of normal estimation. </div><div class=\"ttdef\"><b>Definition:</b> point.h:74</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a110e395d01722c71aefd894a4ae1d684\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684\">svo::Point::jacobian_xyz2uv</a></div><div class=\"ttdeci\">static void jacobian_xyz2uv(const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, svo::Matrix23d &amp;point_jac)</div><div class=\"ttdoc\">Jacobian of point projection on unit plane (focal length = 1) in frame (f). </div><div class=\"ttdef\"><b>Definition:</b> point.h:158</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a32033b60c3cbfa947f315d12ccc8f850\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850\">svo::Point::last_projected_kf_id_</a></div><div class=\"ttdeci\">std::array&lt; int, 8 &gt; last_projected_kf_id_</div><div class=\"ttdoc\">Flag for the reprojection: don&amp;#39;t reproject a pt twice in the same camera. </div><div class=\"ttdef\"><b>Definition:</b> point.h:77</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_ad3a64907785b9e2feb5e838ea5741f5c\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c\">svo::Point::type</a></div><div class=\"ttdeci\">const PointType &amp; type() const</div><div class=\"ttdoc\">Return type of point. </div><div class=\"ttdef\"><b>Definition:</b> point.h:155</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a9a6552266bfced00a450c7f4dbc0be25\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25\">svo::Point::pos</a></div><div class=\"ttdeci\">const Eigen::Vector3d &amp; pos() const</div><div class=\"ttdoc\">3D position of point in world frame. </div><div class=\"ttdef\"><b>Definition:</b> point.h:152</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a468fc89330be6299070f853eecf78cac\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac\">svo::Point::obs_</a></div><div class=\"ttdeci\">KeypointIdentifierList obs_</div><div class=\"ttdoc\">References to keyframes which observe the point. </div><div class=\"ttdef\"><b>Definition:</b> point.h:72</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a1239a736f175ba2f461ed26f661dfcbf\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf\">svo::Point::nRefs</a></div><div class=\"ttdeci\">size_t nRefs() const</div><div class=\"ttdoc\">Get number of observations. </div><div class=\"ttdef\"><b>Definition:</b> point.h:119</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a14bf6a380b2da4ff24446503dc724b00\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00\">svo::Point::jacobian_xyz2f</a></div><div class=\"ttdeci\">static void jacobian_xyz2f(const Eigen::Vector3d &amp;p_in_f, const Eigen::Matrix3d &amp;R_f_w, Eigen::Matrix3d &amp;point_jac)</div><div class=\"ttdoc\">Jacobian of point to unit bearing vector. </div><div class=\"ttdef\"><b>Definition:</b> point.h:175</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html\">svo::Point</a></div><div class=\"ttdoc\">A 3D point on the surface of the scene. </div><div class=\"ttdef\"><b>Definition:</b> point.h:55</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_a4dc25c9a96296984265b1a3a510b8f19\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19\">svo::Point::id_</a></div><div class=\"ttdeci\">int id_</div><div class=\"ttdoc\">Unique ID of the point. </div><div class=\"ttdef\"><b>Definition:</b> point.h:70</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Point_html_aed0f446f516bf46e5e17e6ebbec1ab06\"><div class=\"ttname\"><a href=\"classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06\">svo::Point::normal_</a></div><div class=\"ttdeci\">Eigen::Vector3d normal_</div><div class=\"ttdoc\">Surface normal at point. </div><div class=\"ttdef\"><b>Definition:</b> point.h:73</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/pose-types_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/pose-types.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">pose-types.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef ASLAM_COMMON_POSE_TYPES_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define ASLAM_COMMON_POSE_TYPES_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/memory.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/position.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/rotation-quaternion.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceaslam.html\">aslam</a> {</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::QuatTransformation Transformation;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">typedef</span> Aligned&lt;std::vector, Transformation&gt;::type TransformationVector;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::RotationQuaternion Quaternion;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::AngleAxis AngleAxis;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">typedef</span> kindr::minimal::Position Position3D;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">// Types used in ceres error terms, where templating for Jet types</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">// is necessary.</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar&gt;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">using</span> QuaternionTemplate = kindr::minimal::RotationQuaternionTemplate&lt;Scalar&gt;;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar&gt;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">using</span> PositionTemplate = kindr::minimal::PositionTemplate&lt;Scalar&gt;;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;}  <span class=\"comment\">// namespace aslam</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"preprocessor\">#endif  // ASLAM_COMMON_POSE_TYPES_H_</span></div><div class=\"ttc\" id=\"namespaceaslam_html\"><div class=\"ttname\"><a href=\"namespaceaslam.html\">aslam</a></div><div class=\"ttdef\"><b>Definition:</b> memory.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/pose__optimizer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/pose_optimizer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">pose_optimizer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/mini_least_squares_solver.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/robust_cost.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PoseOptimizer.html\">   20</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a>&lt;6, Transformation, PoseOptimizer&gt;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;{</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">ScaleEstimator</a> = <a class=\"code\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a>;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">RobustWeightFunction</a> = <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a>;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <span class=\"keyword\">using</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> = <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;PoseOptimizer&gt; Ptr;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double,6,6&gt; Matrix6d;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double,2,6&gt; Matrix26d;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double,3,6&gt; Matrix36d;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double,1,6&gt; Matrix16d;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keyword\">typedef</span> Matrix&lt;double,6,1&gt; Vector6d;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">enum class</span> ErrorType {kUnitPlane, kBearingVectorDiff, kImagePlane} ;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">   35</a></span>&#160;  <span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">Statistics</a> {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keywordtype\">double</span> reproj_error_after;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keywordtype\">double</span> reproj_error_before;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <a class=\"code\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">Statistics</a>()</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      : reproj_error_after(0.0)</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      , reproj_error_before(0.0)</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    {}</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  } stats_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a>(<a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> solver_options);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keyword\">static</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> getDefaultSolverOptions();</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">run</a>(<span class=\"keyword\">const</span> FrameBundle::Ptr&amp; frame, <span class=\"keywordtype\">double</span> reproj_thresh);</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keywordtype\">void</span> setRotationPrior(<span class=\"keyword\">const</span> Quaternion&amp; R_frame_world, <span class=\"keywordtype\">double</span> lambda);</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> iterCount()<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    <span class=\"keywordflow\">return</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">iter_</a>;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  }</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> setErrorType(ErrorType type) {</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    err_type_ = type;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  }</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> initTracing(<span class=\"keyword\">const</span> std::string&amp; trace_dir) {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">ofs_reproj_errors_</a>.open((trace_dir+<span class=\"stringliteral\">&quot;/reproj_errors.txt&quot;</span>).c_str());</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  }</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"comment\">//protected:</span></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  FrameBundle::Ptr frame_bundle_;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">double</span> prior_lambda_;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  ScaleEstimator scale_estimator_;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">RobustWeightFunction</a> robust_weight_;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keywordtype\">double</span> measurement_sigma_ = 1.0;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  ErrorType err_type_ = ErrorType::kUnitPlane;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">double</span> focal_length_ = 1.0; </div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">   75</a></span>&#160;  std::ofstream <a class=\"code\" href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">ofs_reproj_errors_</a>;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keywordtype\">double</span> evaluateError(</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;      GradientVector* g);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">double</span> evaluateErrorImpl(</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      GradientVector* g,</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;      std::vector&lt;float&gt;* unwhitened_errors);</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordtype\">void</span> removeOutliers(</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> reproj_err_threshold,</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>* frame,</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      std::vector&lt;double&gt;* reproj_errors,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      <span class=\"keywordtype\">size_t</span>* n_deleted_edges,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      <span class=\"keywordtype\">size_t</span>* n_deleted_corners);</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keywordtype\">void</span> update(</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;      <span class=\"keyword\">const</span> State&amp; T_frameold_from_world,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      State&amp; T_framenew_from_world);</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> applyPrior(<span class=\"keyword\">const</span> State&amp; current_model);</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;};</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;<span class=\"keyword\">namespace </span>pose_optimizer_utils {</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;<span class=\"keywordtype\">void</span> calculateFeatureResidualUnitPlane(</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a> &amp;robust_weight,</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;<span class=\"keywordtype\">void</span> calculateFeatureResidualImagePlane(</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Keypoint&gt;&amp; px,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">svo::Camera</a>&amp; cam,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a> &amp;robust_weight,</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;<span class=\"keywordtype\">void</span> calculateFeatureResidualBearingVectorDiff(</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a> &amp;robust_weight,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;<span class=\"keywordtype\">void</span> calculateEdgeletResidualUnitPlane(</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const GradientVector&gt;&amp; grad,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a>&amp; robust_weight,</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;<span class=\"keywordtype\">void</span> calculateEdgeletResidualImagePlane(</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Keypoint&gt;&amp; px,</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const GradientVector&gt;&amp; grad,</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">svo::Camera</a>&amp; cam,</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a>&amp; robust_weight,</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;<span class=\"keywordtype\">void</span> calculateEdgeletResidualBearingVectorDiff(</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const Keypoint&gt;&amp; px,</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const BearingVector&gt;&amp; f,</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;    <span class=\"keyword\">const</span> Position&amp; xyz_in_world,</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;    <span class=\"keyword\">const</span> Eigen::Ref&lt;const GradientVector&gt;&amp; grad,</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_imu_world,</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cam_imu,</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">svo::Camera</a>&amp; cam,</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;    <span class=\"keywordtype\">double</span> measurement_sigma,</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">PoseOptimizer::RobustWeightFunction</a>&amp; robust_weight,</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;    <span class=\"keywordtype\">double</span>* unwhitened_error,</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;    <span class=\"keywordtype\">double</span>* chi2_error,</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    PoseOptimizer::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;    PoseOptimizer::GradientVector* g);</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;} <span class=\"comment\">// namespace pose_optimizer_utils</span></div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"structsvo_1_1PoseOptimizer_1_1Statistics_html\"><div class=\"ttname\"><a href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a></div><div class=\"ttdef\"><b>Definition:</b> pose_optimizer.h:35</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PoseOptimizer_html_a27fd54b32c2e2793caf4f4ea09032071\"><div class=\"ttname\"><a href=\"classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071\">svo::PoseOptimizer::run</a></div><div class=\"ttdeci\">size_t run(const FrameBundle::Ptr &amp;frame, double reproj_thresh)</div><div class=\"ttdef\"><b>Definition:</b> pose_optimizer.cpp:40</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MADScaleEstimator_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:30</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PoseOptimizer_html_a7865b7b2d413fc1ef51f5a517eba4a8b\"><div class=\"ttname\"><a href=\"classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b\">svo::PoseOptimizer::ofs_reproj_errors_</a></div><div class=\"ttdeci\">std::ofstream ofs_reproj_errors_</div><div class=\"ttdoc\">focal length TODO: should be different for every camera </div><div class=\"ttdef\"><b>Definition:</b> pose_optimizer.h:75</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1CameraGeometryBase_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a></div><div class=\"ttdef\"><b>Definition:</b> camera_geometry_base.h:81</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1PoseOptimizer_html\"><div class=\"ttname\"><a href=\"classsvo_1_1PoseOptimizer.html\">svo::PoseOptimizer</a></div><div class=\"ttdef\"><b>Definition:</b> pose_optimizer.h:20</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html_a742ca0d12cf87a33a8d5960e194f4a47\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47\">vk::solver::MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;::iter_</a></div><div class=\"ttdeci\">size_t iter_</div><div class=\"ttdoc\">Current Iteration. </div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:186</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1TukeyWeightFunction_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:67</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/radial__tangential__distortion_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_cameras/include/vikit/cameras/radial_tangential_distortion.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b7f658749c111965b15dc773c6251486.html\">vikit_cameras</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0c8cdf13dfedcfa43b275f2634fde742.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_9f4824430b8c331aa9def5e4e9d9348a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8b40cbfecbfd65db1084212127da3a21.html\">cameras</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">radial_tangential_distortion.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>cameras {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">// This class implements the radial and tangential distortion model used by</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// OpenCV and ROS. Reference:</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">   13</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a> </div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a>(</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; k1, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; k2, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; p1, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; p2)</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    : k1_(k1), k2_(k2), p1_(p1), p2_(p2)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  {}</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <a class=\"code\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a>(</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;      <span class=\"keyword\">const</span> Eigen::VectorXd&amp; parameters)</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  {</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    CHECK(parameters.size() == 4);</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    k1_ = parameters(0);</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    k2_ = parameters(1);</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    p1_ = parameters(2);</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    p2_ = parameters(3);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  }</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">RadialTangentialDistortion</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> distort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xx = x * x;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> yy = y * y;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy = x * y;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy2 = 2.0*xy;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r2 = xx + yy;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> cdist = (k1_ + k2_ * r2) * r2;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    x += x * cdist + p1_ * xy2 + p2_ * (r2 + 2.0 * xx);</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    y += y * cdist + p2_ * xy2 + p1_ * (r2 + 2.0 * yy);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  }</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"keyword\">inline</span> Eigen::Vector2d distort(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; vector)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xx = vector(0) * vector(0);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> yy = vector(1) * vector(1);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy = vector(0) * vector(1);</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy2 = 2.0*xy;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r2 = xx + yy;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> cdist = (k1_ + k2_ * r2) * r2;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordflow\">return</span> Eigen::Vector2d(</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;        vector(0) + vector(0) * cdist + p1_ * xy2 + p2_ * (r2 + 2.0 * xx),</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;        vector(1) + vector(1) * cdist + p2_ * xy2 + p1_ * (r2 + 2.0 * yy));</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  }</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">   59</a></span>&#160;  <span class=\"keyword\">inline</span> Eigen::Matrix2d <a class=\"code\" href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">jacobian</a>(<span class=\"keyword\">const</span> Eigen::Vector2d&amp; px_distorted)<span class=\"keyword\"> const </span>{</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    Eigen::Matrix2d J_dist;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xx = px_distorted[0] * px_distorted[0];</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> yy = px_distorted[1] * px_distorted[1];</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy = px_distorted[0] * px_distorted[1];</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r2 = xx + yy;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> cdist = (k1_ + k2_ * r2) * r2;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> k2_r2_x4 = k2_ * r2 * 4.0;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> cdist_p1 = cdist + 1.0;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    J_dist(0,0) = cdist_p1 + k1_ * 2.0 * xx + k2_r2_x4 * xx</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;        + 2.0 * p1_ * px_distorted[1]  + 6.0 * p2_ * px_distorted[0];</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    J_dist(1,1) = cdist_p1 + k1_ * 2.0 * yy + k2_r2_x4 * yy</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;        + 2.0 * p2_ * px_distorted[0] + 6.0 * p1_ * px_distorted[1] ;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    J_dist(1,0) = 2.0 * k1_ * xy + k2_r2_x4 * xy</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;        + 2.0 * p1_ * px_distorted[0] + 2.0 * p2_ * px_distorted[1] ;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;    J_dist(0,1) = J_dist(1,0);</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    <span class=\"keywordflow\">return</span> J_dist;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  }</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> undistort(<span class=\"keywordtype\">double</span>&amp; x, <span class=\"keywordtype\">double</span>&amp; y)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    <span class=\"keywordtype\">double</span> x0=x, y0=y;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;    <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> i = 0; i &lt; 5; ++i)</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xx = x*x;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> yy = y*y;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy = x*y;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> xy2 = 2*xy;</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> r2 = xx + yy;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> icdist = 1.0/(1.0 + (k1_ + k2_ * r2) * r2);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dx = p1_ * xy2 + p2_ * (r2 + 2.0 * xx);</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> dy = p2_ * xy2 + p1_ * (r2 + 2.0 * yy);</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      x = (x0 - dx)*icdist;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      y = (y0 - dy)*icdist;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    }</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  }</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> print(std::ostream&amp; out)<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    out &lt;&lt; <span class=\"stringliteral\">&quot;  Distortion: RadTan(&quot;</span></div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;        &lt;&lt; k1_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; k2_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; p1_ &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; p2_ &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span></div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;        &lt;&lt; std::endl;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  }</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keyword\">enum</span> DistortionParameters</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  {</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    kRadialDistortionFactor1,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    kRadialDistortionFactor2,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    kTangentialDistortionFactor1,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    kTangentialDistortionFactor2</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  };</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"comment\">// returns distortion parameters as vector</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"comment\">// [k1 k2 p1 p2]</span></div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keyword\">inline</span> Eigen::VectorXd getDistortionParameters()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    Eigen::VectorXd distortion(4);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    distortion(0) = k1_;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    distortion(1) = k2_;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    distortion(2) = p1_;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    distortion(3) = p2_;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keywordflow\">return</span> distortion;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  }</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  <span class=\"keywordtype\">double</span> k1_ = 0; <span class=\"comment\">// Radial distortion factor 1</span></div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  <span class=\"keywordtype\">double</span> k2_ = 0; <span class=\"comment\">// Radial distortion factor 2</span></div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  <span class=\"keywordtype\">double</span> p1_ = 0; <span class=\"comment\">// Tangential distortion factor 1</span></div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  <span class=\"keywordtype\">double</span> p2_ = 0; <span class=\"comment\">// Tangential distortion factor 2</span></div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;};</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;} <span class=\"comment\">// namespace cameras</span></div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"ttc\" id=\"classvk_1_1cameras_1_1RadialTangentialDistortion_html_a4a239ba60ce8eacb1a8beacef30ac912\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912\">vk::cameras::RadialTangentialDistortion::jacobian</a></div><div class=\"ttdeci\">Eigen::Matrix2d jacobian(const Eigen::Vector2d &amp;px_distorted) const</div><div class=\"ttdoc\">Input must be already distorted px vector. </div><div class=\"ttdef\"><b>Definition:</b> radial_tangential_distortion.h:59</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1cameras_1_1RadialTangentialDistortion_html\"><div class=\"ttname\"><a href=\"classvk_1_1cameras_1_1RadialTangentialDistortion.html\">vk::cameras::RadialTangentialDistortion</a></div><div class=\"ttdef\"><b>Definition:</b> radial_tangential_distortion.h:13</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/realtime__worker_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common/realtime_worker.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">realtime_worker.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &quot;rpg_common/threadsafe_queue.h&quot;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DataType&gt;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classrpg__common_1_1RealtimeWorker.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  <a class=\"code\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>() : thread_(&amp;<a class=\"code\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker&lt;DataType&gt;::workLoop</a>, <span class=\"keyword\">this</span>) {}</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classrpg__common_1_1RealtimeWorker.html\">RealtimeWorker</a>()</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  {</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;    shutdown();</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  }</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keywordtype\">void</span> addTask(<span class=\"keyword\">const</span> DataType&amp; item)</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  {</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    queue_.push(item);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  }</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keywordtype\">void</span> shutdown()</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  {</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keywordflow\">if</span> (!thread_.joinable())</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;    {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      LOG(WARNING) &lt;&lt; <span class=\"stringliteral\">&quot;Redundant shutdown call of real-time worker!&quot;</span>;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keywordflow\">return</span>;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    }</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    queue_.shutdown();</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    thread_.join();</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  }</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">void</span> printBacklogWarningsWithTag(<span class=\"keyword\">const</span> std::string&amp; tag)</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  {</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    queue_.printBacklogWarningsWithTag(</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;        <span class=\"stringliteral\">&quot;Queue of worker with tag \\&quot;&quot;</span> + tag + <span class=\"stringliteral\">&quot;\\&quot;&quot;</span>);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> process(<span class=\"keyword\">const</span> DataType&amp; item) = 0;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">void</span> workLoop()</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  {</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    DataType item;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <span class=\"keywordflow\">while</span> (queue_.skipToLatest(&amp;item))</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    {</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;      process(item);</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  }</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <a class=\"code\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue&lt;DataType&gt;</a> queue_;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  std::thread thread_;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;};</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;}  <span class=\"comment\">// namespace rpg_common</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg</a> = <a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a>;</div><div class=\"ttc\" id=\"namespacerpg__common_html\"><div class=\"ttname\"><a href=\"namespacerpg__common.html\">rpg_common</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:11</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1RealtimeWorker_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1RealtimeWorker.html\">rpg_common::RealtimeWorker</a></div><div class=\"ttdef\"><b>Definition:</b> realtime_worker.h:10</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1ThreadSafeQueue_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue</a></div><div class=\"ttdef\"><b>Definition:</b> threadsafe_queue.h:13</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/reprojector_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/reprojector.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">reprojector.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/feature_wrapper.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">class </span>AbstractCamera;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;}</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">class </span>Matcher;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">class </span>OccupandyGrid2D;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html\">   25</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;{</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8\">   30</a></span>&#160;  <span class=\"keywordtype\">size_t</span> max_n_features_per_frame = 120;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9\">   33</a></span>&#160;  <span class=\"keywordtype\">size_t</span> cell_size = 30;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3\">   37</a></span>&#160;  <span class=\"keywordtype\">size_t</span> max_n_kfs = 5;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3\">   41</a></span>&#160;  <span class=\"keywordtype\">bool</span> reproject_unconverged_seeds = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8\">   45</a></span>&#160;  <span class=\"keywordtype\">bool</span> remove_unconstrained_points = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d\">   48</a></span>&#160;  <span class=\"keywordtype\">bool</span> affine_est_offset = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordtype\">bool</span> affine_est_gain = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;};</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Reprojector.html\">   57</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;{</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Reprojector&gt; Ptr;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a>(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;              <span class=\"keywordtype\">size_t</span> camera_index);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <a class=\"code\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a> options_;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">   71</a></span>&#160;  <span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Statistics</a></div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  {</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    <span class=\"keywordtype\">size_t</span> n_matches = 0;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keywordtype\">size_t</span> n_trials = 0;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  } stats_;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">   79</a></span>&#160;  <span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  {</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;    EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">   82</a></span>&#160;    FramePtr <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">ref_frame</a>;   </div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">   83</a></span>&#160;    <span class=\"keywordtype\">size_t</span> <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">ref_index</a>;     </div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">   84</a></span>&#160;    Keypoint <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">cur_px</a>;      </div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc\">   85</a></span>&#160;    <span class=\"keywordtype\">int</span> n_reproj = 0;     </div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">   86</a></span>&#160;    Score <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">score</a>;          </div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">   87</a></span>&#160;    FeatureType <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">type</a>;     </div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a>(<span class=\"keyword\">const</span> FramePtr _ref_frame, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> _ref_index,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;              <span class=\"keyword\">const</span> Keypoint&amp; _cur_px, <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> _n_reproj,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;              <span class=\"keyword\">const</span> Score _score, <span class=\"keyword\">const</span> FeatureType&amp; _type)</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;      : ref_frame(_ref_frame)</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;      , ref_index(_ref_index)</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;      , cur_px(_cur_px)</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      , n_reproj(_n_reproj)</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      , score(_score)</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;      , type(_type)</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    { ; }</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  };</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  <span class=\"keyword\">using</span> Candidates = std::vector&lt;Candidate&gt;;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  std::unique_ptr&lt;OccupandyGrid2D&gt; grid_;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  Candidates candidates_;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keywordtype\">size_t</span> camera_index_; <span class=\"comment\">// When using multiple cameras, each camera has a reprojector.</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  <span class=\"keywordtype\">void</span> reprojectFrames(</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      <span class=\"keyword\">const</span> FramePtr &amp;frame,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; close_kfs,</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;      std::vector&lt;PointPtr&gt;&amp; trash_points);</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;};</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;<span class=\"keyword\">namespace </span>reprojector_utils {</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keywordtype\">void</span> sortCandidates(</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    Reprojector::Candidates&amp; candidates);</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  <span class=\"keywordtype\">void</span> matchCandidates(<span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> max_n_features_per_frame,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_offset,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> affine_est_gain,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      Reprojector::Candidates&amp; candidates,</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;      <a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&amp; grid,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;      <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Reprojector::Statistics</a>&amp; stats);</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keywordtype\">bool</span> matchCandidate(</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Reprojector::Candidate</a>&amp; c,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      <a class=\"code\" href=\"classsvo_1_1Matcher.html\">Matcher</a>&amp; matcher,</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;      <a class=\"code\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a>&amp; feature);</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  <span class=\"keywordtype\">bool</span> getCandidate(</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; cur_frame,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; ref_frame,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span>&amp; ref_index,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;      <a class=\"code\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Reprojector::Candidate</a>&amp; candidate);</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;  <span class=\"keywordtype\">bool</span> projectPointAndCheckVisibility(</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; xyz,</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;      Eigen::Vector2d* px);</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;  <span class=\"keywordtype\">void</span> setGridCellsOccupied(</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      <span class=\"keyword\">const</span> Reprojector::Candidates&amp; candidates,</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      <a class=\"code\" href=\"classsvo_1_1OccupandyGrid2D.html\">OccupandyGrid2D</a>&amp; grid);</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;} <span class=\"comment\">// namespace reprojector_utils</span></div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1OccupandyGrid2D_html\"><div class=\"ttname\"><a href=\"classsvo_1_1OccupandyGrid2D.html\">svo::OccupandyGrid2D</a></div><div class=\"ttdef\"><b>Definition:</b> occupancy_grid_2d.h:11</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1ReprojectorOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:25</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html_a88f8dfa15b4cd42b1de12d3a22f2fdef\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">svo::Reprojector::Candidate::score</a></div><div class=\"ttdeci\">Score score</div><div class=\"ttdoc\">Feature Detection Score. </div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:86</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Statistics_html\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:71</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Matcher_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Matcher.html\">svo::Matcher</a></div><div class=\"ttdoc\">Patch-matcher for reprojection-matching and epipolar search in triangulation. </div><div class=\"ttdef\"><b>Definition:</b> matcher.h:28</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html_afd15a69c1719a940567e92f7c240ef2e\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">svo::Reprojector::Candidate::cur_px</a></div><div class=\"ttdeci\">Keypoint cur_px</div><div class=\"ttdoc\">Projected 2D pixel location in current frame. </div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:84</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html_a47eeb3103e7aff240229251af4c27ea5\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">svo::Reprojector::Candidate::ref_index</a></div><div class=\"ttdeci\">size_t ref_index</div><div class=\"ttdoc\">Feature index in reference frame. </div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:83</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:79</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html_a5df19d5001903e5c271c10813363518a\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">svo::Reprojector::Candidate::ref_frame</a></div><div class=\"ttdeci\">EIGEN_MAKE_ALIGNED_OPERATOR_NEW FramePtr ref_frame</div><div class=\"ttdoc\">Reference frame. </div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:82</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1FeatureWrapper_html\"><div class=\"ttname\"><a href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></div><div class=\"ttdef\"><b>Definition:</b> feature_wrapper.h:29</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1Reprojector_1_1Candidate_html_a7b4f2ef432dea3bc5b132a14f73a53b1\"><div class=\"ttname\"><a href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">svo::Reprojector::Candidate::type</a></div><div class=\"ttdeci\">FeatureType type</div><div class=\"ttdoc\">Type of feature to determine quality. </div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:87</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Reprojector_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Reprojector.html\">svo::Reprojector</a></div><div class=\"ttdef\"><b>Definition:</b> reprojector.h:57</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/ringbuffer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/ringbuffer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">ringbuffer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of VisionTools.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright 2011 Hauke Strasdat (Imperial College London)</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">// Permission is hereby granted, free of charge, to any person obtaining a copy</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// of this software and associated documentation files (the &quot;Software&quot;), to</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// deal in the Software without restriction, including without limitation the</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// rights  to use, copy, modify, merge, publish, distribute, sublicense, and/or</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// sell copies of the Software, and to permit persons to whom the Software is</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">// furnished to do so, subject to the following conditions:</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// The above copyright notice and this permission notice shall be included in</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">// all copies or substantial portions of the Software.</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"comment\">// THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"comment\">// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"comment\">// IN THE SOFTWARE.</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_RING_BUFFER_H</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#define VIKIT_RING_BUFFER_H</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"preprocessor\">#include &lt;cmath&gt;</span></div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#include &lt;cassert&gt;</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"preprocessor\">#include &lt;numeric&gt;</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;{</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1RingBuffer.html\">   36</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;{</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a>(<span class=\"keywordtype\">int</span> size);</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a>(<span class=\"keywordtype\">int</span> size, <span class=\"keyword\">const</span> T&amp; initial_value);</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keywordtype\">void</span> push_back(<span class=\"keyword\">const</span> T&amp; elem);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordtype\">bool</span> empty() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">void</span> clear();</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  T <span class=\"keyword\">get</span>(<span class=\"keywordtype\">int</span> i);</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  T getSum() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  T getMean() <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  T getMedian();</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  <span class=\"keywordtype\">int</span> size()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> num_elem_; }</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  std::vector&lt;T&gt; arr_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">int</span> begin_ = 0;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keywordtype\">int</span> end_ = -1;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"keywordtype\">int</span> num_elem_ = 0;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keywordtype\">int</span> arr_size_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;};</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::RingBuffer</a>(<span class=\"keywordtype\">int</span> size)</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  : arr_(size)</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  , arr_size_(size)</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;{}</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::RingBuffer</a>(<span class=\"keywordtype\">int</span> size, <span class=\"keyword\">const</span> T&amp; initial_value)</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  : arr_(size, initial_value)</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  , arr_size_(size)</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;{}</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::empty</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordflow\">return</span> (num_elem_ == 0);</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;}</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::clear</a>()</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;{</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  begin_ = 0;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  end_ = -1;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  num_elem_ = 0;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;}</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::push_back</a>(<span class=\"keyword\">const</span> T &amp; elem)</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;{</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  <span class=\"keywordflow\">if</span> (num_elem_&lt;arr_size_)</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  {</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    end_++;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    arr_[end_] = elem;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    num_elem_++;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  }</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keywordflow\">else</span>{</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    end_ = (end_+1)%arr_size_;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    begin_ = (begin_+1)%arr_size_;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    arr_[end_] = elem;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  }</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;}</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;T <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::get</a>(<span class=\"keywordtype\">int</span> i)</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;{</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  assert(i&lt;num_elem_);</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keywordflow\">return</span> arr_[(begin_+i)%arr_size_];</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;}</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;T <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::getSum</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  T sum=0;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordflow\">for</span>(<span class=\"keywordtype\">int</span> i=0; i&lt;num_elem_; ++i)</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    sum+=arr_[i];</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"keywordflow\">return</span> sum;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;}</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;T <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::getMean</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;<span class=\"keyword\"></span>{</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"keywordflow\">if</span>(num_elem_ == 0)</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    <span class=\"keywordflow\">return</span> 0;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  <span class=\"keywordflow\">return</span> getSum()/num_elem_;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;}</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;T <a class=\"code\" href=\"classvk_1_1RingBuffer.html\">RingBuffer&lt;T&gt;::getMedian</a>()</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;{</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;  <span class=\"keywordflow\">if</span>(num_elem_ == 0)</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;    <span class=\"keywordflow\">return</span> 0;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keyword\">typename</span> std::vector&lt;T&gt;::iterator it = arr_.begin()+std::floor(num_elem_/2);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  std::nth_element(arr_.begin(), it, arr_.end());</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;  <span class=\"keywordflow\">return</span> *it;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;}</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;} <span class=\"comment\">// end namespace vk</span></div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_RING_BUFFER_H</span></div><div class=\"ttc\" id=\"classvk_1_1RingBuffer_html\"><div class=\"ttname\"><a href=\"classvk_1_1RingBuffer.html\">vk::RingBuffer</a></div><div class=\"ttdef\"><b>Definition:</b> ringbuffer.h:36</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/robust__cost_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_solver/include/vikit/solver/robust_cost.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_28589ab415476537c03231845d7ed67a.html\">vikit_solver</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d7c3d79efbbb5a2dfc1734ad2347fdcc.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f5bad920d3b42ab48c3bc48cccbc378a.html\">vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_00bccb38bb6b7fdff7dd02fa42f449ef.html\">solver</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">robust_cost.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_ROBUST_COST_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define VIKIT_ROBUST_COST_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span>solver {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">   11</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a>(std::vector&lt;float&gt;&amp; errors) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;};</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">typedef</span> std::shared_ptr&lt;ScaleEstimator&gt; ScaleEstimatorPtr;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">   21</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">UnitScaleEstimator</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;{</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;  <span class=\"keyword\">using</span> ScaleEstimator::ScaleEstimator;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">UnitScaleEstimator</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a>(std::vector&lt;float&gt;&amp; errors) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;};</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"comment\">// estimates scale by computing the median absolute deviation</span></div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">   30</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">MADScaleEstimator</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;{</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keyword\">using</span> ScaleEstimator::ScaleEstimator;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">MADScaleEstimator</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a>(std::vector&lt;float&gt;&amp; errors) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;};</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"comment\">// estimates scale by computing the standard deviation</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">   39</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">NormalDistributionScaleEstimator</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html\">ScaleEstimator</a></div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;{</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keyword\">using</span> ScaleEstimator::ScaleEstimator;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">NormalDistributionScaleEstimator</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> <a class=\"code\" href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">compute</a>(std::vector&lt;float&gt;&amp; errors) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;};</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1WeightFunction.html\">   50</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;{</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> weight(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; error) <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;};</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"keyword\">typedef</span> std::shared_ptr&lt;WeightFunction&gt; WeightFunctionPtr;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">   59</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">UnitWeightFunction</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;{</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keyword\">using</span> WeightFunction::WeightFunction;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">UnitWeightFunction</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> weight(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; error) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;};</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">   67</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;{</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> b = 4.6851f);</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">TukeyWeightFunction</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> weight(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; error) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">float</span> b_square_;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;};</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">   77</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1WeightFunction.html\">WeightFunction</a></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;{</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <a class=\"code\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> k = 1.345f);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">HuberWeightFunction</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">float</span> weight(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; error) <span class=\"keyword\">const</span>;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keywordtype\">float</span> k_;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;};</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;} <span class=\"comment\">// namespace robust_cost</span></div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_ROBUST_COST_H_</span></div><div class=\"ttc\" id=\"classvk_1_1solver_1_1HuberWeightFunction_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1HuberWeightFunction.html\">vk::solver::HuberWeightFunction</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:77</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MADScaleEstimator_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MADScaleEstimator.html\">vk::solver::MADScaleEstimator</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:30</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1UnitWeightFunction_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1UnitWeightFunction.html\">vk::solver::UnitWeightFunction</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:59</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1UnitScaleEstimator_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1UnitScaleEstimator.html\">vk::solver::UnitScaleEstimator</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:21</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1ScaleEstimator_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1ScaleEstimator.html\">vk::solver::ScaleEstimator</a></div><div class=\"ttdoc\">Scale Estimators to estimate standard deviation of a distribution of errors. </div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:11</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1WeightFunction_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1WeightFunction.html\">vk::solver::WeightFunction</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:50</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1ScaleEstimator_html_a46df7fb6f1b86cbf61d855ec143a9e41\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41\">vk::solver::ScaleEstimator::compute</a></div><div class=\"ttdeci\">virtual float compute(std::vector&lt; float &gt; &amp;errors) const =0</div><div class=\"ttdoc\">Errors must be absolute values! </div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1TukeyWeightFunction_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1TukeyWeightFunction.html\">vk::solver::TukeyWeightFunction</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:67</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1NormalDistributionScaleEstimator.html\">vk::solver::NormalDistributionScaleEstimator</a></div><div class=\"ttdef\"><b>Definition:</b> robust_cost.h:39</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/sample_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/sample.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">sample.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_SAMPLE_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define VIKIT_SAMPLE_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;random&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;chrono&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Sample.html\">   10</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1Sample.html\">Sample</a></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> setTimeBasedSeed();</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> uniform(<span class=\"keywordtype\">int</span> from, <span class=\"keywordtype\">int</span> to);</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">double</span> uniform();</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">double</span> gaussian(<span class=\"keywordtype\">double</span> sigma);</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">static</span> std::ranlux24 gen_real;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">static</span> std::mt19937 gen_int;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keyword\">static</span> Eigen::Vector3d randomDirection3D();</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  <span class=\"keyword\">static</span> Eigen::Vector2d randomDirection2D();</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;};</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_SAMPLE_H_</span></div><div class=\"ttc\" id=\"classvk_1_1Sample_html\"><div class=\"ttname\"><a href=\"classvk_1_1Sample.html\">vk::Sample</a></div><div class=\"ttdef\"><b>Definition:</b> sample.h:10</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_0.js",
    "content": "var searchData=\n[\n  ['_5f_5finit_5f_5f',['__init__',['../classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f',1,'vikit_py::transformations::Arcball']]],\n  ['_5fbaselineoverdepth',['_BaselineOverDepth',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fcamerainfocallback',['_CameraInfoCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fcameramotion',['_CameraMotion',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html',1,'cv::HomographyDecomposition']]],\n  ['_5fchecknewmapneeded',['_CheckNewMapNeeded',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fmapcallback',['_MapCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fmapvisibility',['_MapVisibility',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fon_5ftopic_5fchanged',['_on_topic_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['_5fpublishcameramarker',['_publishCameraMarker',['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388',1,'evo_utils::tf_to_camera_markers::tfToCamera']]],\n  ['_5fremotekeycallback',['_RemoteKeyCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5ftfcallback',['_TFCallback',['../classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf',1,'evo_utils.snakify.snakify._TFCallback()'],['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828',1,'evo_utils.tf_to_camera_markers.tfToCamera._TFCallback()']]]\n];\n"
  },
  {
    "path": "docs/search/all_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_1.js",
    "content": "var searchData=\n[\n  ['a_5fcur_5fref_5f',['A_cur_ref_',['../classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b',1,'svo::Matcher']]],\n  ['abstractbundleadjustment',['AbstractBundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html',1,'svo::AbstractBundleAdjustment'],['../classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2',1,'svo::AbstractBundleAdjustment::AbstractBundleAdjustment()']]],\n  ['abstractdetector',['AbstractDetector',['../classsvo_1_1AbstractDetector.html',1,'svo::AbstractDetector'],['../classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd',1,'svo::AbstractDetector::AbstractDetector()']]],\n  ['abstractinitialization',['AbstractInitialization',['../classsvo_1_1AbstractInitialization.html',1,'svo']]],\n  ['acc_5fbias',['acc_bias',['../classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a',1,'svo::ImuInitialization']]],\n  ['acc_5fbias_5f',['acc_bias_',['../classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2',1,'svo::ImuHandler::acc_bias_()'],['../classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64',1,'svo::ViNodeState::acc_bias_()']]],\n  ['acc_5fbias_5frandom_5fwalk_5fsigma',['acc_bias_random_walk_sigma',['../classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372',1,'svo::ImuCalibration']]],\n  ['acc_5fbias_5fsigma',['acc_bias_sigma',['../classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698',1,'svo::ImuInitialization']]],\n  ['acc_5fframe_5ftimings_5f',['acc_frame_timings_',['../classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e',1,'svo::FrameHandlerBase']]],\n  ['acc_5fnoise_5fdensity',['acc_noise_density',['../classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23',1,'svo::ImuCalibration']]],\n  ['acc_5fnum_5fobs_5f',['acc_num_obs_',['../classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1',1,'svo::FrameHandlerBase']]],\n  ['accumulatepointcloud',['accumulatePointcloud',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['acquireuserinput',['acquireUserInput',['../classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0',1,'vk::UserInputThread']]],\n  ['adaptive_5fthreshold_5fc_5f',['adaptive_threshold_c_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['adaptive_5fthreshold_5fkernel_5fsize_5f',['adaptive_threshold_kernel_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['addimage',['addImage',['../classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d',1,'svo::FrameHandlerMono']]],\n  ['addimages',['addImages',['../classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd',1,'svo::FrameHandlerStereo']]],\n  ['addkeyframe',['addKeyframe',['../classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da',1,'svo::Map::addKeyframe()'],['../classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe',1,'svo::DepthFilter::addKeyframe()']]],\n  ['addmeasurement',['addMeasurement',['../classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e',1,'svo::PreintegratedImuMeasurement']]],\n  ['addmeasurements',['addMeasurements',['../classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753',1,'svo::PreintegratedImuMeasurement']]],\n  ['addobservation',['addObservation',['../classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f',1,'svo::Point']]],\n  ['addpointtotrash',['addPointToTrash',['../classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f',1,'svo::Map']]],\n  ['affine_5fest_5foffset',['affine_est_offset',['../structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d',1,'svo::ReprojectorOptions::affine_est_offset()'],['../structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78',1,'svo::DepthFilterOptions::affine_est_offset()']]],\n  ['align_5f1d',['align_1d',['../structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71',1,'svo::Matcher::Options']]],\n  ['align_5fmax_5fiter',['align_max_iter',['../structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e',1,'svo::Matcher::Options']]],\n  ['aligned',['Aligned',['../structaslam_1_1Aligned.html',1,'aslam']]],\n  ['alignedmap',['AlignedMap',['../structaslam_1_1AlignedMap.html',1,'aslam']]],\n  ['alignedunorderedmap',['AlignedUnorderedMap',['../structaslam_1_1AlignedUnorderedMap.html',1,'aslam']]],\n  ['allpixelsdetector',['AllPixelsDetector',['../classsvo_1_1AllPixelsDetector.html',1,'svo']]],\n  ['alpha',['alpha',['../structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf',1,'svo::SparseImgAlignState']]],\n  ['angle',['angle',['../structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2',1,'svo::Corner']]],\n  ['arcball',['Arcball',['../classvikit__py_1_1transformations_1_1Arcball.html',1,'vikit_py::transformations']]],\n  ['argumenttype',['ArgumentType',['../structArgumentType.html',1,'']]],\n  ['argumenttype_3c_20t_28u_29_3e',['ArgumentType&lt; T(U)&gt;',['../structArgumentType_3_01T_07U_08_4.html',1,'']]],\n  ['arrayinitgeometric',['ArrayInitGeometric',['../classsvo_1_1ArrayInitGeometric.html',1,'svo']]],\n  ['arrayinitoptimization',['ArrayInitOptimization',['../classsvo_1_1ArrayInitOptimization.html',1,'svo']]],\n  ['atandistortion',['AtanDistortion',['../classvk_1_1cameras_1_1AtanDistortion.html',1,'vk::cameras']]],\n  ['auto_5ftrigger_5f',['auto_trigger_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21',1,'depth_from_defocus::DepthFromDefocusNode']]]\n];\n"
  },
  {
    "path": "docs/search/all_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_10.js",
    "content": "var searchData=\n[\n  ['p',['P',['../structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a',1,'LKSE3::Keypoint']]],\n  ['patchnormal',['PatchNormal',['../classsvo_1_1PatchNormal.html',1,'svo']]],\n  ['pausebootstrapper',['pauseBootstrapper',['../classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['pc_5f',['pc_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pc_5fglobal_5f',['pc_global_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pcl_5f',['pcl_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['performancemonitor',['PerformanceMonitor',['../classvk_1_1PerformanceMonitor.html',1,'vk']]],\n  ['pinholecamera',['PinholeCamera',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html',1,'vikit_py.pinhole_camera.PinholeCamera'],['../classevo__utils_1_1camera_1_1PinholeCamera.html',1,'evo_utils::camera::PinholeCamera'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21',1,'evo_utils::camera::PinholeCamera::PinholeCamera()']]],\n  ['pinholeprojection',['PinholeProjection',['../classvk_1_1cameras_1_1PinholeProjection.html',1,'vk::cameras']]],\n  ['pixel_5fvalue',['pixel_value',['../structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b',1,'LKSE3::Keypoint']]],\n  ['place',['place',['../classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732',1,'vikit_py::transformations::Arcball']]],\n  ['point',['Point',['../classsvo_1_1Point.html',1,'svo::Point'],['../classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7',1,'svo::Point::Point(const Eigen::Vector3d &amp;pos)'],['../classsvo_1_1Point.html#ae904bb2f9bf357e859aa1ccf0c5de1cd',1,'svo::Point::Point(const int id, const Eigen::Vector3d &amp;pos)']]],\n  ['point_5fbehind_5fcamera',['POINT_BEHIND_CAMERA',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5',1,'vk::cameras::ProjectionResult']]],\n  ['pointidprovider',['PointIdProvider',['../classsvo_1_1PointIdProvider.html',1,'svo']]],\n  ['pos',['pos',['../classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad',1,'svo::Frame::pos()'],['../classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25',1,'svo::Point::pos()']]],\n  ['pos_5f',['pos_',['../classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5',1,'svo::Point']]],\n  ['poseoptim_5fprior_5flambda',['poseoptim_prior_lambda',['../structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70',1,'svo::BaseOptions']]],\n  ['poseoptim_5fthresh',['poseoptim_thresh',['../structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed',1,'svo::BaseOptions']]],\n  ['poseoptim_5fusing_5funit_5fsphere',['poseoptim_using_unit_sphere',['../structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310',1,'svo::BaseOptions']]],\n  ['poseoptimizer',['PoseOptimizer',['../classsvo_1_1PoseOptimizer.html',1,'svo']]],\n  ['poses_5fpub_5f',['poses_pub_',['../classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7',1,'Tracker']]],\n  ['postbootstrapcalled',['postBootstrapCalled',['../classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582',1,'dvs_bootstrapping::Bootstrapper::postBootstrapCalled()'],['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3',1,'dvs_bootstrapping::FrontoPlanarBootstrapper::postBootstrapCalled()']]],\n  ['postcameraloaded',['postCameraLoaded',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b',1,'dvs_bootstrapping::Bootstrapper::postCameraLoaded()'],['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991',1,'dvs_bootstrapping::EventsFramesBootstrapper::postCameraLoaded()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7',1,'depth_from_defocus::DepthFromDefocusNode::postCameraLoaded()'],['../classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9',1,'Tracker::postCameraLoaded()']]],\n  ['precomputed_5frectified_5fpoints_5f',['precomputed_rectified_points_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['precomputerectificationmap',['precomputeRectificationMap',['../classMosaic.html#a4b51f56ef447d56e030832edae88c4b1',1,'Mosaic']]],\n  ['precomputerectifiedpoints',['precomputeRectifiedPoints',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['precomputereferenceframe',['precomputeReferenceFrame',['../classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c',1,'LKSE3']]],\n  ['preintegratedimumeasurement',['PreintegratedImuMeasurement',['../classsvo_1_1PreintegratedImuMeasurement.html',1,'svo']]],\n  ['print',['print',['../classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc',1,'svo::Point']]],\n  ['printparameters',['printParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e',1,'vk::cameras::CameraGeometry::printParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1',1,'vk::cameras::CameraGeometryBase::printParameters()'],['../classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4',1,'vk::cameras::NCamera::printParameters()']]],\n  ['processeventarray',['processEventArray',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['processeventqueue',['processEventQueue',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['processfirstframe',['processFirstFrame',['../classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8',1,'svo::FrameHandlerMono::processFirstFrame()'],['../classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273',1,'svo::FrameHandlerStereo::processFirstFrame()']]],\n  ['processframe',['processFrame',['../classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5',1,'svo::FrameHandlerMono::processFrame()'],['../classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1',1,'svo::FrameHandlerStereo::processFrame()']]],\n  ['processframebundle',['processFrameBundle',['../classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c',1,'svo::FrameHandlerArray::processFrameBundle()'],['../classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d',1,'svo::FrameHandlerBase::processFrameBundle()'],['../classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e',1,'svo::FrameHandlerMono::processFrameBundle()'],['../classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa',1,'svo::FrameHandlerStereo::processFrameBundle()']]],\n  ['project',['project',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e',1,'vikit_py::pinhole_camera::PinholeCamera']]],\n  ['project3',['project3',['../classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34',1,'vk::cameras::CameraGeometry::project3()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b',1,'vk::cameras::CameraGeometryBase::project3()']]],\n  ['project3dtopixel',['project3dToPixel',['../classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c',1,'evo_utils::camera::PinholeCamera']]],\n  ['projecteventstovoxelgrid',['projectEventsToVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['projection_5finvalid',['PROJECTION_INVALID',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52',1,'vk::cameras::ProjectionResult']]],\n  ['projectionresult',['ProjectionResult',['../structvk_1_1cameras_1_1ProjectionResult.html',1,'vk::cameras']]],\n  ['projectmap',['projectMap',['../classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f',1,'LKSE3']]],\n  ['projectpixelto3dray',['projectPixelTo3dRay',['../classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f',1,'evo_utils::camera::PinholeCamera']]],\n  ['pub_5fdepth_5f',['pub_depth_',['../classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481',1,'Mosaic']]],\n  ['pub_5fdepth_5fmap_5f',['pub_depth_map_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pub_5fimg_5f',['pub_img_',['../classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb',1,'Mosaic']]],\n  ['pub_5fpc_5f',['pub_pc_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7',1,'dvs_bootstrapping::FrontoPlanarBootstrapper::pub_pc_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50',1,'depth_from_defocus::DepthFromDefocusNode::pub_pc_()']]],\n  ['pub_5fpc_5fglobal_5f',['pub_pc_global_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pub_5ftf_5f',['pub_tf_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['pub_5fvoxel_5fgrid_5f',['pub_voxel_grid_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['publishdepthmap',['publishDepthmap',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d',1,'depth_from_defocus::DepthFromDefocusNode::publishDepthmap()'],['../classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e',1,'Mosaic::publishDepthmap()']]],\n  ['publisheventimage',['publishEventImage',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['publishglobalmap',['publishGlobalMap',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['publishimagereconstruction',['publishImageReconstruction',['../classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7',1,'Mosaic']]],\n  ['publishmapoverlapthread',['publishMapOverlapThread',['../classTracker.html#a2279b2b5f7be0fde95c54820fba976fd',1,'Tracker']]],\n  ['publishopticalflowvectors',['publishOpticalFlowVectors',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['publishpcl',['publishPcl',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['publishpose',['publishPose',['../classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f',1,'Tracker']]],\n  ['publishtf',['publishTF',['../classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c',1,'Tracker']]],\n  ['publishvoxelgrid',['publishVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pushback',['pushBack',['../classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe',1,'svo::FeatureTrack']]],\n  ['px',['px',['../structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8',1,'svo::FeatureWrapper']]],\n  ['px_5fvec_5f',['px_vec_',['../classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97',1,'svo::Frame']]],\n  ['pyr_5fnew_5f',['pyr_new_',['../classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce',1,'LKSE3']]],\n  ['pyramid_5flevels_5f',['pyramid_levels_',['../classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1',1,'LKSE3']]]\n];\n"
  },
  {
    "path": "docs/search/all_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_11.js",
    "content": "var searchData=\n[\n  ['quality_5fmax_5ffts_5fdrop',['quality_max_fts_drop',['../structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6',1,'svo::BaseOptions']]],\n  ['quality_5fmin_5ffts',['quality_min_fts',['../structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0',1,'svo::BaseOptions']]],\n  ['quitthread',['quitThread',['../classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b',1,'svo::AbstractBundleAdjustment::quitThread()'],['../classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79',1,'svo::BackendInterface::quitThread()']]]\n];\n"
  },
  {
    "path": "docs/search/all_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_12.js",
    "content": "var searchData=\n[\n  ['readme',['README',['../md_rqt_evo_README.html',1,'']]],\n  ['readme',['README',['../md_rqt_svo_README.html',1,'']]],\n  ['r',['R',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['r_5fcur_5fworld_5f',['R_cur_world_',['../classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838',1,'svo::AbstractInitialization']]],\n  ['r_5fimu_5fworld_5f',['R_imu_world_',['../classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36',1,'svo::Frame']]],\n  ['radialtangentialdistortion',['RadialTangentialDistortion',['../classvk_1_1cameras_1_1RadialTangentialDistortion.html',1,'vk::cameras']]],\n  ['radius_5fsearch_5f',['radius_search_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['realtimeworker',['RealtimeWorker',['../classrpg__common_1_1RealtimeWorker.html',1,'rpg_common']]],\n  ['rect_5f',['rect_',['../classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5',1,'LKSE3']]],\n  ['rectification_5fmap_5f',['rectification_map_',['../classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd',1,'Mosaic']]],\n  ['ref_5fframe',['ref_frame',['../structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a',1,'svo::Reprojector::Candidate']]],\n  ['ref_5fframes_5f',['ref_frames_',['../classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8',1,'svo::SparseImgAlignBase']]],\n  ['ref_5fimg_5f',['ref_img_',['../classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6',1,'LKSE3']]],\n  ['ref_5findex',['ref_index',['../structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5',1,'svo::Reprojector::Candidate']]],\n  ['ref_5fvoxel_5fgrid_5f',['ref_voxel_grid_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['register',['register',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['regular_5fframe_5fid_5f',['regular_frame_id_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['relocalization_5fmax_5ftrials',['relocalization_max_trials',['../structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe',1,'svo::BaseOptions']]],\n  ['relocalization_5fn_5ftrials_5f',['relocalization_n_trials_',['../classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f',1,'svo::FrameHandlerBase']]],\n  ['relocalizeframe',['relocalizeFrame',['../classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777',1,'svo::FrameHandlerMono']]],\n  ['remote_5fkey_5f',['remote_key_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['remote_5fkey_5fpub_5f',['remote_key_pub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['remote_5fsub_5f',['remote_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4',1,'dvs_bootstrapping::Bootstrapper::remote_sub_()'],['../classTracker.html#ade9360c0b7392539943229150027677a',1,'Tracker::remote_sub_()']]],\n  ['remotecallback',['remoteCallback',['../classTracker.html#a3477d93ca1724ed9696c12c7ec005be0',1,'Tracker']]],\n  ['remotekeycallback',['remoteKeyCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['remove_5funconstrained_5fpoints',['remove_unconstrained_points',['../structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8',1,'svo::ReprojectorOptions']]],\n  ['removekeyframe',['removeKeyframe',['../classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d',1,'svo::Map']]],\n  ['removeobservation',['removeObservation',['../classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c',1,'svo::Point']]],\n  ['reproj_5ferror_5fthresh',['reproj_error_thresh',['../structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56',1,'svo::InitializationOptions']]],\n  ['reproject_5funconverged_5fseeds',['reproject_unconverged_seeds',['../structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3',1,'svo::ReprojectorOptions']]],\n  ['reprojectdepthmap',['reprojectDepthmap',['../classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7',1,'Mosaic']]],\n  ['reprojectframes',['reprojectFrames',['../classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66',1,'svo::Reprojector']]],\n  ['reprojector',['Reprojector',['../classsvo_1_1Reprojector.html',1,'svo']]],\n  ['reprojectoroptions',['ReprojectorOptions',['../structsvo_1_1ReprojectorOptions.html',1,'svo']]],\n  ['reset',['reset',['../classTracker.html#acb05d74ae2ff6fa10272668fba396516',1,'Tracker::reset()'],['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027',1,'evo_utils.select_exposure_DAVIS.ExposureSelector.reset()'],['../classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc',1,'svo::AbstractBundleAdjustment::reset()'],['../classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9',1,'svo::FrameHandlerBase::reset()'],['../classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c',1,'svo::Map::reset()'],['../classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59',1,'svo::BackendInterface::reset()'],['../classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4',1,'svo::DepthFilter::reset()'],['../classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40',1,'svo::FeatureTracker::reset()'],['../classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e',1,'vk::Timer::reset()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913',1,'vk::solver::MiniLeastSquaresSolver::reset()']]],\n  ['reset_5fbefore_5fdetection',['reset_before_detection',['../structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe',1,'svo::FeatureTrackerOptions']]],\n  ['resetall',['resetAll',['../classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919',1,'svo::FrameHandlerArray::resetAll()'],['../classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b',1,'svo::FrameHandlerBase::resetAll()'],['../classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9',1,'svo::FrameHandlerMono::resetAll()'],['../classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe',1,'svo::FrameHandlerStereo::resetAll()']]],\n  ['resetcommon',['resetCommon',['../classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10',1,'svo::FrameHandlerBase']]],\n  ['resetmapper',['resetMapper',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['resettermios',['resetTermios',['../classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b',1,'vk::UserInputThread']]],\n  ['resetvoxelgrid',['resetVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['resizefeaturestorage',['resizeFeatureStorage',['../classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32',1,'svo::Frame']]],\n  ['resume',['resume',['../classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0',1,'vk::Timer']]],\n  ['rho_5f',['rho_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['ringbuffer',['RingBuffer',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['ringbuffer_3c_20double_20_3e',['RingBuffer&lt; double &gt;',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['ringbuffer_3c_20size_5ft_20_3e',['RingBuffer&lt; size_t &gt;',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['rosnode',['RosNode',['../classvikit__py_1_1ros__node_1_1RosNode.html',1,'vikit_py::ros_node']]],\n  ['run',['run',['../classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071',1,'svo::PoseOptimizer::run()'],['../classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b',1,'svo::SparseImgAlignGpu::run()']]],\n  ['runpass',['runPass',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]]\n];\n"
  },
  {
    "path": "docs/search/all_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_13.js",
    "content": "var searchData=\n[\n  ['feature_5falignment',['feature_alignment',['../namespacesvo_1_1feature__alignment.html',1,'svo']]],\n  ['frame_5futils',['frame_utils',['../namespacesvo_1_1frame__utils.html',1,'svo']]],\n  ['safedeletepoint',['safeDeletePoint',['../classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6',1,'svo::Map']]],\n  ['sample',['Sample',['../classvk_1_1Sample.html',1,'vk']]],\n  ['sampling_5flevel',['sampling_level',['../structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e',1,'svo::DetectorOptions']]],\n  ['saturation_5faccel_5fmax',['saturation_accel_max',['../classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4',1,'svo::ImuCalibration']]],\n  ['saturation_5fomega_5fmax',['saturation_omega_max',['../classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac',1,'svo::ImuCalibration']]],\n  ['scaleestimator',['ScaleEstimator',['../classvk_1_1solver_1_1ScaleEstimator.html',1,'vk::solver']]],\n  ['scan_5fepi_5funit_5fsphere',['scan_epi_unit_sphere',['../structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9',1,'svo::DepthFilterOptions']]],\n  ['scanepipolarline',['scanEpipolarLine',['../classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5',1,'svo::Matcher']]],\n  ['scanepipolarunitplane',['scanEpipolarUnitPlane',['../classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b',1,'svo::Matcher']]],\n  ['scanepipolarunitsphere',['scanEpipolarUnitSphere',['../classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0',1,'svo::Matcher']]],\n  ['score',['score',['../structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef',1,'svo::Reprojector::Candidate::score()'],['../structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e',1,'svo::Corner::score()']]],\n  ['score_5fvec_5f',['score_vec_',['../classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb',1,'svo::Frame']]],\n  ['seed_5fconvergence_5fsigma2_5fthresh',['seed_convergence_sigma2_thresh',['../structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c',1,'svo::DepthFilterOptions']]],\n  ['seed_5fref_5fvec_5f',['seed_ref_vec_',['../classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95',1,'svo::Frame']]],\n  ['seedref',['SeedRef',['../structsvo_1_1SeedRef.html',1,'svo']]],\n  ['selectoptimalexposurecallback',['selectOptimalExposureCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['send_5fcommand',['send_command',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['sensor_5fsize',['sensor_size',['../classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1',1,'motion_correction::WarpUpdateParams']]],\n  ['set_5freset_5f',['set_reset_',['../classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795',1,'svo::FrameHandlerBase']]],\n  ['set_5fstart_5f',['set_start_',['../classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad',1,'svo::FrameHandlerBase']]],\n  ['set_5ft_5fcam_5fimu',['set_T_cam_imu',['../classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940',1,'svo::Frame']]],\n  ['set_5ft_5fw_5fb',['set_T_W_B',['../classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677',1,'svo::FrameBundle']]],\n  ['setalphainitialvalue',['setAlphaInitialValue',['../classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8',1,'svo::SparseImgAlignBase']]],\n  ['setaxes',['setaxes',['../classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7',1,'vikit_py::transformations::Arcball']]],\n  ['setbetainitialvalue',['setBetaInitialValue',['../classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe',1,'svo::SparseImgAlignBase']]],\n  ['setbundleadjuster',['setBundleAdjuster',['../classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff',1,'svo::FrameHandlerBase']]],\n  ['setcammodel',['setCamModel',['../classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b',1,'Mosaic']]],\n  ['setcompensation',['setCompensation',['../classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d',1,'svo::FrameHandlerBase::setCompensation()'],['../classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267',1,'svo::SparseImgAlignBase::setCompensation()']]],\n  ['setconstrain',['setconstrain',['../classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f',1,'vikit_py::transformations::Arcball']]],\n  ['setdetectoroccupiedcells',['setDetectorOccupiedCells',['../classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850',1,'svo::FrameHandlerBase']]],\n  ['setfirstframes',['setFirstFrames',['../classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d',1,'svo::FrameHandlerBase']]],\n  ['setinitialcampose',['setInitialCamPose',['../classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4',1,'svo::FrameHandlerBase']]],\n  ['setinitialimupose',['setInitialImuPose',['../classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c',1,'svo::FrameHandlerBase']]],\n  ['setkeyframe',['setKeyframe',['../classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000',1,'svo::Frame']]],\n  ['setkeypoints',['setKeyPoints',['../classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8',1,'svo::Frame']]],\n  ['setlabel',['setLabel',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd',1,'vk::cameras::CameraGeometryBase::setLabel()'],['../classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815',1,'vk::cameras::NCamera::setLabel()']]],\n  ['setmask',['setMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57',1,'vk::cameras::CameraGeometryBase']]],\n  ['setmaxnumfeaturestoalign',['setMaxNumFeaturesToAlign',['../classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9',1,'svo::SparseImgAlignBase']]],\n  ['setnframeindex',['setNFrameIndex',['../classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e',1,'svo::Frame']]],\n  ['setpatchsizesideeffects',['setPatchSizeSideEffects',['../classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab',1,'svo::SparseImgAlign::setPatchSizeSideEffects()'],['../classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d',1,'svo::SparseImgAlignBase::setPatchSizeSideEffects()'],['../classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea',1,'svo::SparseImgAlignGpu::setPatchSizeSideEffects()']]],\n  ['setprior',['setPrior',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['settrackingquality',['setTrackingQuality',['../classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c',1,'svo::FrameHandlerBase']]],\n  ['setupvoxelgrid',['setupVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['size',['size',['../classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242',1,'depth_from_defocus::DepthVector::size()'],['../classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469',1,'svo::Map::size()']]],\n  ['smartprojectionposefactor',['SmartProjectionPoseFactor',['../classgtsam_1_1SmartProjectionPoseFactor.html',1,'gtsam']]],\n  ['snakify',['snakify',['../classevo__utils_1_1snakify_1_1snakify.html',1,'evo_utils::snakify']]],\n  ['sobeldetector',['SobelDetector',['../classsvo_1_1SobelDetector.html',1,'svo']]],\n  ['solve',['solve',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['solvedefaultimpl',['solveDefaultImpl',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['sparseimgalign',['SparseImgAlign',['../classsvo_1_1SparseImgAlign.html',1,'svo']]],\n  ['sparseimgalignbase',['SparseImgAlignBase',['../classsvo_1_1SparseImgAlignBase.html',1,'svo']]],\n  ['sparseimgaligngpu',['SparseImgAlignGpu',['../classsvo_1_1SparseImgAlignGpu.html',1,'svo']]],\n  ['sparseimgalignoptions',['SparseImgAlignOptions',['../structsvo_1_1SparseImgAlignOptions.html',1,'svo']]],\n  ['sparseimgalignstate',['SparseImgAlignState',['../structsvo_1_1SparseImgAlignState.html',1,'svo']]],\n  ['stage',['stage',['../classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890',1,'svo::FrameHandlerBase::stage()'],['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115',1,'svo::Stage()']]],\n  ['stage_5f',['stage_',['../classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98',1,'svo::FrameHandlerBase']]],\n  ['start',['start',['../classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a',1,'svo::FrameHandlerBase::start()'],['../classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf',1,'vk::Timer::start()']]],\n  ['startcommandcallback',['startCommandCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['startthread',['startThread',['../classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b',1,'svo::AbstractBundleAdjustment::startThread()'],['../classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062',1,'svo::BackendInterface::startThread()'],['../classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854',1,'svo::DepthFilter::startThread()']]],\n  ['state_5f',['state_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['statistics',['Statistics',['../structsvo_1_1PoseOptimizer_1_1Statistics.html',1,'svo::PoseOptimizer::Statistics'],['../structsvo_1_1Reprojector_1_1Statistics.html',1,'svo::Reprojector::Statistics']]],\n  ['status',['Status',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312',1,'vk::cameras::ProjectionResult']]],\n  ['status_5f',['status_',['../structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706',1,'vk::cameras::ProjectionResult']]],\n  ['stereoinit',['StereoInit',['../classsvo_1_1StereoInit.html',1,'svo']]],\n  ['stereotriangulation',['StereoTriangulation',['../classsvo_1_1StereoTriangulation.html',1,'svo']]],\n  ['stereotriangulationoptions',['StereoTriangulationOptions',['../structsvo_1_1StereoTriangulationOptions.html',1,'svo']]],\n  ['stop',['stop',['../classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4',1,'vk::Timer::stop()'],['../classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3',1,'vk::UserInputThread::stop()']]],\n  ['stop_5f',['stop_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['stop_5fwhen_5ferror_5fincreases',['stop_when_error_increases',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['stopthread',['stopThread',['../classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb',1,'svo::DepthFilter']]],\n  ['strategy',['strategy',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['structure_5foptimization_5fmax_5fpts',['structure_optimization_max_pts',['../structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225',1,'svo::BaseOptions']]],\n  ['subpix_5frefinement',['subpix_refinement',['../structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb',1,'svo::Matcher::Options']]],\n  ['svo',['Svo',['../classrqt__svo_1_1svo_1_1Svo.html',1,'rqt_svo.svo.Svo'],['../namespacesvo.html',1,'svo']]],\n  ['svointerface',['SvoInterface',['../classsvo_1_1SvoInterface.html',1,'svo']]],\n  ['svonodebase',['SvoNodeBase',['../classsvo__ros_1_1SvoNodeBase.html',1,'svo_ros']]],\n  ['svonodelet',['SvoNodelet',['../classsvo_1_1SvoNodelet.html',1,'svo']]],\n  ['svowidget',['SvoWidget',['../classrqt__svo_1_1svo__widget_1_1SvoWidget.html',1,'rqt_svo::svo_widget']]],\n  ['synthesizeandpublishdepth',['synthesizeAndPublishDepth',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgrid',['synthesizePointCloudFromVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridcontrast',['synthesizePointCloudFromVoxelGridContrast',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridgradmag',['synthesizePointCloudFromVoxelGridGradMag',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridlinf',['synthesizePointCloudFromVoxelGridLinf',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['warp',['warp',['../namespacesvo_1_1warp.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/all_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_14.js",
    "content": "var searchData=\n[\n  ['t',['t',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['t_5fbody_5fcam_5f',['T_body_cam_',['../classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1',1,'svo::Frame']]],\n  ['t_5fc_5fb_5f',['T_C_B_',['../classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df',1,'vk::cameras::NCamera']]],\n  ['t_5fcam_5fimu',['T_cam_imu',['../classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15',1,'svo::Frame']]],\n  ['t_5fcam_5fworld',['T_cam_world',['../classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f',1,'svo::Frame']]],\n  ['t_5fcur_5ffrom_5fref_5f',['T_cur_from_ref_',['../classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166',1,'svo::AbstractInitialization']]],\n  ['t_5fcur_5fref_5f',['T_cur_ref_',['../classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605',1,'LKSE3']]],\n  ['t_5ff_5fw_5f',['T_f_w_',['../classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33',1,'svo::Frame']]],\n  ['t_5ficur_5firef',['T_icur_iref',['../structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5',1,'svo::SparseImgAlignState']]],\n  ['t_5fimu_5fcam',['T_imu_cam',['../classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f',1,'svo::Frame']]],\n  ['t_5fimu_5fworld',['T_imu_world',['../classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a',1,'svo::Frame']]],\n  ['t_5firef_5fworld_5f',['T_iref_world_',['../classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5',1,'svo::SparseImgAlignBase']]],\n  ['t_5fkf_5fref_5f',['T_kf_ref_',['../classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986',1,'LKSE3']]],\n  ['t_5flastimu_5fnewimu_5f',['t_lastimu_newimu_',['../classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632',1,'svo::FrameHandlerBase']]],\n  ['t_5fref_5fcam_5f',['T_ref_cam_',['../classLKSE3.html#a786c18da0f4b081cd32e37f433048a79',1,'LKSE3']]],\n  ['t_5fref_5fcur_5f',['t_ref_cur_',['../classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33',1,'svo::AbstractInitialization']]],\n  ['t_5fref_5fw_5f',['T_ref_w_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['t_5fw_5fb_5f',['T_W_B_',['../classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380',1,'svo::ViNodeState']]],\n  ['t_5fworld_5fcam',['T_world_cam',['../classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e',1,'svo::Frame']]],\n  ['t_5fworld_5fimu',['T_world_imu',['../classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5',1,'svo::Frame']]],\n  ['t_5fworld_5fimuinit',['T_world_imuinit',['../classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e',1,'svo::FrameHandlerBase']]],\n  ['t_5fworld_5fkf_5f',['T_world_kf_',['../classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1',1,'LKSE3']]],\n  ['testtransformations',['TestTransformations',['../classvikit__py_1_1test__transformations_1_1TestTransformations.html',1,'vikit_py::test_transformations']]],\n  ['tf_5f',['tf_',['../classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a',1,'DvsReconstruction']]],\n  ['tf_5fsub_5f',['tf_sub_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6',1,'depth_from_defocus::DepthFromDefocusNode::tf_sub_()'],['../classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee',1,'Tracker::tf_sub_()']]],\n  ['tfcallback',['tfCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662',1,'depth_from_defocus::DepthFromDefocusNode::tfCallback()'],['../classTracker.html#a1029bfd35553535ccba3159101cd70b9',1,'Tracker::tfCallback()']]],\n  ['tftocamera',['tfToCamera',['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html',1,'evo_utils::tf_to_camera_markers']]],\n  ['threadsafequeue',['ThreadSafeQueue',['../classrpg__common_1_1ThreadSafeQueue.html',1,'rpg_common']]],\n  ['threshold_5fprimary',['threshold_primary',['../structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b',1,'svo::DetectorOptions']]],\n  ['threshold_5fsecondary',['threshold_secondary',['../structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89',1,'svo::DetectorOptions']]],\n  ['timer',['Timer',['../classvk_1_1Timer.html',1,'vk::Timer'],['../classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5',1,'vk::Timer::Timer()']]],\n  ['timer_5f',['timer_',['../classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0',1,'svo::FrameHandlerBase']]],\n  ['timestamp_5f',['timestamp_',['../structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53',1,'svo::ImuMeasurement']]],\n  ['todo_20list',['Todo List',['../todo.html',1,'']]],\n  ['trace_5fdir',['trace_dir',['../structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857',1,'svo::BaseOptions']]],\n  ['track_5fid_5fvec_5f',['track_id_vec_',['../classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8',1,'svo::Frame']]],\n  ['trackanddetect',['trackAndDetect',['../classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0',1,'svo::FeatureTracker']]],\n  ['tracker',['Tracker',['../classTracker.html',1,'Tracker'],['../classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb',1,'Tracker::Tracker()']]],\n  ['tracker_5f',['tracker_',['../classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d',1,'svo::AbstractInitialization']]],\n  ['trackframe',['trackFrame',['../classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446',1,'LKSE3']]],\n  ['trackframebundle',['trackFrameBundle',['../classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde',1,'svo::FeatureTracker']]],\n  ['tracking_5fquality_5f',['tracking_quality_',['../classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e',1,'svo::FrameHandlerBase']]],\n  ['trackingquality',['trackingQuality',['../classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035',1,'svo::FrameHandlerBase']]],\n  ['trackingthread',['trackingThread',['../classTracker.html#ae701ed9604790939eeefd0dcd4024a6a',1,'Tracker']]],\n  ['transform',['transform',['../classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4',1,'svo::Map']]],\n  ['trials_5f',['trials_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['triangulatelinear',['triangulateLinear',['../classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc',1,'svo::Point']]],\n  ['triggermapexpansion',['TriggerMapExpansion',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html',1,'trigger_map_expansion']]],\n  ['ts_5f',['ts_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['ts_5fref_5f',['ts_ref_',['../classMosaic.html#a20353ba89de5fae20b608b04ca01b49f',1,'Mosaic']]],\n  ['tukeyweightfunction',['TukeyWeightFunction',['../classvk_1_1solver_1_1TukeyWeightFunction.html',1,'vk::solver']]],\n  ['twopointinit',['TwoPointInit',['../classsvo_1_1TwoPointInit.html',1,'svo']]],\n  ['type',['type',['../structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1',1,'svo::Reprojector::Candidate::type()'],['../structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b',1,'svo::FeatureWrapper::type()'],['../classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c',1,'svo::Point::type()']]],\n  ['type_5f',['type_',['../classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a',1,'svo::Point']]],\n  ['type_5ffocus_5fmeasure_5f',['type_focus_measure_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['type_5fvec_5f',['type_vec_',['../classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c',1,'svo::Frame']]]\n];\n"
  },
  {
    "path": "docs/search/all_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_15.js",
    "content": "var searchData=\n[\n  ['undistort_5fmapx_5f',['undistort_mapx_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['undistort_5fmapy_5f',['undistort_mapy_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['uninitialized',['UNINITIALIZED',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268',1,'vk::cameras::ProjectionResult']]],\n  ['unitscaleestimator',['UnitScaleEstimator',['../classvk_1_1solver_1_1UnitScaleEstimator.html',1,'vk::solver']]],\n  ['unitweightfunction',['UnitWeightFunction',['../classvk_1_1solver_1_1UnitWeightFunction.html',1,'vk::solver']]],\n  ['unregister',['unregister',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['update',['update',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4',1,'depth_from_defocus::DepthFromDefocusNode::update()'],['../classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46',1,'Mosaic::update()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f',1,'vk::solver::MiniLeastSquaresSolver::update()']]],\n  ['update_5f3d_5fpoint',['update_3d_point',['../structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d',1,'svo::DepthFilterOptions']]],\n  ['update_5fseeds_5fwith_5fold_5fkeyframes',['update_seeds_with_old_keyframes',['../structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9',1,'svo::BaseOptions']]],\n  ['updatehessiangradientunitplane',['updateHessianGradientUnitPlane',['../classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd',1,'svo::Point']]],\n  ['updatehessiangradientunitsphere',['updateHessianGradientUnitSphere',['../classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e',1,'svo::Point']]],\n  ['updatemap',['updateMap',['../classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6',1,'Tracker']]],\n  ['updateseeds',['updateSeeds',['../classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2',1,'svo::DepthFilter']]],\n  ['updateseedsloop',['updateSeedsLoop',['../classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1',1,'svo::DepthFilter']]],\n  ['updatetransformation',['updateTransformation',['../classLKSE3.html#af61c47c8c61665f5796cd0af8d761547',1,'LKSE3']]],\n  ['updatezmssd',['updateZMSSD',['../classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424',1,'svo::Matcher']]],\n  ['use_5fasync_5freprojectors',['use_async_reprojectors',['../structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5',1,'svo::BaseOptions']]],\n  ['use_5fimu',['use_imu',['../structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c',1,'svo::BaseOptions']]],\n  ['use_5finverse_5fdepth',['use_inverse_depth',['../structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4',1,'svo::DepthFilterOptions']]],\n  ['use_5fthreaded_5fdepthfilter',['use_threaded_depthfilter',['../structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee',1,'svo::DepthFilterOptions']]],\n  ['userinputthread',['UserInputThread',['../classvk_1_1UserInputThread.html',1,'vk']]]\n];\n"
  },
  {
    "path": "docs/search/all_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_16.js",
    "content": "var searchData=\n[\n  ['vikit',['VIKIT',['../md_svo_vikit_README.html',1,'']]],\n  ['velocity',['velocity',['../classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e',1,'svo::ImuInitialization']]],\n  ['velocity_5fsigma',['velocity_sigma',['../classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e',1,'svo::ImuInitialization']]],\n  ['verbose',['verbose',['../structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4',1,'svo::DepthFilterOptions::verbose()'],['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6',1,'vk::solver::MiniLeastSquaresSolverOptions::verbose()']]],\n  ['vinodestate',['ViNodeState',['../classsvo_1_1ViNodeState.html',1,'svo']]],\n  ['virtual_5fcam_5f',['virtual_cam_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['virtual_5fheight_5f',['virtual_height_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['virtual_5fwidth_5f',['virtual_width_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['visualizer',['Visualizer',['../classsvo_1_1Visualizer.html',1,'svo']]],\n  ['voteforcell',['voteForCell',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voteforcellbilinear',['voteForCellBilinear',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voxel_5ffilter_5fleaf_5fsize_5f',['voxel_filter_leaf_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voxelgridat',['voxelGridAt',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d',1,'depth_from_defocus::DepthFromDefocusNode::voxelGridAt(const std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z) const'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70',1,'depth_from_defocus::DepthFromDefocusNode::voxelGridAt(std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z)']]]\n];\n"
  },
  {
    "path": "docs/search/all_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_17.js",
    "content": "var searchData=\n[\n  ['w_5f',['w_',['../classMosaic.html#a003358a147ccb575966016de5cde0bf3',1,'Mosaic']]],\n  ['w_5fv_5fb_5f',['W_v_B_',['../classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3',1,'svo::ViNodeState']]],\n  ['w_5fvirt_5f',['w_virt_',['../classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235',1,'Mosaic']]],\n  ['warp_5fmode',['warp_mode',['../classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091',1,'motion_correction::WarpUpdateParams']]],\n  ['warpupdateparams',['WarpUpdateParams',['../classmotion__correction_1_1WarpUpdateParams.html',1,'motion_correction']]],\n  ['weight_5fscale_5frot_5f',['weight_scale_rot_',['../classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6',1,'LKSE3']]],\n  ['weight_5fscale_5ftrans_5f',['weight_scale_trans_',['../classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0',1,'LKSE3']]],\n  ['weightfunction',['WeightFunction',['../classvk_1_1solver_1_1WeightFunction.html',1,'vk::solver']]],\n  ['width_5f',['width_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3',1,'dvs_bootstrapping::EventsFramesBootstrapper::width_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d',1,'depth_from_defocus::DepthFromDefocusNode::width_()'],['../classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9',1,'LKSE3::width_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f',1,'evo_utils::camera::PinholeCamera::width_()']]],\n  ['window_5fsize_5f',['window_size_',['../classMosaic.html#a8a95091b2b681537c0953833908da6de',1,'Mosaic']]],\n  ['workerbase',['WorkerBase',['../classrpg__common_1_1WorkerBase.html',1,'rpg_common']]],\n  ['world_5fframe_5fid_5f',['world_frame_id_',['../classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3',1,'dvs_bootstrapping::Bootstrapper::world_frame_id_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54',1,'depth_from_defocus::DepthFromDefocusNode::world_frame_id_()'],['../classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002',1,'Mosaic::world_frame_id_()'],['../classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802',1,'DvsReconstruction::world_frame_id_()']]]\n];\n"
  },
  {
    "path": "docs/search/all_18.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_18.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_18.js",
    "content": "var searchData=\n[\n  ['x',['x',['../structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750',1,'svo::Corner']]],\n  ['x_5f',['x_',['../classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e',1,'LKSE3']]],\n  ['xyz_5fref_5fcache_5f',['xyz_ref_cache_',['../classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f',1,'svo::SparseImgAlign']]]\n];\n"
  },
  {
    "path": "docs/search/all_19.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_19.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_19.js",
    "content": "var searchData=\n[\n  ['y',['y',['../structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec',1,'svo::Corner']]]\n];\n"
  },
  {
    "path": "docs/search/all_1a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_1a.js",
    "content": "var searchData=\n[\n  ['zeronumericaldiff',['ZeroNumericalDiff',['../classaslam_1_1common_1_1ZeroNumericalDiff.html',1,'aslam::common']]],\n  ['zmssd',['ZMSSD',['../classsvo_1_1patch__score_1_1ZMSSD.html',1,'svo::patch_score']]]\n];\n"
  },
  {
    "path": "docs/search/all_1b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_1b.js",
    "content": "var searchData=\n[\n  ['_7eabstractdetector',['~AbstractDetector',['../classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225',1,'svo::AbstractDetector']]],\n  ['_7edepthfilter',['~DepthFilter',['../classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56',1,'svo::DepthFilter']]],\n  ['_7edepthfromdefocusnode',['~DepthFromDefocusNode',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['_7eframe',['~Frame',['../classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174',1,'svo::Frame']]],\n  ['_7eframegpu',['~FrameGpu',['../classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c',1,'svo::FrameGpu']]],\n  ['_7epoint',['~Point',['../classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97',1,'svo::Point']]]\n];\n"
  },
  {
    "path": "docs/search/all_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_2.js",
    "content": "var searchData=\n[\n  ['back',['back',['../classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506',1,'svo::FeatureTrack']]],\n  ['back_5fproject',['back_project',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f',1,'vikit_py::pinhole_camera::PinholeCamera']]],\n  ['backendinterface',['BackendInterface',['../classsvo_1_1BackendInterface.html',1,'svo']]],\n  ['backendinterfaceoptions',['BackendInterfaceOptions',['../structsvo_1_1BackendInterfaceOptions.html',1,'svo']]],\n  ['backendoptimizer',['BackendOptimizer',['../classsvo_1_1BackendOptimizer.html',1,'svo']]],\n  ['backendvisualizer',['BackendVisualizer',['../classsvo_1_1BackendVisualizer.html',1,'svo']]],\n  ['backproject3',['backProject3',['../classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec',1,'vk::cameras::CameraGeometry::backProject3()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15',1,'vk::cameras::CameraGeometryBase::backProject3(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const =0'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055',1,'vk::cameras::CameraGeometryBase::backProject3(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const']]],\n  ['baseoptions',['BaseOptions',['../structsvo_1_1BaseOptions.html',1,'svo']]],\n  ['batch_5fsize_5f',['batch_size_',['../classLKSE3.html#a7349f324c27c5b02700a513c9524da79',1,'LKSE3']]],\n  ['batches_5f',['batches_',['../classLKSE3.html#a2101771947c5a50deca73658a43b567c',1,'LKSE3']]],\n  ['batchworker',['BatchWorker',['../classrpg__common_1_1BatchWorker.html',1,'rpg_common']]],\n  ['benchmarknode',['BenchmarkNode',['../classsvo_1_1BenchmarkNode.html',1,'svo']]],\n  ['beta',['beta',['../structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81',1,'svo::SparseImgAlignState']]],\n  ['boostrapper',['Boostrapper',['../classpose__to__tf_1_1Boostrapper.html',1,'pose_to_tf']]],\n  ['bootstrap',['bootstrap',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['bootstrap_5fframe_5fid_5f',['bootstrap_frame_id_',['../classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9',1,'dvs_bootstrapping::Bootstrapper::bootstrap_frame_id_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532',1,'depth_from_defocus::DepthFromDefocusNode::bootstrap_frame_id_()']]],\n  ['bootstrapper',['Bootstrapper',['../classdvs__bootstrapping_1_1Bootstrapper.html',1,'dvs_bootstrapping']]],\n  ['bootstrappingthread',['bootstrappingThread',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['border',['border',['../structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391',1,'svo::DetectorOptions']]],\n  ['buffer_5f',['buffer_',['../classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f',1,'svo::CsvDatasetReader']]],\n  ['bundleadjustment',['bundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b',1,'svo::AbstractBundleAdjustment::bundleAdjustment()'],['../classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb',1,'svo::BackendInterface::bundleAdjustment()']]],\n  ['bundleid',['bundleId',['../classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37',1,'svo::Frame']]]\n];\n"
  },
  {
    "path": "docs/search/all_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_3.js",
    "content": "var searchData=\n[\n  ['c_5f',['c_',['../classMosaic.html#a826ebc128647464ed1c24650e08f4761',1,'Mosaic::c_()'],['../classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678',1,'DvsReconstruction::c_()']]],\n  ['callbackhost',['CallbackHost',['../classrpg__common_1_1CallbackHost.html',1,'rpg_common']]],\n  ['callbackhost_3c_20const_20framebundleptr_20_26_3e',['CallbackHost&lt; const FrameBundlePtr &amp;&gt;',['../classrpg__common_1_1CallbackHost.html',1,'rpg_common']]],\n  ['cam',['cam',['../classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f',1,'svo::Frame']]],\n  ['cam_5f',['cam_',['../classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df',1,'svo::Frame']]],\n  ['camera_5finfo_5fsub_5f',['camera_info_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3',1,'dvs_bootstrapping::Bootstrapper::camera_info_sub_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd',1,'depth_from_defocus::DepthFromDefocusNode::camera_info_sub_()'],['../classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3',1,'DvsReconstruction::camera_info_sub_()'],['../classTracker.html#a5a4accfc84b455232a1fe11ad7d34658',1,'Tracker::camera_info_sub_()']]],\n  ['camerageometry',['CameraGeometry',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometry_3c_20equidistantfisheyeprojection_20_3e',['CameraGeometry&lt; EquidistantFisheyeProjection &gt;',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometry_3c_20omniprojection_20_3e',['CameraGeometry&lt; OmniProjection &gt;',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometrybase',['CameraGeometryBase',['../classvk_1_1cameras_1_1CameraGeometryBase.html',1,'vk::cameras::CameraGeometryBase'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e',1,'vk::cameras::CameraGeometryBase::CameraGeometryBase()']]],\n  ['camerainfocallback',['cameraInfoCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a',1,'dvs_bootstrapping::Bootstrapper::cameraInfoCallback()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda',1,'depth_from_defocus::DepthFromDefocusNode::cameraInfoCallback()'],['../classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236',1,'DvsReconstruction::cameraInfoCallback()'],['../classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6',1,'Tracker::cameraInfoCallback()']]],\n  ['camerameasurement',['CameraMeasurement',['../structsvo_1_1dataset_1_1CameraMeasurement.html',1,'svo::dataset']]],\n  ['cameras_5f',['cameras_',['../classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27',1,'vk::cameras::NCamera']]],\n  ['camerastest',['CamerasTest',['../classCamerasTest.html',1,'']]],\n  ['cams_5f',['cams_',['../classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d',1,'svo::FrameHandlerBase']]],\n  ['candidate',['Candidate',['../structsvo_1_1Reprojector_1_1Candidate.html',1,'svo::Reprojector']]],\n  ['cannydetector',['CannyDetector',['../classsvo_1_1CannyDetector.html',1,'svo']]],\n  ['cell_5fsize',['cell_size',['../structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9',1,'svo::ReprojectorOptions::cell_size()'],['../structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c',1,'svo::DetectorOptions::cell_size()']]],\n  ['cellindextodepth',['cellIndexToDepth',['../classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a',1,'depth_from_defocus::DepthVector']]],\n  ['checkkeypoints',['checkKeyPoints',['../classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697',1,'svo::Frame']]],\n  ['chi2_5f',['chi2_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['cleareventqueue',['clearEventQueue',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde',1,'dvs_bootstrapping::EventsFramesBootstrapper::clearEventQueue()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53',1,'depth_from_defocus::DepthFromDefocusNode::clearEventQueue()'],['../classTracker.html#a269a1f966b13dd619a7b06ff96b07e84',1,'Tracker::clearEventQueue()']]],\n  ['clearmask',['clearMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed',1,'vk::cameras::CameraGeometryBase']]],\n  ['closekeyframes',['closeKeyframes',['../classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2',1,'svo::FrameHandlerBase']]],\n  ['compute',['compute',['../classMosaic.html#ad8fa166741a0b96227d348072cae2ea4',1,'Mosaic::compute()'],['../classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41',1,'vk::solver::ScaleEstimator::compute()'],['../classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398',1,'vk::solver::UnitScaleEstimator::compute()'],['../classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4',1,'vk::solver::MADScaleEstimator::compute()'],['../classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115',1,'vk::solver::NormalDistributionScaleEstimator::compute()']]],\n  ['computeentropy',['computeEntropy',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['confidence_5fmask_5f',['confidence_mask_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['convert_3c_20eigen_3a_3amatrix_3c_20scalar_5f_2c_20a_5f_2c_20b_5f_2c_20c_5f_2c_20d_5f_2c_20e_5f_20_3e_20_3e',['convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;',['../structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aqueue_3c_20valuetype_20_3e_20_3e',['convert&lt; std::queue&lt; ValueType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3ashared_5fptr_3c_20vk_3a_3acameras_3a_3acamerageometrybase_20_3e_20_3e',['convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3ashared_5fptr_3c_20vk_3a_3acameras_3a_3ancamera_20_3e_20_3e',['convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aunordered_5fmap_3c_20keytype_2c_20valuetype_20_3e_20_3e',['convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aunordered_5fset_3c_20keytype_20_3e_20_3e',['convert&lt; std::unordered_set&lt; KeyType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20vk_3a_3acameras_3a_3acamerageometrybase_20_3e',['convert&lt; vk::cameras::CameraGeometryBase &gt;',['../structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html',1,'YAML']]],\n  ['convert_3c_20vk_3a_3acameras_3a_3ancamera_20_3e',['convert&lt; vk::cameras::NCamera &gt;',['../structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html',1,'YAML']]],\n  ['copilot_5fsub_5f',['copilot_sub_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['copilotcallback',['copilotCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['copyfeaturesfrom',['copyFeaturesFrom',['../classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74',1,'svo::Frame']]],\n  ['corner',['Corner',['../structsvo_1_1Corner.html',1,'svo']]],\n  ['cov',['cov',['../classMosaic.html#a39d705ffa05effc9b4692c181aa115cb',1,'Mosaic']]],\n  ['createimgpyramid',['createImgPyramid',['../namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228',1,'svo::frame_utils']]],\n  ['createrandomkeypoint',['createRandomKeypoint',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f',1,'vk::cameras::CameraGeometryBase']]],\n  ['criteria',['criteria',['../classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08',1,'motion_correction::WarpUpdateParams']]],\n  ['csvdatasetreader',['CsvDatasetReader',['../classsvo_1_1CsvDatasetReader.html',1,'svo']]],\n  ['cu_5fimg_5fpyramid_5fcopy_5f',['cu_img_pyramid_copy_',['../classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f',1,'svo::FrameGpu']]],\n  ['cur_5fev_5f',['cur_ev_',['../classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d',1,'DvsReconstruction']]],\n  ['cur_5fframes_5f',['cur_frames_',['../classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27',1,'svo::SparseImgAlignBase']]],\n  ['cur_5fpx',['cur_px',['../structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e',1,'svo::Reprojector::Candidate']]],\n  ['current_5fevent_5f',['current_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['cx_5f',['cx_',['../classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc',1,'LKSE3::cx_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040',1,'evo_utils::camera::PinholeCamera::cx_()']]],\n  ['cy_5f',['cy_',['../classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08',1,'LKSE3::cy_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b',1,'evo_utils::camera::PinholeCamera::cy_()']]]\n];\n"
  },
  {
    "path": "docs/search/all_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_4.js",
    "content": "var searchData=\n[\n  ['data_5fmutex_5f',['data_mutex_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219',1,'dvs_bootstrapping::Bootstrapper::data_mutex_()'],['../classTracker.html#a2a5d3f77e102c6414c56948fbdf635df',1,'Tracker::data_mutex_()']]],\n  ['decode',['decode',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd',1,'YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;::decode()'],['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228',1,'YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;::decode()']]],\n  ['decompose',['decompose',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79',1,'cv::HomographyDecomposition::HomographyDecompZhang::decompose()'],['../classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61',1,'cv::HomographyDecomposition::HomographyDecompInria::decompose()']]],\n  ['decomposehomography',['decomposeHomography',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d',1,'cv::HomographyDecomposition::HomographyDecomp']]],\n  ['delay_5fimu_5fcam',['delay_imu_cam',['../classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781',1,'svo::ImuCalibration']]],\n  ['deletelandmark',['deleteLandmark',['../classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5',1,'svo::Frame']]],\n  ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]],\n  ['depth_5f',['depth_',['../classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2',1,'svo::PatchNormal']]],\n  ['depth_5fat_5fcurrent_5fframe_5f',['depth_at_current_frame_',['../classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c',1,'svo::AbstractInitialization']]],\n  ['depth_5fmedian_5f',['depth_median_',['../classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e',1,'Mosaic::depth_median_()'],['../classLKSE3.html#ace9861d1a3afefa09c08292a21d78021',1,'LKSE3::depth_median_()'],['../classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20',1,'svo::FrameHandlerBase::depth_median_()']]],\n  ['depth_5fmin_5f',['depth_min_',['../classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab',1,'svo::FrameHandlerBase']]],\n  ['depth_5fref_5f',['depth_ref_',['../classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4',1,'LKSE3']]],\n  ['depthestimator',['DepthEstimator',['../classsvo_1_1DepthEstimator.html',1,'svo']]],\n  ['depthfilter',['DepthFilter',['../classsvo_1_1DepthFilter.html',1,'svo::DepthFilter'],['../classsvo_1_1DepthFilter.html#a0ef9716f79156168d6b489c163ffe032',1,'svo::DepthFilter::DepthFilter(const DepthFilterOptions &amp;options, const DetectorOptions &amp;detector, const std::shared_ptr&lt; CameraBundle &gt; &amp;cams)'],['../classsvo_1_1DepthFilter.html#a82372b70e898b3d4f57abb92567f2971',1,'svo::DepthFilter::DepthFilter(const DepthFilterOptions &amp;options)']]],\n  ['depthfilteroptions',['DepthFilterOptions',['../structsvo_1_1DepthFilterOptions.html',1,'svo']]],\n  ['depthfromdefocusnode',['DepthFromDefocusNode',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html',1,'depth_from_defocus::DepthFromDefocusNode'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c',1,'depth_from_defocus::DepthFromDefocusNode::DepthFromDefocusNode()']]],\n  ['depthmap',['depthmap',['../classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a',1,'Mosaic']]],\n  ['depths_5fvec_5f',['depths_vec_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['depthtocell',['depthToCell',['../classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b',1,'depth_from_defocus::DepthVector']]],\n  ['depthtocellindex',['depthToCellIndex',['../classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0',1,'depth_from_defocus::DepthVector']]],\n  ['depthvector',['DepthVector',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus::DepthVector&lt; DerivedDepthVector &gt;'],['../classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7',1,'depth_from_defocus::DepthVector::DepthVector()']]],\n  ['depthvector_3c_20inversedepthvector_20_3e',['DepthVector&lt; InverseDepthVector &gt;',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus']]],\n  ['depthvector_3c_20lineardepthvector_20_3e',['DepthVector&lt; LinearDepthVector &gt;',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus']]],\n  ['detect',['detect',['../classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc',1,'svo::AllPixelsDetector']]],\n  ['detector_5ftype',['detector_type',['../structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20',1,'svo::DetectorOptions']]],\n  ['detectoroptions',['DetectorOptions',['../structsvo_1_1DetectorOptions.html',1,'svo']]],\n  ['detectortype',['DetectorType',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18',1,'svo']]],\n  ['doreconstruction',['doReconstruction',['../classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611',1,'DvsReconstruction']]],\n  ['down',['down',['../classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad',1,'vikit_py::transformations::Arcball']]],\n  ['drag',['drag',['../classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20',1,'vikit_py::transformations::Arcball']]],\n  ['drawevents',['drawEvents',['../classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24',1,'LKSE3']]],\n  ['draweventsnn',['drawEventsNN',['../classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2',1,'LKSE3']]],\n  ['dvs_5fcam_5f',['dvs_cam_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['dvsmappingnodelet',['DvsMappingNodelet',['../classdepth__from__defocus_1_1DvsMappingNodelet.html',1,'depth_from_defocus']]],\n  ['dvsreconstruction',['DvsReconstruction',['../classDvsReconstruction.html',1,'']]],\n  ['dvstrackingnodelet',['DvsTrackingNodelet',['../classDvsTrackingNodelet.html',1,'']]],\n  ['dx_5f',['dx_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/all_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_5.js",
    "content": "var searchData=\n[\n  ['emptypointstrash',['emptyPointsTrash',['../classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e',1,'svo::Map']]],\n  ['enable_5fvisuals_5f',['enable_visuals_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['epi_5fimage_5f',['epi_image_',['../classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184',1,'svo::Matcher']]],\n  ['epi_5flength_5fpyramid_5f',['epi_length_pyramid_',['../classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c',1,'svo::Matcher']]],\n  ['eps',['eps',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['equidistantdistortion',['EquidistantDistortion',['../classvk_1_1cameras_1_1EquidistantDistortion.html',1,'vk::cameras']]],\n  ['equidistantfisheyegeometry',['EquidistantFisheyeGeometry',['../classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html',1,'vk::cameras']]],\n  ['equidistantfisheyeprojection',['EquidistantFisheyeProjection',['../classvk_1_1cameras_1_1EquidistantFisheyeProjection.html',1,'vk::cameras']]],\n  ['errormultiplier',['errorMultiplier',['../classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec',1,'vk::cameras::CameraGeometry::errorMultiplier()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0',1,'vk::cameras::CameraGeometryBase::errorMultiplier()']]],\n  ['estimatetrajectory',['estimateTrajectory',['../classTracker.html#a701c875240036fde1bf0df16665859ed',1,'Tracker']]],\n  ['evaluateerror',['evaluateError',['../classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d',1,'svo::SparseImgAlign::evaluateError()'],['../classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef',1,'svo::SparseImgAlignBase::evaluateError()'],['../classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6',1,'svo::SparseImgAlignGpu::evaluateError()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86',1,'vk::solver::MiniLeastSquaresSolver::evaluateError()']]],\n  ['event_5fsub_5f',['event_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13',1,'dvs_bootstrapping::Bootstrapper::event_sub_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5',1,'depth_from_defocus::DepthFromDefocusNode::event_sub_()'],['../classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99',1,'DvsReconstruction::event_sub_()'],['../classTracker.html#a03e620f13a98ac9895069762c00cc3a0',1,'Tracker::event_sub_()']]],\n  ['eventcallback',['eventCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23',1,'dvs_bootstrapping::Bootstrapper::eventCallback()'],['../classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c',1,'DvsReconstruction::eventCallback()'],['../classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65',1,'Tracker::eventCallback()']]],\n  ['eventqueue_5f',['eventQueue_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['events_5f',['events_',['../classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78',1,'DvsReconstruction::events_()'],['../classTracker.html#ab4357f4055315cb02f22a646f73b42fb',1,'Tracker::events_()']]],\n  ['events_5ffor_5freconstruction_5f',['events_for_reconstruction_',['../classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3',1,'DvsReconstruction']]],\n  ['events_5fto_5frecreate_5fkf_5f',['events_to_recreate_kf_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['eventsframesbootstrapper',['EventsFramesBootstrapper',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html',1,'dvs_bootstrapping']]],\n  ['evo',['Evo',['../classrqt__evo_1_1evo_1_1Evo.html',1,'rqt_evo::evo']]],\n  ['evowidget',['EvoWidget',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html',1,'rqt_evo::evo_widget']]],\n  ['exposurecallback',['exposureCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['exposureselector',['ExposureSelector',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html',1,'evo_utils::select_exposure_DAVIS']]],\n  ['evo_3a_20event_20based_20visual_20odometry',['EVO: Event based Visual Odometry',['../md_README.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/all_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_6.js",
    "content": "var searchData=\n[\n  ['f',['f',['../structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6',1,'svo::FeatureWrapper']]],\n  ['f_5fvec_5f',['f_vec_',['../classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf',1,'svo::Frame']]],\n  ['fastdetector',['FastDetector',['../classsvo_1_1FastDetector.html',1,'svo']]],\n  ['fastgraddetector',['FastGradDetector',['../classsvo_1_1FastGradDetector.html',1,'svo']]],\n  ['fastmap',['FastMap',['../classgtsam_1_1FastMap.html',1,'gtsam']]],\n  ['fastmap_3c_20int_2c_20std_3a_3apair_3c_20boost_3a_3ashared_5fptr_3c_20smartfactor_20_3e_2c_20int_20_3e_20_3e',['FastMap&lt; int, std::pair&lt; boost::shared_ptr&lt; SmartFactor &gt;, int &gt; &gt;',['../classgtsam_1_1FastMap.html',1,'gtsam']]],\n  ['featureref',['FeatureRef',['../classsvo_1_1FeatureRef.html',1,'svo']]],\n  ['featuretrack',['FeatureTrack',['../classsvo_1_1FeatureTrack.html',1,'svo']]],\n  ['featuretracker',['FeatureTracker',['../classsvo_1_1FeatureTracker.html',1,'svo::FeatureTracker'],['../classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f',1,'svo::FeatureTracker::FeatureTracker()']]],\n  ['featuretrackeroptions',['FeatureTrackerOptions',['../structsvo_1_1FeatureTrackerOptions.html',1,'svo']]],\n  ['featuretrackmeasurement',['FeatureTrackMeasurement',['../structsvo_1_1dataset_1_1FeatureTrackMeasurement.html',1,'svo::dataset']]],\n  ['featurewrapper',['FeatureWrapper',['../structsvo_1_1FeatureWrapper.html',1,'svo::FeatureWrapper'],['../structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1',1,'svo::FeatureWrapper::FeatureWrapper()']]],\n  ['findepipolarmatchdirect',['findEpipolarMatchDirect',['../classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e',1,'svo::Matcher']]],\n  ['findlocalmatch',['findLocalMatch',['../classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55',1,'svo::Matcher']]],\n  ['findmatchdirect',['findMatchDirect',['../classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd',1,'svo::Matcher']]],\n  ['fivepointinit',['FivePointInit',['../classsvo_1_1FivePointInit.html',1,'svo']]],\n  ['frame',['Frame',['../classsvo_1_1Frame.html',1,'svo::Frame'],['../classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d',1,'svo::Frame::Frame(const CameraPtr &amp;cam, const cv::Mat &amp;img, const int64_t timestamp_ns, const size_t n_pyr_levels)'],['../classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594',1,'svo::Frame::Frame(const int id, const int64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)'],['../classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1',1,'svo::Frame::Frame()']]],\n  ['frame_5fcounter_5f',['frame_counter_',['../classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208',1,'svo::FrameHandlerBase::frame_counter_()'],['../classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9',1,'svo::Frame::frame_counter_()']]],\n  ['frame_5fid_5f',['frame_id_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302',1,'depth_from_defocus::DepthFromDefocusNode::frame_id_()'],['../classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5',1,'Mosaic::frame_id_()'],['../classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013',1,'DvsReconstruction::frame_id_()']]],\n  ['frame_5fref_5f',['frame_ref_',['../classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935',1,'svo::PatchNormal']]],\n  ['frame_5fsize_5f',['frame_size_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['framebundle',['FrameBundle',['../classsvo_1_1FrameBundle.html',1,'svo']]],\n  ['framegpu',['FrameGpu',['../classsvo_1_1FrameGpu.html',1,'svo::FrameGpu'],['../classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460',1,'svo::FrameGpu::FrameGpu(const CameraPtr &amp;cam, const cv::Mat &amp;img, const uint64_t timestamp_ns, const size_t n_pyr_levels)'],['../classsvo_1_1FrameGpu.html#ab93bcafca2b6bc7bb11c6dc07e3397ee',1,'svo::FrameGpu::FrameGpu(const int id, const uint64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)'],['../classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e',1,'svo::FrameGpu::FrameGpu()']]],\n  ['framehandlerarray',['FrameHandlerArray',['../classsvo_1_1FrameHandlerArray.html',1,'svo::FrameHandlerArray'],['../classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77',1,'svo::FrameHandlerArray::FrameHandlerArray()']]],\n  ['framehandlerbase',['FrameHandlerBase',['../classsvo_1_1FrameHandlerBase.html',1,'svo::FrameHandlerBase'],['../classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4',1,'svo::FrameHandlerBase::FrameHandlerBase()']]],\n  ['framehandlermono',['FrameHandlerMono',['../classsvo_1_1FrameHandlerMono.html',1,'svo::FrameHandlerMono'],['../classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c',1,'svo::FrameHandlerMono::FrameHandlerMono()']]],\n  ['framehandlerstereo',['FrameHandlerStereo',['../classsvo_1_1FrameHandlerStereo.html',1,'svo::FrameHandlerStereo'],['../classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2',1,'svo::FrameHandlerStereo::FrameHandlerStereo()']]],\n  ['frames_5f',['frames_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['frames_5fref_5f',['frames_ref_',['../classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d',1,'svo::AbstractInitialization']]],\n  ['front',['front',['../classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e',1,'svo::FeatureTrack']]],\n  ['frontoplanarbootstrapper',['FrontoPlanarBootstrapper',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html',1,'dvs_bootstrapping']]],\n  ['fx_5f',['fx_',['../classLKSE3.html#a899546c1a1fde1e282ba55881ebab589',1,'LKSE3::fx_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1',1,'evo_utils::camera::PinholeCamera::fx_()']]],\n  ['fy_5f',['fy_',['../classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca',1,'LKSE3::fy_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609',1,'evo_utils::camera::PinholeCamera::fy_()']]]\n];\n"
  },
  {
    "path": "docs/search/all_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_7.js",
    "content": "var searchData=\n[\n  ['g_5f',['g_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['genericprojectionfactor',['GenericProjectionFactor',['../classgtsam_1_1GenericProjectionFactor.html',1,'gtsam']]],\n  ['get_5ft_5fc_5fb',['get_T_C_B',['../classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f',1,'vk::cameras::NCamera']]],\n  ['get_5ft_5fw_5fb',['get_T_W_B',['../classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a',1,'svo::FrameBundle']]],\n  ['getabsolutegradient',['getAbsoluteGradient',['../classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772',1,'Mosaic']]],\n  ['getaccumulated',['getAccumulated',['../classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a',1,'vk::Timer']]],\n  ['getcamera',['getCamera',['../classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306',1,'vk::cameras::NCamera']]],\n  ['getcamerashared',['getCameraShared',['../classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45',1,'vk::cameras::NCamera::getCameraShared(size_t camera_index)'],['../classvk_1_1cameras_1_1NCamera.html#a615f3b14f9e3501071481444c4bbf325',1,'vk::cameras::NCamera::getCameraShared(size_t camera_index) const']]],\n  ['getcameravector',['getCameraVector',['../classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d',1,'vk::cameras::NCamera']]],\n  ['getch',['getch',['../classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e',1,'vk::UserInputThread']]],\n  ['getch_5f',['getch_',['../classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99',1,'vk::UserInputThread']]],\n  ['getche',['getche',['../classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d',1,'vk::UserInputThread']]],\n  ['getclosestkeyframe',['getClosestKeyframe',['../classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec',1,'svo::Map']]],\n  ['getclosestnkeyframeswithoberlap',['getClosestNKeyframesWithOberlap',['../classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c',1,'svo::Map']]],\n  ['getcloseviewobs',['getCloseViewObs',['../classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38',1,'svo::Point']]],\n  ['getconstrain',['getconstrain',['../classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4',1,'vikit_py::transformations::Arcball']]],\n  ['getcurrenttime',['getCurrentTime',['../classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499',1,'vk::Timer']]],\n  ['getcurrenttimestr',['getCurrentTimeStr',['../classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94',1,'vk::Timer']]],\n  ['getdepthvector',['getDepthVector',['../classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a',1,'depth_from_defocus::DepthVector']]],\n  ['getdetailedstatus',['getDetailedStatus',['../structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968',1,'vk::cameras::ProjectionResult']]],\n  ['getdistortionparameters',['getDistortionParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6',1,'vk::cameras::CameraGeometry::getDistortionParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d',1,'vk::cameras::CameraGeometryBase::getDistortionParameters()']]],\n  ['geterror',['getError',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['getfilteredpose',['getFilteredPose',['../classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b',1,'Tracker']]],\n  ['getfurthestkeyframe',['getFurthestKeyframe',['../classsvo_1_1Map.html#a20818729516f78d838a34673449bc479',1,'svo::Map']]],\n  ['gethessian',['getHessian',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['getinitialattitude',['getInitialAttitude',['../classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a',1,'svo::ImuHandler']]],\n  ['getinput',['getInput',['../classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f',1,'vk::UserInputThread']]],\n  ['getintrinsicparameters',['getIntrinsicParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4',1,'vk::cameras::CameraGeometry::getIntrinsicParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d',1,'vk::cameras::CameraGeometryBase::getIntrinsicParameters()']]],\n  ['getkeyframebyid',['getKeyframeById',['../classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2',1,'svo::Map']]],\n  ['getlabel',['getLabel',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147',1,'vk::cameras::CameraGeometryBase::getLabel()'],['../classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997',1,'vk::cameras::NCamera::getLabel()']]],\n  ['getlastkeyframe',['getLastKeyframe',['../classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2',1,'svo::Map']]],\n  ['getmask',['getMask',['../classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e',1,'svo::Frame::getMask()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0',1,'vk::cameras::CameraGeometryBase::getMask()']]],\n  ['getmatcher',['getMatcher',['../classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3',1,'svo::DepthFilter']]],\n  ['getmeasurements',['getMeasurements',['../classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9',1,'svo::ImuHandler']]],\n  ['getmediandisparity',['getMedianDisparity',['../classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4',1,'svo::SparseImgAlignGpu']]],\n  ['getmilliseconds',['getMilliseconds',['../classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e',1,'vk::Timer']]],\n  ['getmintimestampnanoseconds',['getMinTimestampNanoseconds',['../classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f',1,'svo::FrameBundle']]],\n  ['getmotionprior',['getMotionPrior',['../classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066',1,'svo::FrameHandlerBase']]],\n  ['getncamera',['getNCamera',['../classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9',1,'svo::FrameHandlerBase']]],\n  ['getnframeindex',['getNFrameIndex',['../classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8',1,'svo::Frame']]],\n  ['getnumcameras',['getNumCameras',['../classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332',1,'vk::cameras::NCamera']]],\n  ['getnumtrackedanddisparityperframe',['getNumTrackedAndDisparityPerFrame',['../classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9',1,'svo::FeatureTracker']]],\n  ['getoverlapkeyframes',['getOverlapKeyframes',['../classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb',1,'svo::Map']]],\n  ['getposeat',['getPoseAt',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['getreconstructedimage',['getReconstructedImage',['../classMosaic.html#aa554763fc8027f7aaa388120001d5e09',1,'Mosaic']]],\n  ['getrelativerotationprior',['getRelativeRotationPrior',['../classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02',1,'svo::ImuHandler']]],\n  ['getscenedepth',['getSceneDepth',['../namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1',1,'svo::frame_utils']]],\n  ['getseeddepth',['getSeedDepth',['../classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d',1,'svo::Frame']]],\n  ['getseedframe',['getSeedFrame',['../classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7',1,'svo::Point']]],\n  ['getseedposinframe',['getSeedPosInFrame',['../classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577',1,'svo::Frame']]],\n  ['getsortedkeyframes',['getSortedKeyframes',['../classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c',1,'svo::Map']]],\n  ['gettime',['getTime',['../classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1',1,'vk::Timer']]],\n  ['gettimestampnsec',['getTimestampNSec',['../classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46',1,'svo::Frame']]],\n  ['gettimestampsec',['getTimestampSec',['../classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528',1,'svo::Frame']]],\n  ['gettransformationvector',['getTransformationVector',['../classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d',1,'vk::cameras::NCamera']]],\n  ['gettriangulationparallax',['getTriangulationParallax',['../classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6',1,'svo::Point']]],\n  ['gettype',['getType',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7',1,'vk::cameras::CameraGeometryBase']]],\n  ['grad',['grad',['../classMosaic.html#abf3db73be0330023eb59bb65a012538b',1,'Mosaic::grad()'],['../structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c',1,'svo::FeatureWrapper::grad()']]],\n  ['grad_5fvec_5f',['grad_vec_',['../classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6',1,'svo::Frame']]],\n  ['gradientdetector',['GradientDetector',['../classsvo_1_1GradientDetector.html',1,'svo']]],\n  ['gradientdetectorgrid',['GradientDetectorGrid',['../classsvo_1_1GradientDetectorGrid.html',1,'svo']]],\n  ['gradienthuangmumforddetector',['GradientHuangMumfordDetector',['../classsvo_1_1GradientHuangMumfordDetector.html',1,'svo']]],\n  ['graphmanager',['GraphManager',['../classsvo_1_1GraphManager.html',1,'svo']]],\n  ['graphmanageroptions',['GraphManagerOptions',['../structsvo_1_1GraphManagerOptions.html',1,'svo']]],\n  ['gravity_5fmagnitude',['gravity_magnitude',['../classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875',1,'svo::ImuCalibration']]],\n  ['gyro_5fbias_5f',['gyro_bias_',['../classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de',1,'svo::ViNodeState']]],\n  ['gyro_5fbias_5frandom_5fwalk_5fsigma',['gyro_bias_random_walk_sigma',['../classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545',1,'svo::ImuCalibration']]],\n  ['gyro_5fnoise_5fdensity',['gyro_noise_density',['../classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498',1,'svo::ImuCalibration']]]\n];\n"
  },
  {
    "path": "docs/search/all_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_8.js",
    "content": "var searchData=\n[\n  ['h_5f',['h_',['../classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c',1,'Mosaic::h_()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf',1,'vk::solver::MiniLeastSquaresSolver::H_()']]],\n  ['h_5finv_5f',['h_inv_',['../classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3',1,'svo::Matcher']]],\n  ['h_5fvirt_5f',['h_virt_',['../classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b',1,'Mosaic']]],\n  ['hash_3c_20std_3a_3afunction_3c_20void_28callbackargs_2e_2e_2e_29_3e_20_3e',['hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;',['../structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html',1,'std']]],\n  ['hasmask',['hasMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16',1,'vk::cameras::CameraGeometryBase']]],\n  ['hasstarted',['hasStarted',['../classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd',1,'svo::FrameHandlerBase']]],\n  ['have_5fdepth_5fprior_5f',['have_depth_prior_',['../classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac',1,'svo::AbstractInitialization']]],\n  ['have_5frotation_5fprior_5f',['have_rotation_prior_',['../classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0',1,'svo::AbstractInitialization']]],\n  ['have_5ftranslation_5fprior_5f',['have_translation_prior_',['../classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686',1,'svo::AbstractInitialization']]],\n  ['height_5f',['height_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236',1,'dvs_bootstrapping::EventsFramesBootstrapper::height_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561',1,'depth_from_defocus::DepthFromDefocusNode::height_()'],['../classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370',1,'LKSE3::height_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c',1,'evo_utils::camera::PinholeCamera::height_()']]],\n  ['homography',['Homography',['../structvk_1_1Homography.html',1,'vk']]],\n  ['homographydecomp',['HomographyDecomp',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html',1,'cv::HomographyDecomposition']]],\n  ['homographydecompinria',['HomographyDecompInria',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html',1,'cv::HomographyDecomposition']]],\n  ['homographydecompzhang',['HomographyDecompZhang',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html',1,'cv::HomographyDecomposition']]],\n  ['homographyinit',['HomographyInit',['../classsvo_1_1HomographyInit.html',1,'svo']]],\n  ['hostcachehandler',['HostCacheHandler',['../structsvo_1_1HostCacheHandler.html',1,'svo']]],\n  ['huberweightfunction',['HuberWeightFunction',['../classvk_1_1solver_1_1HuberWeightFunction.html',1,'vk::solver']]]\n];\n"
  },
  {
    "path": "docs/search/all_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_9.js",
    "content": "var searchData=\n[\n  ['i_5fprior_5f',['I_prior_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['id',['id',['../classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036',1,'svo::Frame::id()'],['../classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6',1,'svo::Point::id()']]],\n  ['id_5f',['id_',['../classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0',1,'svo::Frame::id_()'],['../classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19',1,'svo::Point::id_()']]],\n  ['idle_5f',['idle_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803',1,'dvs_bootstrapping::Bootstrapper::idle_()'],['../classTracker.html#a58bf1175127d9fedbc07fa94a7d02937',1,'Tracker::idle_()']]],\n  ['image',['image',['../classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4',1,'Mosaic']]],\n  ['imagecallback',['imageCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['imageheight',['imageHeight',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c',1,'vk::cameras::CameraGeometryBase']]],\n  ['imagewidth',['imageWidth',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177',1,'vk::cameras::CameraGeometryBase']]],\n  ['img',['img',['../classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f',1,'svo::Frame']]],\n  ['img_5falign_5fest_5fillumination_5fgain',['img_align_est_illumination_gain',['../structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmax_5flevel',['img_align_max_level',['../structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmax_5fnum_5ffeatures',['img_align_max_num_features',['../structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmin_5flevel',['img_align_min_level',['../structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f',1,'svo::BaseOptions']]],\n  ['img_5falign_5fprior_5flambda_5frot',['img_align_prior_lambda_rot',['../structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57',1,'svo::BaseOptions']]],\n  ['img_5falign_5fprior_5flambda_5ftrans',['img_align_prior_lambda_trans',['../structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020',1,'svo::BaseOptions']]],\n  ['img_5falign_5frobustification',['img_align_robustification',['../structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6',1,'svo::BaseOptions']]],\n  ['img_5falign_5fuse_5fdistortion_5fjacobian',['img_align_use_distortion_jacobian',['../structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b',1,'svo::BaseOptions']]],\n  ['img_5fpyr_5f',['img_pyr_',['../classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987',1,'svo::Frame']]],\n  ['imu_5fintegration_5fsigma',['imu_integration_sigma',['../classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030',1,'svo::ImuCalibration']]],\n  ['imu_5frate',['imu_rate',['../classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07',1,'svo::ImuCalibration']]],\n  ['imu_5ftimestamps_5fns_5f',['imu_timestamps_ns_',['../classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721',1,'svo::FrameBundle']]],\n  ['imucalibration',['ImuCalibration',['../classsvo_1_1ImuCalibration.html',1,'svo']]],\n  ['imuhandler',['ImuHandler',['../classsvo_1_1ImuHandler.html',1,'svo']]],\n  ['imuinitialization',['ImuInitialization',['../classsvo_1_1ImuInitialization.html',1,'svo']]],\n  ['imumeasurement',['ImuMeasurement',['../structsvo_1_1ImuMeasurement.html',1,'svo::ImuMeasurement'],['../structsvo_1_1dataset_1_1ImuMeasurement.html',1,'svo::dataset::ImuMeasurement']]],\n  ['imupos',['imuPos',['../classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab',1,'svo::Frame']]],\n  ['in_5fba_5fgraph_5f',['in_ba_graph_',['../classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b',1,'svo::Point']]],\n  ['init_5fcov_5f',['init_cov_',['../classMosaic.html#a1c0a4a5d28cefce72d2d525022235170',1,'Mosaic']]],\n  ['init_5fdisparity_5fpivot_5fratio',['init_disparity_pivot_ratio',['../structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4',1,'svo::InitializationOptions']]],\n  ['init_5fmap_5fscale',['init_map_scale',['../structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc',1,'svo::BaseOptions']]],\n  ['init_5fmin_5fdisparity',['init_min_disparity',['../structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ffeatures',['init_min_features',['../structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ffeatures_5ffactor',['init_min_features_factor',['../structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5finliers',['init_min_inliers',['../structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ftracked',['init_min_tracked',['../structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2',1,'svo::InitializationOptions']]],\n  ['init_5ftype',['init_type',['../structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136',1,'svo::InitializationOptions']]],\n  ['init_5fuse_5fatt_5fand_5fdepth',['init_use_att_and_depth',['../structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4',1,'svo::BaseOptions']]],\n  ['initframe',['initFrame',['../classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd',1,'svo::Frame']]],\n  ['initgpudata',['initGpuData',['../classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a',1,'svo::FrameGpu']]],\n  ['initializationoptions',['InitializationOptions',['../structsvo_1_1InitializationOptions.html',1,'svo']]],\n  ['initialize',['initialize',['../classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4',1,'Tracker']]],\n  ['initializenewtracks',['initializeNewTracks',['../classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25',1,'svo::FeatureTracker']]],\n  ['initializertype',['InitializerType',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192',1,'svo']]],\n  ['initinternal',['initInternal',['../classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5',1,'vk::cameras::NCamera']]],\n  ['initnormal',['initNormal',['../classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4',1,'svo::Point']]],\n  ['inittermios',['initTermios',['../classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d',1,'vk::UserInputThread']]],\n  ['integrateevents',['integrateEvents',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['integratingthread',['integratingThread',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['inversedepthvector',['InverseDepthVector',['../classdepth__from__defocus_1_1InverseDepthVector.html',1,'depth_from_defocus']]],\n  ['invmu_5fsigma2_5fa_5fb_5fvec_5f',['invmu_sigma2_a_b_vec_',['../classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301',1,'svo::Frame']]],\n  ['is_5fkeyframe_5f',['is_keyframe_',['../classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0',1,'svo::Frame']]],\n  ['isam_5fwait_5ftime_5fms',['isam_wait_time_ms',['../structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f',1,'svo::BackendInterfaceOptions']]],\n  ['iskeyframe',['isKeyframe',['../classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2',1,'svo::Frame']]],\n  ['iskeypointvisible',['isKeypointVisible',['../structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb',1,'vk::cameras::ProjectionResult::isKeypointVisible()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4',1,'vk::cameras::CameraGeometryBase::isKeypointVisible()']]],\n  ['iskeypointvisiblewithmargin',['isKeypointVisibleWithMargin',['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce',1,'vk::cameras::CameraGeometryBase']]],\n  ['ismasked',['isMasked',['../classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a',1,'vk::cameras::CameraGeometryBase']]],\n  ['ispatchwithinimage',['isPatchWithinImage',['../classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e',1,'svo::Matcher']]],\n  ['isrotationvalid',['isRotationValid',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1',1,'cv::HomographyDecomposition::HomographyDecomp']]],\n  ['istrackedlandmark',['isTrackedLandmark',['../classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137',1,'svo::Frame']]],\n  ['isvisible',['isVisible',['../classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7',1,'svo::Frame']]],\n  ['iter_5f',['iter_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/all_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_a.js",
    "content": "var searchData=\n[\n  ['j',['J',['../structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75',1,'LKSE3::Keypoint']]],\n  ['jacobian',['jacobian',['../classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912',1,'vk::cameras::RadialTangentialDistortion']]],\n  ['jacobian_5fproj_5fcache_5f',['jacobian_proj_cache_',['../classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09',1,'svo::SparseImgAlign']]],\n  ['jacobian_5fxyz2f',['jacobian_xyz2f',['../classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00',1,'svo::Point']]],\n  ['jacobian_5fxyz2f_5fimu',['jacobian_xyz2f_imu',['../classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a',1,'svo::Frame']]],\n  ['jacobian_5fxyz2image_5fimu',['jacobian_xyz2image_imu',['../classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633',1,'svo::Frame']]],\n  ['jacobian_5fxyz2img_5fimu',['jacobian_xyz2img_imu',['../classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf',1,'svo::Frame']]],\n  ['jacobian_5fxyz2uv',['jacobian_xyz2uv',['../classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9',1,'svo::Frame::jacobian_xyz2uv()'],['../classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684',1,'svo::Point::jacobian_xyz2uv()']]],\n  ['jacobian_5fxyz2uv_5fimu',['jacobian_xyz2uv_imu',['../classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e',1,'svo::Frame']]],\n  ['jjt',['JJt',['../structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91',1,'LKSE3::Keypoint']]],\n  ['job',['Job',['../structsvo_1_1DepthFilter_1_1Job.html',1,'svo::DepthFilter::Job'],['../structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6',1,'svo::DepthFilter::Job::Job()'],['../structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699',1,'svo::DepthFilter::Job::Job(const FramePtr &amp;_cur_frame, const FramePtr &amp;_ref_frame, const size_t _ref_index)'],['../structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb',1,'svo::DepthFilter::Job::Job(const FramePtr &amp;f, double min_d, double max_d, double mean_d)']]]\n];\n"
  },
  {
    "path": "docs/search/all_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_b.js",
    "content": "var searchData=\n[\n  ['k_5f',['K_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d',1,'depth_from_defocus::DepthFromDefocusNode::K_()'],['../classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b',1,'Mosaic::K_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687',1,'evo_utils::camera::PinholeCamera::K_()']]],\n  ['k_5fvirt_5f',['K_virt_',['../classMosaic.html#a10fe521b7d59fef41086247db9a3c53d',1,'Mosaic']]],\n  ['kall',['kAll',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6',1,'svo']]],\n  ['karraygeometric',['kArrayGeometric',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6',1,'svo']]],\n  ['karrayoptimization',['kArrayOptimization',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb',1,'svo']]],\n  ['kcanny',['kCanny',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359',1,'svo']]],\n  ['key_5fpts_5f',['key_pts_',['../classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0',1,'svo::Frame']]],\n  ['keyframecriterion',['KeyframeCriterion',['../namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf',1,'svo']]],\n  ['keyframes_5f',['keyframes_',['../classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e',1,'svo::Map']]],\n  ['keypoint',['Keypoint',['../structLKSE3_1_1Keypoint.html',1,'LKSE3']]],\n  ['keypoint_5foutside_5fimage_5fbox',['KEYPOINT_OUTSIDE_IMAGE_BOX',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a',1,'vk::cameras::ProjectionResult']]],\n  ['keypoint_5fvisible',['KEYPOINT_VISIBLE',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0',1,'vk::cameras::ProjectionResult']]],\n  ['keypointidentifier',['KeypointIdentifier',['../structsvo_1_1KeypointIdentifier.html',1,'svo']]],\n  ['keypoints_5f',['keypoints_',['../classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7',1,'LKSE3']]],\n  ['kf_5fvisibility_5f',['kf_visibility_',['../classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d',1,'LKSE3']]],\n  ['kfast',['kFast',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997',1,'svo']]],\n  ['kfastgrad',['kFastGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97',1,'svo']]],\n  ['kfivepoint',['kFivePoint',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554',1,'svo']]],\n  ['kfselect_5fcriterion',['kfselect_criterion',['../structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fangle',['kfselect_min_angle',['../structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fdist',['kfselect_min_dist',['../structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fdist_5fmetric',['kfselect_min_dist_metric',['../structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe',1,'svo::BaseOptions']]],\n  ['kfselect_5fnumkfs_5flower_5fthresh',['kfselect_numkfs_lower_thresh',['../structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1',1,'svo::BaseOptions']]],\n  ['kfselect_5fnumkfs_5fupper_5fthresh',['kfselect_numkfs_upper_thresh',['../structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8',1,'svo::BaseOptions']]],\n  ['kgrad',['kGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca',1,'svo']]],\n  ['kgradhuangmumford',['kGradHuangMumford',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084',1,'svo']]],\n  ['kgridgrad',['kGridGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b',1,'svo']]],\n  ['khomography',['kHomography',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1',1,'svo']]],\n  ['kinitializing',['kInitializing',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd',1,'svo']]],\n  ['kinv_5f',['KInv_',['../classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7',1,'Mosaic::KInv_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566',1,'evo_utils::camera::PinholeCamera::Kinv_()']]],\n  ['kinv_5fvirt_5f',['KInv_virt_',['../classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918',1,'Mosaic']]],\n  ['klt_5fmax_5fiter',['klt_max_iter',['../structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmax_5flevel',['klt_max_level',['../structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmin_5flevel',['klt_min_level',['../structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmin_5fupdate_5fsquared',['klt_min_update_squared',['../structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fpatch_5fsizes',['klt_patch_sizes',['../structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5ftemplate_5fis_5ffirst_5fobservation',['klt_template_is_first_observation',['../structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43',1,'svo::FeatureTrackerOptions']]],\n  ['koneshot',['kOneShot',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3',1,'svo']]],\n  ['kpaused',['kPaused',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7',1,'svo']]],\n  ['krelocalization',['kRelocalization',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64',1,'svo']]],\n  ['ksobel',['kSobel',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b',1,'svo']]],\n  ['kstereo',['kStereo',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794',1,'svo']]],\n  ['ktracking',['kTracking',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c',1,'svo']]],\n  ['ktwopoint',['kTwoPoint',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/all_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_c.js",
    "content": "var searchData=\n[\n  ['label_5f',['label_',['../classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41',1,'vk::cameras::NCamera']]],\n  ['landmark_5fvec_5f',['landmark_vec_',['../classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437',1,'svo::Frame']]],\n  ['last_5fba_5fupdate_5f',['last_ba_update_',['../classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad',1,'svo::Point']]],\n  ['last_5fframes_5f',['last_frames_',['../classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4',1,'svo::FrameHandlerBase']]],\n  ['last_5fkf_5fupdate_5fevent_5f',['last_kf_update_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['last_5fprojected_5fkf_5fid_5f',['last_projected_kf_id_',['../classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850',1,'svo::Point']]],\n  ['last_5fpublished_5fts_5f',['last_published_ts_',['../classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9',1,'svo::Frame::last_published_ts_()'],['../classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a',1,'svo::Point::last_published_ts_()']]],\n  ['last_5fstructure_5foptim_5f',['last_structure_optim_',['../classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc',1,'svo::Point']]],\n  ['lastframe',['lastFrame',['../classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712',1,'svo::FrameHandlerMono']]],\n  ['lastframes',['lastFrames',['../classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a',1,'svo::FrameHandlerStereo']]],\n  ['lastnumobservations',['lastNumObservations',['../classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10',1,'svo::FrameHandlerBase']]],\n  ['lastprocessingtime',['lastProcessingTime',['../classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc',1,'svo::FrameHandlerBase']]],\n  ['level',['level',['../structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db',1,'svo::FeatureWrapper::level()'],['../structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4',1,'svo::Corner::level()']]],\n  ['level_5f',['level_',['../classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b',1,'svo::SparseImgAlignBase']]],\n  ['level_5fvec_5f',['level_vec_',['../classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d',1,'svo::Frame']]],\n  ['lineardepthvector',['LinearDepthVector',['../classdepth__from__defocus_1_1LinearDepthVector.html',1,'depth_from_defocus']]],\n  ['lkse3',['LKSE3',['../classLKSE3.html',1,'']]],\n  ['loadfromyaml',['loadFromYaml',['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858',1,'vk::cameras::CameraGeometryBase::loadFromYaml()'],['../classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93',1,'vk::cameras::NCamera::loadFromYaml()']]],\n  ['loadmapfrombundleadjustment',['loadMapFromBundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227',1,'svo::AbstractBundleAdjustment::loadMapFromBundleAdjustment()'],['../classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423',1,'svo::BackendInterface::loadMapFromBundleAdjustment()']]],\n  ['loadmask',['loadMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc',1,'vk::cameras::CameraGeometryBase']]],\n  ['local_5fframe_5fsize_5f',['local_frame_size_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['logitem',['LogItem',['../structvk_1_1LogItem.html',1,'vk']]]\n];\n"
  },
  {
    "path": "docs/search/all_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_d.js",
    "content": "var searchData=\n[\n  ['madscaleestimator',['MADScaleEstimator',['../classvk_1_1solver_1_1MADScaleEstimator.html',1,'vk::solver']]],\n  ['map',['Map',['../classsvo_1_1Map.html',1,'svo::Map'],['../classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1',1,'svo::FrameHandlerBase::map()']]],\n  ['map_5f',['map_',['../classMosaic.html#aba58a0d6482ecf38a45ca83815569443',1,'Mosaic::map_()'],['../classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be',1,'DvsReconstruction::map_()'],['../classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb',1,'LKSE3::map_()'],['../classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91',1,'svo::FrameHandlerBase::map_()']]],\n  ['map_5fblur_5f',['map_blur_',['../classMosaic.html#afedc6f48c1efb28dda255b25c22d2742',1,'Mosaic::map_blur_()'],['../classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4',1,'LKSE3::map_blur_()']]],\n  ['map_5flocal_5f',['map_local_',['../classLKSE3.html#ab07de201b842f895e552cf33475ad2f6',1,'LKSE3']]],\n  ['map_5fsub_5f',['map_sub_',['../classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2',1,'DvsReconstruction::map_sub_()'],['../classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6',1,'Tracker::map_sub_()']]],\n  ['mapcallback',['mapCallback',['../classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9',1,'DvsReconstruction::mapCallback()'],['../classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92',1,'Tracker::mapCallback()']]],\n  ['matcher',['Matcher',['../classsvo_1_1Matcher.html',1,'svo']]],\n  ['matrix',['matrix',['../classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2',1,'vikit_py::transformations::Arcball']]],\n  ['max_5fdepth_5f',['max_depth_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['max_5fepi_5flength_5foptim',['max_epi_length_optim',['../structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81',1,'svo::Matcher::Options']]],\n  ['max_5fepi_5fsearch_5fsteps',['max_epi_search_steps',['../structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b',1,'svo::Matcher::Options']]],\n  ['max_5fimu_5fdelta_5ft',['max_imu_delta_t',['../classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566',1,'svo::ImuCalibration']]],\n  ['max_5fiter',['max_iter',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['max_5fiterations_5f',['max_iterations_',['../classLKSE3.html#a17593bcd462e3bea8bb1142968164266',1,'LKSE3']]],\n  ['max_5flevel',['max_level',['../structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d',1,'svo::DetectorOptions']]],\n  ['max_5fn_5ffeatures_5fper_5fframe',['max_n_features_per_frame',['../structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8',1,'svo::ReprojectorOptions']]],\n  ['max_5fn_5fkfs',['max_n_kfs',['../structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b',1,'svo::BaseOptions::max_n_kfs()'],['../structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3',1,'svo::ReprojectorOptions::max_n_kfs()']]],\n  ['max_5fn_5fseeds_5fper_5fframe',['max_n_seeds_per_frame',['../structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143',1,'svo::DepthFilterOptions']]],\n  ['max_5fnum_5ffeatures_5f',['max_num_features_',['../classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660',1,'svo::SparseImgAlignBase']]],\n  ['max_5fsearch_5flevel',['max_search_level',['../structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337',1,'svo::DepthFilterOptions']]],\n  ['max_5ftrials',['max_trials',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['measurementbase',['MeasurementBase',['../structsvo_1_1dataset_1_1MeasurementBase.html',1,'svo::dataset']]],\n  ['measurements_5f',['measurements_',['../classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7',1,'svo::ImuHandler']]],\n  ['median_5ffilter_5fsize_5f',['median_filter_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['medianfiltertest',['MedianFilterTest',['../classMedianFilterTest.html',1,'']]],\n  ['min_5fdepth_5f',['min_depth_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['min_5flevel',['min_level',['../structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386',1,'svo::DetectorOptions']]],\n  ['min_5fnum_5fneighbors_5f',['min_num_neighbors_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['min_5ftracks_5fto_5fdetect_5fnew_5ffeatures',['min_tracks_to_detect_new_features',['../structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55',1,'svo::FeatureTrackerOptions']]],\n  ['minileastsquaressolver',['MiniLeastSquaresSolver',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_201_2c_20double_2c_20depthestimator_20_3e',['MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_202_2c_20eigen_3a_3avector2d_2c_20patchnormal_20_3e',['MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_206_2c_20transformation_2c_20poseoptimizer_20_3e',['MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_208_2c_20sparseimgalignstate_2c_20sparseimgalignbase_20_3e',['MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolveroptions',['MiniLeastSquaresSolverOptions',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html',1,'vk::solver']]],\n  ['mosaic',['Mosaic',['../classMosaic.html',1,'Mosaic'],['../classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f',1,'Mosaic::Mosaic()']]],\n  ['mu_5f',['mu_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['mu_5finit',['mu_init',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['mut_5f',['mut_',['../classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959',1,'svo::GraphManager']]]\n];\n"
  },
  {
    "path": "docs/search/all_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_e.js",
    "content": "var searchData=\n[\n  ['n',['n',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['n_5ffailed_5freproj_5f',['n_failed_reproj_',['../classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6',1,'svo::Point']]],\n  ['n_5fmeas_5f',['n_meas_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['n_5freproj',['n_reproj',['../structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc',1,'svo::Reprojector::Candidate']]],\n  ['n_5fsucceeded_5freproj_5f',['n_succeeded_reproj_',['../classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e',1,'svo::Point']]],\n  ['n_5fvisible_5f',['n_visible_',['../classLKSE3.html#acb8f03911b91548c624a5b324832a856',1,'LKSE3']]],\n  ['ncamera',['NCamera',['../classvk_1_1cameras_1_1NCamera.html',1,'vk::cameras']]],\n  ['need_5fnew_5fkf_5f',['need_new_kf_',['../classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a',1,'svo::FrameHandlerBase']]],\n  ['neednewkf',['needNewKf',['../classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497',1,'svo::FrameHandlerBase']]],\n  ['new_5fframes_5f',['new_frames_',['../classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af',1,'svo::FrameHandlerBase']]],\n  ['new_5fimg_5f',['new_img_',['../classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee',1,'LKSE3']]],\n  ['newest_5fprocessed_5fevent_5f',['newest_processed_event_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['newest_5ftracked_5fevent_5f',['newest_tracked_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['next',['next',['../classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c',1,'vikit_py::transformations::Arcball']]],\n  ['nframe_5findex_5f',['nframe_index_',['../classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170',1,'svo::Frame']]],\n  ['nh_5f',['nh_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['nodistortion',['NoDistortion',['../classvk_1_1cameras_1_1NoDistortion.html',1,'vk::cameras']]],\n  ['normal_5f',['normal_',['../classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06',1,'svo::Point']]],\n  ['normal_5finformation_5f',['normal_information_',['../classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6',1,'svo::Point']]],\n  ['normal_5fset_5f',['normal_set_',['../classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0',1,'svo::Point']]],\n  ['normaldistributionscaleestimator',['NormalDistributionScaleEstimator',['../classvk_1_1solver_1_1NormalDistributionScaleEstimator.html',1,'vk::solver']]],\n  ['nrefs',['nRefs',['../classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf',1,'svo::Point']]],\n  ['nu_5f',['nu_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['nu_5finit',['nu_init',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['num_5fdepth_5fcells_5f',['num_depth_cells_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['num_5ffeatures_5f',['num_features_',['../classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63',1,'svo::Frame']]],\n  ['num_5fobs_5flast_5f',['num_obs_last_',['../classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e',1,'svo::FrameHandlerBase']]],\n  ['num_5fpyramid_5flevels',['num_pyramid_levels',['../classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17',1,'motion_correction::WarpUpdateParams']]],\n  ['numcameras',['numCameras',['../classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9',1,'vk::cameras::NCamera']]],\n  ['numdifffunctor',['NumDiffFunctor',['../structaslam_1_1common_1_1NumDiffFunctor.html',1,'aslam::common']]],\n  ['numericaldiff',['NumericalDiff',['../classaslam_1_1common_1_1NumericalDiff.html',1,'aslam::common']]],\n  ['numericaldifftraits',['NumericalDiffTraits',['../structaslam_1_1common_1_1NumericalDiffTraits.html',1,'aslam::common']]],\n  ['numericaldifftraitsselector',['NumericalDiffTraitsSelector',['../structaslam_1_1common_1_1NumericalDiffTraitsSelector.html',1,'aslam::common']]],\n  ['numericaldifftraitsselector_3c_20_5ffunctor_2c_20mode_2c_200_20_3e',['NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;',['../structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html',1,'aslam::common']]],\n  ['numfeatures',['numFeatures',['../classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7',1,'svo::Frame::numFeatures()'],['../classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064',1,'svo::FrameBundle::numFeatures()']]],\n  ['numlandmarks',['numLandmarks',['../classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c',1,'svo::Frame::numLandmarks()'],['../classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9',1,'svo::FrameBundle::numLandmarks()']]],\n  ['numtrackedfeatures',['numTrackedFeatures',['../classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6',1,'svo::Frame::numTrackedFeatures()'],['../classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da',1,'svo::FrameBundle::numTrackedFeatures()']]]\n];\n"
  },
  {
    "path": "docs/search/all_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/all_f.js",
    "content": "var searchData=\n[\n  ['obs_5f',['obs_',['../classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac',1,'svo::Point']]],\n  ['occupandygrid2d',['OccupandyGrid2D',['../classsvo_1_1OccupandyGrid2D.html',1,'svo']]],\n  ['ofs_5f',['ofs_',['../classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee',1,'svo::ImuHandler']]],\n  ['ofs_5freproj_5ferrors_5f',['ofs_reproj_errors_',['../classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b',1,'svo::PoseOptimizer']]],\n  ['omega_5fbias',['omega_bias',['../classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f',1,'svo::ImuInitialization']]],\n  ['omega_5fbias_5f',['omega_bias_',['../classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851',1,'svo::ImuHandler']]],\n  ['omega_5fbias_5fsigma',['omega_bias_sigma',['../classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61',1,'svo::ImuInitialization']]],\n  ['omega_5fcoriolis',['omega_coriolis',['../classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce',1,'svo::ImuCalibration']]],\n  ['omnigeometry',['OmniGeometry',['../classvk_1_1cameras_1_1OmniGeometry.html',1,'vk::cameras']]],\n  ['omniprojection',['OmniProjection',['../classvk_1_1cameras_1_1OmniProjection.html',1,'vk::cameras']]],\n  ['on_5fbootstrap_5fbutton_5fpressed',['on_bootstrap_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fcopilot_5fstate_5fchanged',['on_copilot_state_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fmap_5fexpansion_5fchanged',['on_map_expansion_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fstart_5fbutton_5fpressed',['on_start_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fswitch_5fbutton_5fpressed',['on_switch_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fupdate_5fbutton_5fpressed',['on_update_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['oneshotinit',['OneShotInit',['../classsvo_1_1OneShotInit.html',1,'svo']]],\n  ['operator_20bool',['operator bool',['../structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02',1,'vk::cameras::ProjectionResult']]],\n  ['operator_3c_3c',['operator&lt;&lt;',['../structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274',1,'vk::cameras::ProjectionResult']]],\n  ['operator_3d_3d',['operator==',['../structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092',1,'vk::cameras::ProjectionResult::operator==(const ProjectionResult &amp;other) const'],['../structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793',1,'vk::cameras::ProjectionResult::operator==(const ProjectionResult::Status &amp;other) const']]],\n  ['optimize',['optimize',['../classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7',1,'svo::Point::optimize()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4',1,'vk::solver::MiniLeastSquaresSolver::optimize()']]],\n  ['optimizegaussnewton',['optimizeGaussNewton',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['optimizelevenbergmarquardt',['optimizeLevenbergMarquardt',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['optimizerbackendoptions',['OptimizerBackendOptions',['../structsvo_1_1OptimizerBackendOptions.html',1,'svo']]],\n  ['options',['Options',['../structsvo_1_1Matcher_1_1Options.html',1,'svo::Matcher']]],\n  ['options_5f',['options_',['../classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69',1,'svo::FrameHandlerBase::options_()'],['../classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb',1,'svo::AbstractInitialization::options_()']]]\n];\n"
  },
  {
    "path": "docs/search/classes_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_0.js",
    "content": "var searchData=\n[\n  ['_5fcameramotion',['_CameraMotion',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html',1,'cv::HomographyDecomposition']]]\n];\n"
  },
  {
    "path": "docs/search/classes_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_1.js",
    "content": "var searchData=\n[\n  ['abstractbundleadjustment',['AbstractBundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html',1,'svo']]],\n  ['abstractdetector',['AbstractDetector',['../classsvo_1_1AbstractDetector.html',1,'svo']]],\n  ['abstractinitialization',['AbstractInitialization',['../classsvo_1_1AbstractInitialization.html',1,'svo']]],\n  ['aligned',['Aligned',['../structaslam_1_1Aligned.html',1,'aslam']]],\n  ['alignedmap',['AlignedMap',['../structaslam_1_1AlignedMap.html',1,'aslam']]],\n  ['alignedunorderedmap',['AlignedUnorderedMap',['../structaslam_1_1AlignedUnorderedMap.html',1,'aslam']]],\n  ['allpixelsdetector',['AllPixelsDetector',['../classsvo_1_1AllPixelsDetector.html',1,'svo']]],\n  ['arcball',['Arcball',['../classvikit__py_1_1transformations_1_1Arcball.html',1,'vikit_py::transformations']]],\n  ['argumenttype',['ArgumentType',['../structArgumentType.html',1,'']]],\n  ['argumenttype_3c_20t_28u_29_3e',['ArgumentType&lt; T(U)&gt;',['../structArgumentType_3_01T_07U_08_4.html',1,'']]],\n  ['arrayinitgeometric',['ArrayInitGeometric',['../classsvo_1_1ArrayInitGeometric.html',1,'svo']]],\n  ['arrayinitoptimization',['ArrayInitOptimization',['../classsvo_1_1ArrayInitOptimization.html',1,'svo']]],\n  ['atandistortion',['AtanDistortion',['../classvk_1_1cameras_1_1AtanDistortion.html',1,'vk::cameras']]]\n];\n"
  },
  {
    "path": "docs/search/classes_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_10.js",
    "content": "var searchData=\n[\n  ['patchnormal',['PatchNormal',['../classsvo_1_1PatchNormal.html',1,'svo']]],\n  ['performancemonitor',['PerformanceMonitor',['../classvk_1_1PerformanceMonitor.html',1,'vk']]],\n  ['pinholecamera',['PinholeCamera',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html',1,'vikit_py.pinhole_camera.PinholeCamera'],['../classevo__utils_1_1camera_1_1PinholeCamera.html',1,'evo_utils::camera::PinholeCamera']]],\n  ['pinholeprojection',['PinholeProjection',['../classvk_1_1cameras_1_1PinholeProjection.html',1,'vk::cameras']]],\n  ['point',['Point',['../classsvo_1_1Point.html',1,'svo']]],\n  ['pointidprovider',['PointIdProvider',['../classsvo_1_1PointIdProvider.html',1,'svo']]],\n  ['poseoptimizer',['PoseOptimizer',['../classsvo_1_1PoseOptimizer.html',1,'svo']]],\n  ['preintegratedimumeasurement',['PreintegratedImuMeasurement',['../classsvo_1_1PreintegratedImuMeasurement.html',1,'svo']]],\n  ['projectionresult',['ProjectionResult',['../structvk_1_1cameras_1_1ProjectionResult.html',1,'vk::cameras']]]\n];\n"
  },
  {
    "path": "docs/search/classes_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_11.js",
    "content": "var searchData=\n[\n  ['radialtangentialdistortion',['RadialTangentialDistortion',['../classvk_1_1cameras_1_1RadialTangentialDistortion.html',1,'vk::cameras']]],\n  ['realtimeworker',['RealtimeWorker',['../classrpg__common_1_1RealtimeWorker.html',1,'rpg_common']]],\n  ['reprojector',['Reprojector',['../classsvo_1_1Reprojector.html',1,'svo']]],\n  ['reprojectoroptions',['ReprojectorOptions',['../structsvo_1_1ReprojectorOptions.html',1,'svo']]],\n  ['ringbuffer',['RingBuffer',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['ringbuffer_3c_20double_20_3e',['RingBuffer&lt; double &gt;',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['ringbuffer_3c_20size_5ft_20_3e',['RingBuffer&lt; size_t &gt;',['../classvk_1_1RingBuffer.html',1,'vk']]],\n  ['rosnode',['RosNode',['../classvikit__py_1_1ros__node_1_1RosNode.html',1,'vikit_py::ros_node']]]\n];\n"
  },
  {
    "path": "docs/search/classes_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_12.js",
    "content": "var searchData=\n[\n  ['sample',['Sample',['../classvk_1_1Sample.html',1,'vk']]],\n  ['scaleestimator',['ScaleEstimator',['../classvk_1_1solver_1_1ScaleEstimator.html',1,'vk::solver']]],\n  ['seedref',['SeedRef',['../structsvo_1_1SeedRef.html',1,'svo']]],\n  ['smartprojectionposefactor',['SmartProjectionPoseFactor',['../classgtsam_1_1SmartProjectionPoseFactor.html',1,'gtsam']]],\n  ['snakify',['snakify',['../classevo__utils_1_1snakify_1_1snakify.html',1,'evo_utils::snakify']]],\n  ['sobeldetector',['SobelDetector',['../classsvo_1_1SobelDetector.html',1,'svo']]],\n  ['sparseimgalign',['SparseImgAlign',['../classsvo_1_1SparseImgAlign.html',1,'svo']]],\n  ['sparseimgalignbase',['SparseImgAlignBase',['../classsvo_1_1SparseImgAlignBase.html',1,'svo']]],\n  ['sparseimgaligngpu',['SparseImgAlignGpu',['../classsvo_1_1SparseImgAlignGpu.html',1,'svo']]],\n  ['sparseimgalignoptions',['SparseImgAlignOptions',['../structsvo_1_1SparseImgAlignOptions.html',1,'svo']]],\n  ['sparseimgalignstate',['SparseImgAlignState',['../structsvo_1_1SparseImgAlignState.html',1,'svo']]],\n  ['statistics',['Statistics',['../structsvo_1_1PoseOptimizer_1_1Statistics.html',1,'svo::PoseOptimizer::Statistics'],['../structsvo_1_1Reprojector_1_1Statistics.html',1,'svo::Reprojector::Statistics']]],\n  ['stereoinit',['StereoInit',['../classsvo_1_1StereoInit.html',1,'svo']]],\n  ['stereotriangulation',['StereoTriangulation',['../classsvo_1_1StereoTriangulation.html',1,'svo']]],\n  ['stereotriangulationoptions',['StereoTriangulationOptions',['../structsvo_1_1StereoTriangulationOptions.html',1,'svo']]],\n  ['svo',['Svo',['../classrqt__svo_1_1svo_1_1Svo.html',1,'rqt_svo::svo']]],\n  ['svointerface',['SvoInterface',['../classsvo_1_1SvoInterface.html',1,'svo']]],\n  ['svonodebase',['SvoNodeBase',['../classsvo__ros_1_1SvoNodeBase.html',1,'svo_ros']]],\n  ['svonodelet',['SvoNodelet',['../classsvo_1_1SvoNodelet.html',1,'svo']]],\n  ['svowidget',['SvoWidget',['../classrqt__svo_1_1svo__widget_1_1SvoWidget.html',1,'rqt_svo::svo_widget']]]\n];\n"
  },
  {
    "path": "docs/search/classes_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_13.js",
    "content": "var searchData=\n[\n  ['testtransformations',['TestTransformations',['../classvikit__py_1_1test__transformations_1_1TestTransformations.html',1,'vikit_py::test_transformations']]],\n  ['tftocamera',['tfToCamera',['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html',1,'evo_utils::tf_to_camera_markers']]],\n  ['threadsafequeue',['ThreadSafeQueue',['../classrpg__common_1_1ThreadSafeQueue.html',1,'rpg_common']]],\n  ['timer',['Timer',['../classvk_1_1Timer.html',1,'vk']]],\n  ['tracker',['Tracker',['../classTracker.html',1,'']]],\n  ['triggermapexpansion',['TriggerMapExpansion',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html',1,'trigger_map_expansion']]],\n  ['tukeyweightfunction',['TukeyWeightFunction',['../classvk_1_1solver_1_1TukeyWeightFunction.html',1,'vk::solver']]],\n  ['twopointinit',['TwoPointInit',['../classsvo_1_1TwoPointInit.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/classes_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_14.js",
    "content": "var searchData=\n[\n  ['unitscaleestimator',['UnitScaleEstimator',['../classvk_1_1solver_1_1UnitScaleEstimator.html',1,'vk::solver']]],\n  ['unitweightfunction',['UnitWeightFunction',['../classvk_1_1solver_1_1UnitWeightFunction.html',1,'vk::solver']]],\n  ['userinputthread',['UserInputThread',['../classvk_1_1UserInputThread.html',1,'vk']]]\n];\n"
  },
  {
    "path": "docs/search/classes_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_15.js",
    "content": "var searchData=\n[\n  ['vinodestate',['ViNodeState',['../classsvo_1_1ViNodeState.html',1,'svo']]],\n  ['visualizer',['Visualizer',['../classsvo_1_1Visualizer.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/classes_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_16.js",
    "content": "var searchData=\n[\n  ['warpupdateparams',['WarpUpdateParams',['../classmotion__correction_1_1WarpUpdateParams.html',1,'motion_correction']]],\n  ['weightfunction',['WeightFunction',['../classvk_1_1solver_1_1WeightFunction.html',1,'vk::solver']]],\n  ['workerbase',['WorkerBase',['../classrpg__common_1_1WorkerBase.html',1,'rpg_common']]]\n];\n"
  },
  {
    "path": "docs/search/classes_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_17.js",
    "content": "var searchData=\n[\n  ['zeronumericaldiff',['ZeroNumericalDiff',['../classaslam_1_1common_1_1ZeroNumericalDiff.html',1,'aslam::common']]],\n  ['zmssd',['ZMSSD',['../classsvo_1_1patch__score_1_1ZMSSD.html',1,'svo::patch_score']]]\n];\n"
  },
  {
    "path": "docs/search/classes_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_2.js",
    "content": "var searchData=\n[\n  ['backendinterface',['BackendInterface',['../classsvo_1_1BackendInterface.html',1,'svo']]],\n  ['backendinterfaceoptions',['BackendInterfaceOptions',['../structsvo_1_1BackendInterfaceOptions.html',1,'svo']]],\n  ['backendoptimizer',['BackendOptimizer',['../classsvo_1_1BackendOptimizer.html',1,'svo']]],\n  ['backendvisualizer',['BackendVisualizer',['../classsvo_1_1BackendVisualizer.html',1,'svo']]],\n  ['baseoptions',['BaseOptions',['../structsvo_1_1BaseOptions.html',1,'svo']]],\n  ['batchworker',['BatchWorker',['../classrpg__common_1_1BatchWorker.html',1,'rpg_common']]],\n  ['benchmarknode',['BenchmarkNode',['../classsvo_1_1BenchmarkNode.html',1,'svo']]],\n  ['boostrapper',['Boostrapper',['../classpose__to__tf_1_1Boostrapper.html',1,'pose_to_tf']]],\n  ['bootstrapper',['Bootstrapper',['../classdvs__bootstrapping_1_1Bootstrapper.html',1,'dvs_bootstrapping']]]\n];\n"
  },
  {
    "path": "docs/search/classes_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_3.js",
    "content": "var searchData=\n[\n  ['callbackhost',['CallbackHost',['../classrpg__common_1_1CallbackHost.html',1,'rpg_common']]],\n  ['callbackhost_3c_20const_20framebundleptr_20_26_3e',['CallbackHost&lt; const FrameBundlePtr &amp;&gt;',['../classrpg__common_1_1CallbackHost.html',1,'rpg_common']]],\n  ['camerageometry',['CameraGeometry',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometry_3c_20equidistantfisheyeprojection_20_3e',['CameraGeometry&lt; EquidistantFisheyeProjection &gt;',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometry_3c_20omniprojection_20_3e',['CameraGeometry&lt; OmniProjection &gt;',['../classvk_1_1cameras_1_1CameraGeometry.html',1,'vk::cameras']]],\n  ['camerageometrybase',['CameraGeometryBase',['../classvk_1_1cameras_1_1CameraGeometryBase.html',1,'vk::cameras']]],\n  ['camerameasurement',['CameraMeasurement',['../structsvo_1_1dataset_1_1CameraMeasurement.html',1,'svo::dataset']]],\n  ['camerastest',['CamerasTest',['../classCamerasTest.html',1,'']]],\n  ['candidate',['Candidate',['../structsvo_1_1Reprojector_1_1Candidate.html',1,'svo::Reprojector']]],\n  ['cannydetector',['CannyDetector',['../classsvo_1_1CannyDetector.html',1,'svo']]],\n  ['convert_3c_20eigen_3a_3amatrix_3c_20scalar_5f_2c_20a_5f_2c_20b_5f_2c_20c_5f_2c_20d_5f_2c_20e_5f_20_3e_20_3e',['convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;',['../structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aqueue_3c_20valuetype_20_3e_20_3e',['convert&lt; std::queue&lt; ValueType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3ashared_5fptr_3c_20vk_3a_3acameras_3a_3acamerageometrybase_20_3e_20_3e',['convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3ashared_5fptr_3c_20vk_3a_3acameras_3a_3ancamera_20_3e_20_3e',['convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aunordered_5fmap_3c_20keytype_2c_20valuetype_20_3e_20_3e',['convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20std_3a_3aunordered_5fset_3c_20keytype_20_3e_20_3e',['convert&lt; std::unordered_set&lt; KeyType &gt; &gt;',['../structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html',1,'YAML']]],\n  ['convert_3c_20vk_3a_3acameras_3a_3acamerageometrybase_20_3e',['convert&lt; vk::cameras::CameraGeometryBase &gt;',['../structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html',1,'YAML']]],\n  ['convert_3c_20vk_3a_3acameras_3a_3ancamera_20_3e',['convert&lt; vk::cameras::NCamera &gt;',['../structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html',1,'YAML']]],\n  ['corner',['Corner',['../structsvo_1_1Corner.html',1,'svo']]],\n  ['csvdatasetreader',['CsvDatasetReader',['../classsvo_1_1CsvDatasetReader.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/classes_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_4.js",
    "content": "var searchData=\n[\n  ['depthestimator',['DepthEstimator',['../classsvo_1_1DepthEstimator.html',1,'svo']]],\n  ['depthfilter',['DepthFilter',['../classsvo_1_1DepthFilter.html',1,'svo']]],\n  ['depthfilteroptions',['DepthFilterOptions',['../structsvo_1_1DepthFilterOptions.html',1,'svo']]],\n  ['depthfromdefocusnode',['DepthFromDefocusNode',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html',1,'depth_from_defocus']]],\n  ['depthvector',['DepthVector',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus']]],\n  ['depthvector_3c_20inversedepthvector_20_3e',['DepthVector&lt; InverseDepthVector &gt;',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus']]],\n  ['depthvector_3c_20lineardepthvector_20_3e',['DepthVector&lt; LinearDepthVector &gt;',['../classdepth__from__defocus_1_1DepthVector.html',1,'depth_from_defocus']]],\n  ['detectoroptions',['DetectorOptions',['../structsvo_1_1DetectorOptions.html',1,'svo']]],\n  ['dvsmappingnodelet',['DvsMappingNodelet',['../classdepth__from__defocus_1_1DvsMappingNodelet.html',1,'depth_from_defocus']]],\n  ['dvsreconstruction',['DvsReconstruction',['../classDvsReconstruction.html',1,'']]],\n  ['dvstrackingnodelet',['DvsTrackingNodelet',['../classDvsTrackingNodelet.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/classes_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_5.js",
    "content": "var searchData=\n[\n  ['equidistantdistortion',['EquidistantDistortion',['../classvk_1_1cameras_1_1EquidistantDistortion.html',1,'vk::cameras']]],\n  ['equidistantfisheyegeometry',['EquidistantFisheyeGeometry',['../classvk_1_1cameras_1_1EquidistantFisheyeGeometry.html',1,'vk::cameras']]],\n  ['equidistantfisheyeprojection',['EquidistantFisheyeProjection',['../classvk_1_1cameras_1_1EquidistantFisheyeProjection.html',1,'vk::cameras']]],\n  ['eventsframesbootstrapper',['EventsFramesBootstrapper',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html',1,'dvs_bootstrapping']]],\n  ['evo',['Evo',['../classrqt__evo_1_1evo_1_1Evo.html',1,'rqt_evo::evo']]],\n  ['evowidget',['EvoWidget',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html',1,'rqt_evo::evo_widget']]],\n  ['exposureselector',['ExposureSelector',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html',1,'evo_utils::select_exposure_DAVIS']]]\n];\n"
  },
  {
    "path": "docs/search/classes_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_6.js",
    "content": "var searchData=\n[\n  ['fastdetector',['FastDetector',['../classsvo_1_1FastDetector.html',1,'svo']]],\n  ['fastgraddetector',['FastGradDetector',['../classsvo_1_1FastGradDetector.html',1,'svo']]],\n  ['fastmap',['FastMap',['../classgtsam_1_1FastMap.html',1,'gtsam']]],\n  ['fastmap_3c_20int_2c_20std_3a_3apair_3c_20boost_3a_3ashared_5fptr_3c_20smartfactor_20_3e_2c_20int_20_3e_20_3e',['FastMap&lt; int, std::pair&lt; boost::shared_ptr&lt; SmartFactor &gt;, int &gt; &gt;',['../classgtsam_1_1FastMap.html',1,'gtsam']]],\n  ['featureref',['FeatureRef',['../classsvo_1_1FeatureRef.html',1,'svo']]],\n  ['featuretrack',['FeatureTrack',['../classsvo_1_1FeatureTrack.html',1,'svo']]],\n  ['featuretracker',['FeatureTracker',['../classsvo_1_1FeatureTracker.html',1,'svo']]],\n  ['featuretrackeroptions',['FeatureTrackerOptions',['../structsvo_1_1FeatureTrackerOptions.html',1,'svo']]],\n  ['featuretrackmeasurement',['FeatureTrackMeasurement',['../structsvo_1_1dataset_1_1FeatureTrackMeasurement.html',1,'svo::dataset']]],\n  ['featurewrapper',['FeatureWrapper',['../structsvo_1_1FeatureWrapper.html',1,'svo']]],\n  ['fivepointinit',['FivePointInit',['../classsvo_1_1FivePointInit.html',1,'svo']]],\n  ['frame',['Frame',['../classsvo_1_1Frame.html',1,'svo']]],\n  ['framebundle',['FrameBundle',['../classsvo_1_1FrameBundle.html',1,'svo']]],\n  ['framegpu',['FrameGpu',['../classsvo_1_1FrameGpu.html',1,'svo']]],\n  ['framehandlerarray',['FrameHandlerArray',['../classsvo_1_1FrameHandlerArray.html',1,'svo']]],\n  ['framehandlerbase',['FrameHandlerBase',['../classsvo_1_1FrameHandlerBase.html',1,'svo']]],\n  ['framehandlermono',['FrameHandlerMono',['../classsvo_1_1FrameHandlerMono.html',1,'svo']]],\n  ['framehandlerstereo',['FrameHandlerStereo',['../classsvo_1_1FrameHandlerStereo.html',1,'svo']]],\n  ['frontoplanarbootstrapper',['FrontoPlanarBootstrapper',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html',1,'dvs_bootstrapping']]]\n];\n"
  },
  {
    "path": "docs/search/classes_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_7.js",
    "content": "var searchData=\n[\n  ['genericprojectionfactor',['GenericProjectionFactor',['../classgtsam_1_1GenericProjectionFactor.html',1,'gtsam']]],\n  ['gradientdetector',['GradientDetector',['../classsvo_1_1GradientDetector.html',1,'svo']]],\n  ['gradientdetectorgrid',['GradientDetectorGrid',['../classsvo_1_1GradientDetectorGrid.html',1,'svo']]],\n  ['gradienthuangmumforddetector',['GradientHuangMumfordDetector',['../classsvo_1_1GradientHuangMumfordDetector.html',1,'svo']]],\n  ['graphmanager',['GraphManager',['../classsvo_1_1GraphManager.html',1,'svo']]],\n  ['graphmanageroptions',['GraphManagerOptions',['../structsvo_1_1GraphManagerOptions.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/classes_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_8.js",
    "content": "var searchData=\n[\n  ['hash_3c_20std_3a_3afunction_3c_20void_28callbackargs_2e_2e_2e_29_3e_20_3e',['hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;',['../structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html',1,'std']]],\n  ['homography',['Homography',['../structvk_1_1Homography.html',1,'vk']]],\n  ['homographydecomp',['HomographyDecomp',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html',1,'cv::HomographyDecomposition']]],\n  ['homographydecompinria',['HomographyDecompInria',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html',1,'cv::HomographyDecomposition']]],\n  ['homographydecompzhang',['HomographyDecompZhang',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html',1,'cv::HomographyDecomposition']]],\n  ['homographyinit',['HomographyInit',['../classsvo_1_1HomographyInit.html',1,'svo']]],\n  ['hostcachehandler',['HostCacheHandler',['../structsvo_1_1HostCacheHandler.html',1,'svo']]],\n  ['huberweightfunction',['HuberWeightFunction',['../classvk_1_1solver_1_1HuberWeightFunction.html',1,'vk::solver']]]\n];\n"
  },
  {
    "path": "docs/search/classes_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_9.js",
    "content": "var searchData=\n[\n  ['imucalibration',['ImuCalibration',['../classsvo_1_1ImuCalibration.html',1,'svo']]],\n  ['imuhandler',['ImuHandler',['../classsvo_1_1ImuHandler.html',1,'svo']]],\n  ['imuinitialization',['ImuInitialization',['../classsvo_1_1ImuInitialization.html',1,'svo']]],\n  ['imumeasurement',['ImuMeasurement',['../structsvo_1_1ImuMeasurement.html',1,'svo::ImuMeasurement'],['../structsvo_1_1dataset_1_1ImuMeasurement.html',1,'svo::dataset::ImuMeasurement']]],\n  ['initializationoptions',['InitializationOptions',['../structsvo_1_1InitializationOptions.html',1,'svo']]],\n  ['inversedepthvector',['InverseDepthVector',['../classdepth__from__defocus_1_1InverseDepthVector.html',1,'depth_from_defocus']]]\n];\n"
  },
  {
    "path": "docs/search/classes_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_a.js",
    "content": "var searchData=\n[\n  ['job',['Job',['../structsvo_1_1DepthFilter_1_1Job.html',1,'svo::DepthFilter']]]\n];\n"
  },
  {
    "path": "docs/search/classes_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_b.js",
    "content": "var searchData=\n[\n  ['keypoint',['Keypoint',['../structLKSE3_1_1Keypoint.html',1,'LKSE3']]],\n  ['keypointidentifier',['KeypointIdentifier',['../structsvo_1_1KeypointIdentifier.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/classes_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_c.js",
    "content": "var searchData=\n[\n  ['lineardepthvector',['LinearDepthVector',['../classdepth__from__defocus_1_1LinearDepthVector.html',1,'depth_from_defocus']]],\n  ['lkse3',['LKSE3',['../classLKSE3.html',1,'']]],\n  ['logitem',['LogItem',['../structvk_1_1LogItem.html',1,'vk']]]\n];\n"
  },
  {
    "path": "docs/search/classes_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_d.js",
    "content": "var searchData=\n[\n  ['madscaleestimator',['MADScaleEstimator',['../classvk_1_1solver_1_1MADScaleEstimator.html',1,'vk::solver']]],\n  ['map',['Map',['../classsvo_1_1Map.html',1,'svo']]],\n  ['matcher',['Matcher',['../classsvo_1_1Matcher.html',1,'svo']]],\n  ['measurementbase',['MeasurementBase',['../structsvo_1_1dataset_1_1MeasurementBase.html',1,'svo::dataset']]],\n  ['medianfiltertest',['MedianFilterTest',['../classMedianFilterTest.html',1,'']]],\n  ['minileastsquaressolver',['MiniLeastSquaresSolver',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_201_2c_20double_2c_20depthestimator_20_3e',['MiniLeastSquaresSolver&lt; 1, double, DepthEstimator &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_202_2c_20eigen_3a_3avector2d_2c_20patchnormal_20_3e',['MiniLeastSquaresSolver&lt; 2, Eigen::Vector2d, PatchNormal &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_206_2c_20transformation_2c_20poseoptimizer_20_3e',['MiniLeastSquaresSolver&lt; 6, Transformation, PoseOptimizer &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolver_3c_208_2c_20sparseimgalignstate_2c_20sparseimgalignbase_20_3e',['MiniLeastSquaresSolver&lt; 8, SparseImgAlignState, SparseImgAlignBase &gt;',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html',1,'vk::solver']]],\n  ['minileastsquaressolveroptions',['MiniLeastSquaresSolverOptions',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html',1,'vk::solver']]],\n  ['mosaic',['Mosaic',['../classMosaic.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/classes_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_e.js",
    "content": "var searchData=\n[\n  ['ncamera',['NCamera',['../classvk_1_1cameras_1_1NCamera.html',1,'vk::cameras']]],\n  ['nodistortion',['NoDistortion',['../classvk_1_1cameras_1_1NoDistortion.html',1,'vk::cameras']]],\n  ['normaldistributionscaleestimator',['NormalDistributionScaleEstimator',['../classvk_1_1solver_1_1NormalDistributionScaleEstimator.html',1,'vk::solver']]],\n  ['numdifffunctor',['NumDiffFunctor',['../structaslam_1_1common_1_1NumDiffFunctor.html',1,'aslam::common']]],\n  ['numericaldiff',['NumericalDiff',['../classaslam_1_1common_1_1NumericalDiff.html',1,'aslam::common']]],\n  ['numericaldifftraits',['NumericalDiffTraits',['../structaslam_1_1common_1_1NumericalDiffTraits.html',1,'aslam::common']]],\n  ['numericaldifftraitsselector',['NumericalDiffTraitsSelector',['../structaslam_1_1common_1_1NumericalDiffTraitsSelector.html',1,'aslam::common']]],\n  ['numericaldifftraitsselector_3c_20_5ffunctor_2c_20mode_2c_200_20_3e',['NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;',['../structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html',1,'aslam::common']]]\n];\n"
  },
  {
    "path": "docs/search/classes_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/classes_f.js",
    "content": "var searchData=\n[\n  ['occupandygrid2d',['OccupandyGrid2D',['../classsvo_1_1OccupandyGrid2D.html',1,'svo']]],\n  ['omnigeometry',['OmniGeometry',['../classvk_1_1cameras_1_1OmniGeometry.html',1,'vk::cameras']]],\n  ['omniprojection',['OmniProjection',['../classvk_1_1cameras_1_1OmniProjection.html',1,'vk::cameras']]],\n  ['oneshotinit',['OneShotInit',['../classsvo_1_1OneShotInit.html',1,'svo']]],\n  ['optimizerbackendoptions',['OptimizerBackendOptions',['../structsvo_1_1OptimizerBackendOptions.html',1,'svo']]],\n  ['options',['Options',['../structsvo_1_1Matcher_1_1Options.html',1,'svo::Matcher']]]\n];\n"
  },
  {
    "path": "docs/search/enums_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enums_0.js",
    "content": "var searchData=\n[\n  ['detectortype',['DetectorType',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/enums_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enums_1.js",
    "content": "var searchData=\n[\n  ['initializertype',['InitializerType',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/enums_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enums_2.js",
    "content": "var searchData=\n[\n  ['keyframecriterion',['KeyframeCriterion',['../namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/enums_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enums_3.js",
    "content": "var searchData=\n[\n  ['stage',['Stage',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115',1,'svo']]],\n  ['status',['Status',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312',1,'vk::cameras::ProjectionResult']]]\n];\n"
  },
  {
    "path": "docs/search/enumvalues_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enumvalues_0.js",
    "content": "var searchData=\n[\n  ['kall',['kAll',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a34bdbffdb1c0e1b603f58fc0d49548b6',1,'svo']]],\n  ['karraygeometric',['kArrayGeometric',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a33ad0d2f21f04ead2c13729cb521c9c6',1,'svo']]],\n  ['karrayoptimization',['kArrayOptimization',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a09f9c0fd60dab65acf642328ec5105eb',1,'svo']]],\n  ['kcanny',['kCanny',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a0622679b5ba6cf38a5f88bd656f2f359',1,'svo']]],\n  ['keypoint_5foutside_5fimage_5fbox',['KEYPOINT_OUTSIDE_IMAGE_BOX',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a',1,'vk::cameras::ProjectionResult']]],\n  ['keypoint_5fvisible',['KEYPOINT_VISIBLE',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0',1,'vk::cameras::ProjectionResult']]],\n  ['kfast',['kFast',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997',1,'svo']]],\n  ['kfastgrad',['kFastGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a97b1ab8184d6fa486d5d7fd49658dd97',1,'svo']]],\n  ['kfivepoint',['kFivePoint',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a316b7b204e76963fc456a42fc5324554',1,'svo']]],\n  ['kgrad',['kGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18af51e8d1689a8dfa5df5407b11d596bca',1,'svo']]],\n  ['kgradhuangmumford',['kGradHuangMumford',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aed4c6c88cae8f792ec52425e071c5084',1,'svo']]],\n  ['kgridgrad',['kGridGrad',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18aceecb35dbf7b412950eaf6e31d0e290b',1,'svo']]],\n  ['khomography',['kHomography',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1',1,'svo']]],\n  ['kinitializing',['kInitializing',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115af2a73d6da4f1757992348e01f07c1abd',1,'svo']]],\n  ['koneshot',['kOneShot',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a21e6a5b3710e0b13334d892e2b8a4be3',1,'svo']]],\n  ['kpaused',['kPaused',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a39133fbe05b9135570285dc1ce4bf3d7',1,'svo']]],\n  ['krelocalization',['kRelocalization',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a229e3df2165581588760e7208b13ef64',1,'svo']]],\n  ['ksobel',['kSobel',['../namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18a4365189910cb4a6295707aa4ddaece6b',1,'svo']]],\n  ['kstereo',['kStereo',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794',1,'svo']]],\n  ['ktracking',['kTracking',['../namespacesvo.html#a8c1176ccbb7b56cacacb02f43677e115a70de2363f330c00920988829e668292c',1,'svo']]],\n  ['ktwopoint',['kTwoPoint',['../namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192a03cab93742f5cdf3ae8f128ec549cb59',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/enumvalues_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enumvalues_1.js",
    "content": "var searchData=\n[\n  ['point_5fbehind_5fcamera',['POINT_BEHIND_CAMERA',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5',1,'vk::cameras::ProjectionResult']]],\n  ['projection_5finvalid',['PROJECTION_INVALID',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52',1,'vk::cameras::ProjectionResult']]]\n];\n"
  },
  {
    "path": "docs/search/enumvalues_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/enumvalues_2.js",
    "content": "var searchData=\n[\n  ['uninitialized',['UNINITIALIZED',['../structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268',1,'vk::cameras::ProjectionResult']]]\n];\n"
  },
  {
    "path": "docs/search/functions_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_0.js",
    "content": "var searchData=\n[\n  ['_5f_5finit_5f_5f',['__init__',['../classvikit__py_1_1transformations_1_1Arcball.html#a7a6d4f87b263638972d77eaa7653026f',1,'vikit_py::transformations::Arcball']]],\n  ['_5fbaselineoverdepth',['_BaselineOverDepth',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#aaff9dc85544735920faef3fcc2d15fa2',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fcamerainfocallback',['_CameraInfoCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a7d28797e00fd682ed81d0cd36233f717',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fchecknewmapneeded',['_CheckNewMapNeeded',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a85a5db2ff029f0d3c2d64c9a9f64780a',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fmapcallback',['_MapCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#a05a264b71a227107361b2aa3ff8fcee9',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fmapvisibility',['_MapVisibility',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#af71a8102df1bcef832eb951797bf5b61',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5fon_5ftopic_5fchanged',['_on_topic_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a9c76db512914b8858b2d8f9e8faf6194',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['_5fpublishcameramarker',['_publishCameraMarker',['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a5dee7565f50ab27b8489f108003f6388',1,'evo_utils::tf_to_camera_markers::tfToCamera']]],\n  ['_5fremotekeycallback',['_RemoteKeyCallback',['../classtrigger__map__expansion_1_1TriggerMapExpansion.html#adc4f70520fcbbec1944fcc1c28f5ce79',1,'trigger_map_expansion::TriggerMapExpansion']]],\n  ['_5ftfcallback',['_TFCallback',['../classevo__utils_1_1snakify_1_1snakify.html#acd1c0f380e54469396bcc0ea1c26b1bf',1,'evo_utils.snakify.snakify._TFCallback()'],['../classevo__utils_1_1tf__to__camera__markers_1_1tfToCamera.html#a74f31485200883637a1f25eb4f701828',1,'evo_utils.tf_to_camera_markers.tfToCamera._TFCallback()']]]\n];\n"
  },
  {
    "path": "docs/search/functions_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_1.js",
    "content": "var searchData=\n[\n  ['abstractbundleadjustment',['AbstractBundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html#a35e01f583c981f080f5145d1ef48eab2',1,'svo::AbstractBundleAdjustment']]],\n  ['abstractdetector',['AbstractDetector',['../classsvo_1_1AbstractDetector.html#a3386ff1b9ad698da5674b7bf91ad7bbd',1,'svo::AbstractDetector']]],\n  ['accumulatepointcloud',['accumulatePointcloud',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1623778e6e3a6879c7a96919943ebb32',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['acquireuserinput',['acquireUserInput',['../classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0',1,'vk::UserInputThread']]],\n  ['addimage',['addImage',['../classsvo_1_1FrameHandlerMono.html#ae707ccc80baca6a95dd49f65d3f8ed4d',1,'svo::FrameHandlerMono']]],\n  ['addimages',['addImages',['../classsvo_1_1FrameHandlerStereo.html#af6a5255d43cf2a4387987fda8e2f3fcd',1,'svo::FrameHandlerStereo']]],\n  ['addkeyframe',['addKeyframe',['../classsvo_1_1Map.html#afa05cc168ddc26374fd75c22669f86da',1,'svo::Map::addKeyframe()'],['../classsvo_1_1DepthFilter.html#aad0cfebba8282147c36b96b047c216fe',1,'svo::DepthFilter::addKeyframe()']]],\n  ['addmeasurement',['addMeasurement',['../classsvo_1_1PreintegratedImuMeasurement.html#a94fea1da507cb1e73bc1d05ba167738e',1,'svo::PreintegratedImuMeasurement']]],\n  ['addmeasurements',['addMeasurements',['../classsvo_1_1PreintegratedImuMeasurement.html#a57f1edd90eb61a5d849c50eedb3ce753',1,'svo::PreintegratedImuMeasurement']]],\n  ['addobservation',['addObservation',['../classsvo_1_1Point.html#a7599da2dda2ac7886cbb9cdc2fbfbd3f',1,'svo::Point']]],\n  ['addpointtotrash',['addPointToTrash',['../classsvo_1_1Map.html#a3a156a563e934fcbe060bfe0969e746f',1,'svo::Map']]]\n];\n"
  },
  {
    "path": "docs/search/functions_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_10.js",
    "content": "var searchData=\n[\n  ['quitthread',['quitThread',['../classsvo_1_1AbstractBundleAdjustment.html#a66493d4508f097b99b90c241db10db0b',1,'svo::AbstractBundleAdjustment::quitThread()'],['../classsvo_1_1BackendInterface.html#a47ff21fba9aa14cea92ffc248fd83a79',1,'svo::BackendInterface::quitThread()']]]\n];\n"
  },
  {
    "path": "docs/search/functions_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_11.js",
    "content": "var searchData=\n[\n  ['register',['register',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#af355ea6411cb00c0ce07a4e5dc5fb4e4',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['relocalizeframe',['relocalizeFrame',['../classsvo_1_1FrameHandlerMono.html#a6d5bb8229ff2c2e8321c312d2aff3777',1,'svo::FrameHandlerMono']]],\n  ['remotecallback',['remoteCallback',['../classTracker.html#a3477d93ca1724ed9696c12c7ec005be0',1,'Tracker']]],\n  ['remotekeycallback',['remoteKeyCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9947eae416456401f19a6191ca5f7ea7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['removekeyframe',['removeKeyframe',['../classsvo_1_1Map.html#a67fc8f788c6a3a71741c1979696fd00d',1,'svo::Map']]],\n  ['removeobservation',['removeObservation',['../classsvo_1_1Point.html#a7c9abf43e1ed81c931a6d811cc000a6c',1,'svo::Point']]],\n  ['reprojectdepthmap',['reprojectDepthmap',['../classMosaic.html#accda2a740d174b0d2188c9577c8fd2a7',1,'Mosaic']]],\n  ['reprojectframes',['reprojectFrames',['../classsvo_1_1Reprojector.html#aa6b022df5f1d9318e28e43ce19160c66',1,'svo::Reprojector']]],\n  ['reset',['reset',['../classTracker.html#acb05d74ae2ff6fa10272668fba396516',1,'Tracker::reset()'],['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ae9f7f834e34c43c8603826a75c403027',1,'evo_utils.select_exposure_DAVIS.ExposureSelector.reset()'],['../classsvo_1_1AbstractBundleAdjustment.html#acda25a78c893ab4eb9cb509b4e85e6fc',1,'svo::AbstractBundleAdjustment::reset()'],['../classsvo_1_1FrameHandlerBase.html#ab2ccfae9c7fddf9cf7d4caa2655754f9',1,'svo::FrameHandlerBase::reset()'],['../classsvo_1_1Map.html#a317a8ef58d1abee86c0ab16040031f7c',1,'svo::Map::reset()'],['../classsvo_1_1BackendInterface.html#a1490087e25e8111b08d932a84111ba59',1,'svo::BackendInterface::reset()'],['../classsvo_1_1DepthFilter.html#accff08165d408ebbf8a1c626d26041e4',1,'svo::DepthFilter::reset()'],['../classsvo_1_1FeatureTracker.html#a024b9e9042934ad75efefae2b6506b40',1,'svo::FeatureTracker::reset()'],['../classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e',1,'vk::Timer::reset()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ab70b0b6d9dc8b0c69fcf81ffe05b4913',1,'vk::solver::MiniLeastSquaresSolver::reset()']]],\n  ['resetall',['resetAll',['../classsvo_1_1FrameHandlerArray.html#aa6e2b5fece87e4058f8ee657a274b919',1,'svo::FrameHandlerArray::resetAll()'],['../classsvo_1_1FrameHandlerBase.html#accaed1e9a121fcf913e9366477feb72b',1,'svo::FrameHandlerBase::resetAll()'],['../classsvo_1_1FrameHandlerMono.html#ab5d6b1ea3db44087ff71a3f89d2dcaf9',1,'svo::FrameHandlerMono::resetAll()'],['../classsvo_1_1FrameHandlerStereo.html#a2ac32a125cb393460ee12875fdb4bebe',1,'svo::FrameHandlerStereo::resetAll()']]],\n  ['resetcommon',['resetCommon',['../classsvo_1_1FrameHandlerBase.html#a9423e9934db9ef80de33fdbb3bb9bf10',1,'svo::FrameHandlerBase']]],\n  ['resetmapper',['resetMapper',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0b4316dd5d3f7a0f9f9022fa7cb062e7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['resettermios',['resetTermios',['../classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b',1,'vk::UserInputThread']]],\n  ['resetvoxelgrid',['resetVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6c3e65bb3ddb235e484574d851a08c48',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['resizefeaturestorage',['resizeFeatureStorage',['../classsvo_1_1Frame.html#aa00ae41c589a338e52233ae1b258fd32',1,'svo::Frame']]],\n  ['resume',['resume',['../classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0',1,'vk::Timer']]],\n  ['run',['run',['../classsvo_1_1PoseOptimizer.html#a27fd54b32c2e2793caf4f4ea09032071',1,'svo::PoseOptimizer::run()'],['../classsvo_1_1SparseImgAlignGpu.html#a8183db02aa4ff98750c3511aae01647b',1,'svo::SparseImgAlignGpu::run()']]],\n  ['runpass',['runPass',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a48abf6126481629f36e32f3029a64c57',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]]\n];\n"
  },
  {
    "path": "docs/search/functions_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_12.js",
    "content": "var searchData=\n[\n  ['safedeletepoint',['safeDeletePoint',['../classsvo_1_1Map.html#a2291de9801d0930cf7e64b0d7ec402c6',1,'svo::Map']]],\n  ['scanepipolarline',['scanEpipolarLine',['../classsvo_1_1Matcher.html#ae648d7e7811ee7e43841a0dde70d7ad5',1,'svo::Matcher']]],\n  ['scanepipolarunitplane',['scanEpipolarUnitPlane',['../classsvo_1_1Matcher.html#af254d2322bae47f0bd6434b92453a22b',1,'svo::Matcher']]],\n  ['scanepipolarunitsphere',['scanEpipolarUnitSphere',['../classsvo_1_1Matcher.html#a0a4407ba73d6bc35ae8f1d86e624a2e0',1,'svo::Matcher']]],\n  ['selectoptimalexposurecallback',['selectOptimalExposureCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a252771d746ecb8713548af60d5aa15a2',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['send_5fcommand',['send_command',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a0ddab9a5859554a633cadd5eb8df1ff1',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['set_5ft_5fcam_5fimu',['set_T_cam_imu',['../classsvo_1_1Frame.html#a352e9d9ef659c384a3f9d422cf24f940',1,'svo::Frame']]],\n  ['set_5ft_5fw_5fb',['set_T_W_B',['../classsvo_1_1FrameBundle.html#adee577b4de32262e5e61b1209aa50677',1,'svo::FrameBundle']]],\n  ['setalphainitialvalue',['setAlphaInitialValue',['../classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8',1,'svo::SparseImgAlignBase']]],\n  ['setaxes',['setaxes',['../classvikit__py_1_1transformations_1_1Arcball.html#a97471dbe6e284e0384cbe7b6c429dac7',1,'vikit_py::transformations::Arcball']]],\n  ['setbetainitialvalue',['setBetaInitialValue',['../classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe',1,'svo::SparseImgAlignBase']]],\n  ['setbundleadjuster',['setBundleAdjuster',['../classsvo_1_1FrameHandlerBase.html#a62aa9b869ad2e6175c21e07fe2a2d7ff',1,'svo::FrameHandlerBase']]],\n  ['setcammodel',['setCamModel',['../classMosaic.html#a0a5422c2b2ec65a9d18809bb03cd071b',1,'Mosaic']]],\n  ['setcompensation',['setCompensation',['../classsvo_1_1FrameHandlerBase.html#ac3b8de712d4e57aa6d31ab6e895df54d',1,'svo::FrameHandlerBase::setCompensation()'],['../classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267',1,'svo::SparseImgAlignBase::setCompensation()']]],\n  ['setconstrain',['setconstrain',['../classvikit__py_1_1transformations_1_1Arcball.html#a727e86bb7b1e679eaef005547780922f',1,'vikit_py::transformations::Arcball']]],\n  ['setdetectoroccupiedcells',['setDetectorOccupiedCells',['../classsvo_1_1FrameHandlerBase.html#a6e79bb5f9415bd4b464574c487f37850',1,'svo::FrameHandlerBase']]],\n  ['setfirstframes',['setFirstFrames',['../classsvo_1_1FrameHandlerBase.html#a994c2419caeab4d78e51e111f4fb0c7d',1,'svo::FrameHandlerBase']]],\n  ['setinitialcampose',['setInitialCamPose',['../classsvo_1_1FrameHandlerBase.html#aa37ae9b23a5942ea1ad870e54b9ec2b4',1,'svo::FrameHandlerBase']]],\n  ['setinitialimupose',['setInitialImuPose',['../classsvo_1_1FrameHandlerBase.html#a448477cd9e952bea40b0143f6a462d0c',1,'svo::FrameHandlerBase']]],\n  ['setkeyframe',['setKeyframe',['../classsvo_1_1Frame.html#a90c4503d84f89bad3a1ed7971902b000',1,'svo::Frame']]],\n  ['setkeypoints',['setKeyPoints',['../classsvo_1_1Frame.html#a436a95418ec6eba4dd5fa283b9160dc8',1,'svo::Frame']]],\n  ['setlabel',['setLabel',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a48d2fc2c432f29028d89812668e75cfd',1,'vk::cameras::CameraGeometryBase::setLabel()'],['../classvk_1_1cameras_1_1NCamera.html#a902480d3836876993bc8138a36429815',1,'vk::cameras::NCamera::setLabel()']]],\n  ['setmask',['setMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2031ea3fb1b1bcbf61c82c1dfcbcdd57',1,'vk::cameras::CameraGeometryBase']]],\n  ['setmaxnumfeaturestoalign',['setMaxNumFeaturesToAlign',['../classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9',1,'svo::SparseImgAlignBase']]],\n  ['setnframeindex',['setNFrameIndex',['../classsvo_1_1Frame.html#a7a36595081e9197047d95287a21a7b6e',1,'svo::Frame']]],\n  ['setpatchsizesideeffects',['setPatchSizeSideEffects',['../classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab',1,'svo::SparseImgAlign::setPatchSizeSideEffects()'],['../classsvo_1_1SparseImgAlignBase.html#a0b1b9ae0323d5a8c0d2848135195067d',1,'svo::SparseImgAlignBase::setPatchSizeSideEffects()'],['../classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea',1,'svo::SparseImgAlignGpu::setPatchSizeSideEffects()']]],\n  ['setprior',['setPrior',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3493823769f52255d70f04f6745740a3',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['settrackingquality',['setTrackingQuality',['../classsvo_1_1FrameHandlerBase.html#aa73abab637db87bf6bfc2d913941018c',1,'svo::FrameHandlerBase']]],\n  ['setupvoxelgrid',['setupVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac1d09c207960dc16c44ab095b0b0c012',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['size',['size',['../classdepth__from__defocus_1_1DepthVector.html#aff41ef5fbcb0af35781db96d68359242',1,'depth_from_defocus::DepthVector::size()'],['../classsvo_1_1Map.html#ac6148e24f0d2979dec7f1bf664ac7469',1,'svo::Map::size()']]],\n  ['solve',['solve',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a10c12d49477a7f5253e9b6f492caf438',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['solvedefaultimpl',['solveDefaultImpl',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4bbe2766d5e7f8826ed55f4465291460',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['stage',['stage',['../classsvo_1_1FrameHandlerBase.html#a287e9cfb8f8534dd4c968e508d900890',1,'svo::FrameHandlerBase']]],\n  ['start',['start',['../classsvo_1_1FrameHandlerBase.html#ac81827e117ff1e9aa1c88f9456aefc7a',1,'svo::FrameHandlerBase::start()'],['../classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf',1,'vk::Timer::start()']]],\n  ['startcommandcallback',['startCommandCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a5c336fde4d52b1b75b1b7d43ebd9e103',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['startthread',['startThread',['../classsvo_1_1AbstractBundleAdjustment.html#a04334dbebb83a25bb96ffccb23be155b',1,'svo::AbstractBundleAdjustment::startThread()'],['../classsvo_1_1BackendInterface.html#a3a5516d75f4a8d53c3aa8ed2254db062',1,'svo::BackendInterface::startThread()'],['../classsvo_1_1DepthFilter.html#a9a3fa17187d648ec929b98c32cfa1854',1,'svo::DepthFilter::startThread()']]],\n  ['stop',['stop',['../classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4',1,'vk::Timer::stop()'],['../classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3',1,'vk::UserInputThread::stop()']]],\n  ['stopthread',['stopThread',['../classsvo_1_1DepthFilter.html#a5b21a76fd20b215022405fda2856dccb',1,'svo::DepthFilter']]],\n  ['synthesizeandpublishdepth',['synthesizeAndPublishDepth',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a077406511ce2fe2dafcc318bb02bc518',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgrid',['synthesizePointCloudFromVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9789403c30791c6e1c5a8a2cb2dc7f81',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridcontrast',['synthesizePointCloudFromVoxelGridContrast',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a782327cddbfd08861a32365a63f993b3',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridgradmag',['synthesizePointCloudFromVoxelGridGradMag',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a20e387f433c5952219e29ea75aa539c7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['synthesizepointcloudfromvoxelgridlinf',['synthesizePointCloudFromVoxelGridLinf',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae6cc30aaa1c12a87e22cb23762b1d29f',1,'depth_from_defocus::DepthFromDefocusNode']]]\n];\n"
  },
  {
    "path": "docs/search/functions_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_13.js",
    "content": "var searchData=\n[\n  ['t_5fcam_5fimu',['T_cam_imu',['../classsvo_1_1Frame.html#a054fe91073950d31f74111e68417cf15',1,'svo::Frame']]],\n  ['t_5fcam_5fworld',['T_cam_world',['../classsvo_1_1Frame.html#a1bd2d83bab896de855384d059c43de5f',1,'svo::Frame']]],\n  ['t_5fimu_5fcam',['T_imu_cam',['../classsvo_1_1Frame.html#a9227125f71925f4562e99d938a7b097f',1,'svo::Frame']]],\n  ['t_5fimu_5fworld',['T_imu_world',['../classsvo_1_1Frame.html#a766ef97750ad3d3fac12b8dada48db2a',1,'svo::Frame']]],\n  ['t_5fworld_5fcam',['T_world_cam',['../classsvo_1_1Frame.html#a013ffe3d5c749b856c1c2f812a6b498e',1,'svo::Frame']]],\n  ['t_5fworld_5fimu',['T_world_imu',['../classsvo_1_1Frame.html#aada7346f4b09e9273461136e909b9bc5',1,'svo::Frame']]],\n  ['tfcallback',['tfCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a410d73cc0f5560fd523f00611bd6d662',1,'depth_from_defocus::DepthFromDefocusNode::tfCallback()'],['../classTracker.html#a1029bfd35553535ccba3159101cd70b9',1,'Tracker::tfCallback()']]],\n  ['timer',['Timer',['../classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5',1,'vk::Timer']]],\n  ['trackanddetect',['trackAndDetect',['../classsvo_1_1FeatureTracker.html#ac9bb7c1ca79974d1133469db8add4be0',1,'svo::FeatureTracker']]],\n  ['tracker',['Tracker',['../classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb',1,'Tracker']]],\n  ['trackframe',['trackFrame',['../classLKSE3.html#a1dcf848cd01686ef39bb7ee5a6a08446',1,'LKSE3']]],\n  ['trackframebundle',['trackFrameBundle',['../classsvo_1_1FeatureTracker.html#ae999fe961f81f0699ab5caeab7b4dcde',1,'svo::FeatureTracker']]],\n  ['trackingquality',['trackingQuality',['../classsvo_1_1FrameHandlerBase.html#a9db554efa667216557b45d7d86c40035',1,'svo::FrameHandlerBase']]],\n  ['trackingthread',['trackingThread',['../classTracker.html#ae701ed9604790939eeefd0dcd4024a6a',1,'Tracker']]],\n  ['transform',['transform',['../classsvo_1_1Map.html#a977dcc0712a023af82e8c8eaa1d76bf4',1,'svo::Map']]],\n  ['triangulatelinear',['triangulateLinear',['../classsvo_1_1Point.html#a2d98614a51faaca6da0cf68fb13278dc',1,'svo::Point']]],\n  ['type',['type',['../classsvo_1_1Point.html#ad3a64907785b9e2feb5e838ea5741f5c',1,'svo::Point']]]\n];\n"
  },
  {
    "path": "docs/search/functions_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_14.js",
    "content": "var searchData=\n[\n  ['unregister',['unregister',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a8e9e09d0f747eb6b0b0c093ed7ef979c',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['update',['update',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a08b55e09a6c2e7bc1714c06cf9f847c4',1,'depth_from_defocus::DepthFromDefocusNode::update()'],['../classMosaic.html#ae16bd5cd096b8dd38cda50eeaae96c46',1,'Mosaic::update()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a856e362b745dac5b193302bd906b619f',1,'vk::solver::MiniLeastSquaresSolver::update()']]],\n  ['updatehessiangradientunitplane',['updateHessianGradientUnitPlane',['../classsvo_1_1Point.html#a2f7440330a9c45744b95b85d0a2e52cd',1,'svo::Point']]],\n  ['updatehessiangradientunitsphere',['updateHessianGradientUnitSphere',['../classsvo_1_1Point.html#a08ffcd5b5b7f32e2d29e138568a2329e',1,'svo::Point']]],\n  ['updatemap',['updateMap',['../classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6',1,'Tracker']]],\n  ['updateseeds',['updateSeeds',['../classsvo_1_1DepthFilter.html#a1eea73c3309d49f7b302706c28a825c2',1,'svo::DepthFilter']]],\n  ['updateseedsloop',['updateSeedsLoop',['../classsvo_1_1DepthFilter.html#a17f8bed54b86c797d07fbfd56c6018d1',1,'svo::DepthFilter']]],\n  ['updatetransformation',['updateTransformation',['../classLKSE3.html#af61c47c8c61665f5796cd0af8d761547',1,'LKSE3']]],\n  ['updatezmssd',['updateZMSSD',['../classsvo_1_1Matcher.html#a64098668259a468ec8c8cfa5dc40f424',1,'svo::Matcher']]]\n];\n"
  },
  {
    "path": "docs/search/functions_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_15.js",
    "content": "var searchData=\n[\n  ['voteforcell',['voteForCell',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdae5a3c5364f7134a6db87b291d4c2b',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voteforcellbilinear',['voteForCellBilinear',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9be7fc72e0cc3fed64e4e84136c3f8d7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voxelgridat',['voxelGridAt',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aaece6ded781928540cf7b3b848d0833d',1,'depth_from_defocus::DepthFromDefocusNode::voxelGridAt(const std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z) const'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35190fd60fd5e8bb7ff5b8979a4a8a70',1,'depth_from_defocus::DepthFromDefocusNode::voxelGridAt(std::vector&lt; Vote &gt; &amp;grid, int x, int y, size_t z)']]]\n];\n"
  },
  {
    "path": "docs/search/functions_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_16.js",
    "content": "var searchData=\n[\n  ['_7eabstractdetector',['~AbstractDetector',['../classsvo_1_1AbstractDetector.html#a64abe74269efc7ba9e848fc634f46225',1,'svo::AbstractDetector']]],\n  ['_7edepthfilter',['~DepthFilter',['../classsvo_1_1DepthFilter.html#a116b008bc8ba7cf2d76e2e5d787eef56',1,'svo::DepthFilter']]],\n  ['_7edepthfromdefocusnode',['~DepthFromDefocusNode',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afa040d5d769ec0fe374456e5bab56ed4',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['_7eframe',['~Frame',['../classsvo_1_1Frame.html#aa3d890f9fee920036f430bf6e546a174',1,'svo::Frame']]],\n  ['_7eframegpu',['~FrameGpu',['../classsvo_1_1FrameGpu.html#aa6d9d899ea61194bff5d761398934d2c',1,'svo::FrameGpu']]],\n  ['_7epoint',['~Point',['../classsvo_1_1Point.html#a3ad56f3912adfdca172593afbddb0e97',1,'svo::Point']]]\n];\n"
  },
  {
    "path": "docs/search/functions_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_2.js",
    "content": "var searchData=\n[\n  ['back',['back',['../classsvo_1_1FeatureTrack.html#a30eb1603d584c597d38602d2f57ce506',1,'svo::FeatureTrack']]],\n  ['back_5fproject',['back_project',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a5f6c5642703e7e34a1eb9cef0a30633f',1,'vikit_py::pinhole_camera::PinholeCamera']]],\n  ['backproject3',['backProject3',['../classvk_1_1cameras_1_1CameraGeometry.html#a4c002abe3ce8c39d72c6bd174882cdec',1,'vk::cameras::CameraGeometry::backProject3()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a3d562135e042ef8d56c496922f352e15',1,'vk::cameras::CameraGeometryBase::backProject3(const Eigen::Ref&lt; const Eigen::Vector2d &gt; &amp;keypoint, Eigen::Vector3d *out_point_3d) const =0'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a13f9a85d500ba4ae624d15cc39976055',1,'vk::cameras::CameraGeometryBase::backProject3(const Eigen::Ref&lt; const Eigen::Matrix2Xd &gt; &amp;keypoints, Eigen::Matrix3Xd *out_bearing_vectors, std::vector&lt; bool &gt; *success) const']]],\n  ['bootstrap',['bootstrap',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a2c3eec8aa1e1647d9f1520046dbbcbd7',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['bootstrappingthread',['bootstrappingThread',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#acfc193401e2a3b820b866c5d52a943a8',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['bundleadjustment',['bundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html#ad40025b532afd75ecfc2b0b5a71e0c4b',1,'svo::AbstractBundleAdjustment::bundleAdjustment()'],['../classsvo_1_1BackendInterface.html#a7298ee57b411c90c920c5cb6a25959bb',1,'svo::BackendInterface::bundleAdjustment()']]],\n  ['bundleid',['bundleId',['../classsvo_1_1Frame.html#a2b98dd459dee140f95ed966dc9ffab37',1,'svo::Frame']]]\n];\n"
  },
  {
    "path": "docs/search/functions_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_3.js",
    "content": "var searchData=\n[\n  ['cam',['cam',['../classsvo_1_1Frame.html#a7dbb5a6ff1428e5f9fac69877a71b85f',1,'svo::Frame']]],\n  ['camerageometrybase',['CameraGeometryBase',['../classvk_1_1cameras_1_1CameraGeometryBase.html#ad6c928f432ff85e3cfe086b31a7d916e',1,'vk::cameras::CameraGeometryBase']]],\n  ['camerainfocallback',['cameraInfoCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a58380879400517719b855d1bb4dbe99a',1,'dvs_bootstrapping::Bootstrapper::cameraInfoCallback()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a98c7bb325b87b98a5246f5413bdfccda',1,'depth_from_defocus::DepthFromDefocusNode::cameraInfoCallback()'],['../classDvsReconstruction.html#af56b5870c78987fb548229d94d7ba236',1,'DvsReconstruction::cameraInfoCallback()'],['../classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6',1,'Tracker::cameraInfoCallback()']]],\n  ['cellindextodepth',['cellIndexToDepth',['../classdepth__from__defocus_1_1DepthVector.html#aa2870a5fa611c5e8bd81e2355714167a',1,'depth_from_defocus::DepthVector']]],\n  ['checkkeypoints',['checkKeyPoints',['../classsvo_1_1Frame.html#a5820b68c25453f4bceccd46e3d96f697',1,'svo::Frame']]],\n  ['cleareventqueue',['clearEventQueue',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a26dd5dfdba38a4c1d0e79c40a516ebde',1,'dvs_bootstrapping::EventsFramesBootstrapper::clearEventQueue()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8b8c08338af40686a2584e8454f98f53',1,'depth_from_defocus::DepthFromDefocusNode::clearEventQueue()'],['../classTracker.html#a269a1f966b13dd619a7b06ff96b07e84',1,'Tracker::clearEventQueue()']]],\n  ['clearmask',['clearMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a47408e0e4133a22f37eb406f07f552ed',1,'vk::cameras::CameraGeometryBase']]],\n  ['closekeyframes',['closeKeyframes',['../classsvo_1_1FrameHandlerBase.html#abf76d39d06a9d9fbee8a20d64758afb2',1,'svo::FrameHandlerBase']]],\n  ['compute',['compute',['../classMosaic.html#ad8fa166741a0b96227d348072cae2ea4',1,'Mosaic::compute()'],['../classvk_1_1solver_1_1ScaleEstimator.html#a46df7fb6f1b86cbf61d855ec143a9e41',1,'vk::solver::ScaleEstimator::compute()'],['../classvk_1_1solver_1_1UnitScaleEstimator.html#a579cfb988f7d96008cedd05099808398',1,'vk::solver::UnitScaleEstimator::compute()'],['../classvk_1_1solver_1_1MADScaleEstimator.html#a750e4635d4e79debf50a9b478b9b59e4',1,'vk::solver::MADScaleEstimator::compute()'],['../classvk_1_1solver_1_1NormalDistributionScaleEstimator.html#ada1d614a1fe877f9a2809c1907c39115',1,'vk::solver::NormalDistributionScaleEstimator::compute()']]],\n  ['computeentropy',['computeEntropy',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a5bb33e9e8f52fbc461bb51051c67e8f9',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['copilotcallback',['copilotCallback',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8e50df3e30a2cb737f9ebba7abf309f7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['copyfeaturesfrom',['copyFeaturesFrom',['../classsvo_1_1Frame.html#adc6e29aea1bc1432cf4cfcc02dfa0c74',1,'svo::Frame']]],\n  ['createimgpyramid',['createImgPyramid',['../namespacesvo_1_1frame__utils.html#ab66effb506ec377e6edf35e95c5d8228',1,'svo::frame_utils']]],\n  ['createrandomkeypoint',['createRandomKeypoint',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a7c4b95b4978f697ade3c088ee2d4371f',1,'vk::cameras::CameraGeometryBase']]]\n];\n"
  },
  {
    "path": "docs/search/functions_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_4.js",
    "content": "var searchData=\n[\n  ['decode',['decode',['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd',1,'YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;::decode()'],['../structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228',1,'YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;::decode()']]],\n  ['decompose',['decompose',['../classcv_1_1HomographyDecomposition_1_1HomographyDecompZhang.html#ad9d5cff3e5c64a5998162a64dc7abe79',1,'cv::HomographyDecomposition::HomographyDecompZhang::decompose()'],['../classcv_1_1HomographyDecomposition_1_1HomographyDecompInria.html#a7ca4aa99a328cb296590ad1b59adce61',1,'cv::HomographyDecomposition::HomographyDecompInria::decompose()']]],\n  ['decomposehomography',['decomposeHomography',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a237e5e1ab93f806ca8f836e5f547792d',1,'cv::HomographyDecomposition::HomographyDecomp']]],\n  ['deletelandmark',['deleteLandmark',['../classsvo_1_1Frame.html#af223f8e7708a90603f962ca37b3996d5',1,'svo::Frame']]],\n  ['depthfilter',['DepthFilter',['../classsvo_1_1DepthFilter.html#a0ef9716f79156168d6b489c163ffe032',1,'svo::DepthFilter::DepthFilter(const DepthFilterOptions &amp;options, const DetectorOptions &amp;detector, const std::shared_ptr&lt; CameraBundle &gt; &amp;cams)'],['../classsvo_1_1DepthFilter.html#a82372b70e898b3d4f57abb92567f2971',1,'svo::DepthFilter::DepthFilter(const DepthFilterOptions &amp;options)']]],\n  ['depthfromdefocusnode',['DepthFromDefocusNode',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a34a786d7ed8c846f3d10e6c4ea44ca1c',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['depthtocell',['depthToCell',['../classdepth__from__defocus_1_1DepthVector.html#a82088f77d80e09f2292c613cc33b6b8b',1,'depth_from_defocus::DepthVector']]],\n  ['depthtocellindex',['depthToCellIndex',['../classdepth__from__defocus_1_1DepthVector.html#a486e355df4bb77541f70a8b454212fb0',1,'depth_from_defocus::DepthVector']]],\n  ['depthvector',['DepthVector',['../classdepth__from__defocus_1_1DepthVector.html#aba9d68160a167d073a7ee98721015dd7',1,'depth_from_defocus::DepthVector']]],\n  ['detect',['detect',['../classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc',1,'svo::AllPixelsDetector']]],\n  ['doreconstruction',['doReconstruction',['../classDvsReconstruction.html#a1d5026405780a0057fd7a947cda33611',1,'DvsReconstruction']]],\n  ['down',['down',['../classvikit__py_1_1transformations_1_1Arcball.html#a5fb248ad1336b57da9bb69c788edbfad',1,'vikit_py::transformations::Arcball']]],\n  ['drag',['drag',['../classvikit__py_1_1transformations_1_1Arcball.html#a0be960e525f7e6e59c7066fbad772f20',1,'vikit_py::transformations::Arcball']]],\n  ['drawevents',['drawEvents',['../classLKSE3.html#a3872f0d45c6550359f85ee08128c1e24',1,'LKSE3']]],\n  ['draweventsnn',['drawEventsNN',['../classLKSE3.html#a7a62dbb224c11371ebbbe75a835f66e2',1,'LKSE3']]]\n];\n"
  },
  {
    "path": "docs/search/functions_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_5.js",
    "content": "var searchData=\n[\n  ['emptypointstrash',['emptyPointsTrash',['../classsvo_1_1Map.html#aaf44aec26900f8c80f09f8f76ff0dd2e',1,'svo::Map']]],\n  ['errormultiplier',['errorMultiplier',['../classvk_1_1cameras_1_1CameraGeometry.html#adba5d477ee438ddb370716e5f9acdaec',1,'vk::cameras::CameraGeometry::errorMultiplier()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab1a2aab897498c3ba629f4eaffabf2e0',1,'vk::cameras::CameraGeometryBase::errorMultiplier()']]],\n  ['estimatetrajectory',['estimateTrajectory',['../classTracker.html#a701c875240036fde1bf0df16665859ed',1,'Tracker']]],\n  ['evaluateerror',['evaluateError',['../classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d',1,'svo::SparseImgAlign::evaluateError()'],['../classsvo_1_1SparseImgAlignBase.html#a94b3c43120316c4a9a363a74d889f6ef',1,'svo::SparseImgAlignBase::evaluateError()'],['../classsvo_1_1SparseImgAlignGpu.html#af4d4246a664012e9c7eaa650052beda6',1,'svo::SparseImgAlignGpu::evaluateError()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a4eb26c1b59bb797ef04f3eb3849edf86',1,'vk::solver::MiniLeastSquaresSolver::evaluateError()']]],\n  ['eventcallback',['eventCallback',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1914b9e59081004b2ad114fb7bb94b23',1,'dvs_bootstrapping::Bootstrapper::eventCallback()'],['../classDvsReconstruction.html#a7f75e15a9a1616c5b704c8b225efab7c',1,'DvsReconstruction::eventCallback()'],['../classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65',1,'Tracker::eventCallback()']]],\n  ['exposurecallback',['exposureCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#a3b374f52d8b549c028cd379515eb43dd',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]]\n];\n"
  },
  {
    "path": "docs/search/functions_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_6.js",
    "content": "var searchData=\n[\n  ['featuretracker',['FeatureTracker',['../classsvo_1_1FeatureTracker.html#acc54c9232f5a13dec171f3eeb9e2cd7f',1,'svo::FeatureTracker']]],\n  ['featurewrapper',['FeatureWrapper',['../structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1',1,'svo::FeatureWrapper']]],\n  ['findepipolarmatchdirect',['findEpipolarMatchDirect',['../classsvo_1_1Matcher.html#a44b92902bcd691dacd044c1e3a3ddd8e',1,'svo::Matcher']]],\n  ['findlocalmatch',['findLocalMatch',['../classsvo_1_1Matcher.html#a3076c56a5213482eead54258e1801e55',1,'svo::Matcher']]],\n  ['findmatchdirect',['findMatchDirect',['../classsvo_1_1Matcher.html#aa7a3fcee314003b6ed3764ad35b429bd',1,'svo::Matcher']]],\n  ['frame',['Frame',['../classsvo_1_1Frame.html#a6a7f235279498122c11fe98e9309e59d',1,'svo::Frame::Frame(const CameraPtr &amp;cam, const cv::Mat &amp;img, const int64_t timestamp_ns, const size_t n_pyr_levels)'],['../classsvo_1_1Frame.html#a95c9a8be611c28f653269a45460ce594',1,'svo::Frame::Frame(const int id, const int64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)'],['../classsvo_1_1Frame.html#a659039742b5d2b5545feb811efe935e1',1,'svo::Frame::Frame()']]],\n  ['framegpu',['FrameGpu',['../classsvo_1_1FrameGpu.html#a6ed28aa5718fde01dfc05c42cc977460',1,'svo::FrameGpu::FrameGpu(const CameraPtr &amp;cam, const cv::Mat &amp;img, const uint64_t timestamp_ns, const size_t n_pyr_levels)'],['../classsvo_1_1FrameGpu.html#ab93bcafca2b6bc7bb11c6dc07e3397ee',1,'svo::FrameGpu::FrameGpu(const int id, const uint64_t timestamp_ns, const CameraPtr &amp;cam, const Transformation &amp;T_world_cam)'],['../classsvo_1_1FrameGpu.html#ae0b3677297fc722028c14f24c632191e',1,'svo::FrameGpu::FrameGpu()']]],\n  ['framehandlerarray',['FrameHandlerArray',['../classsvo_1_1FrameHandlerArray.html#a643f2c7c1873dad682e9bc45f80a5e77',1,'svo::FrameHandlerArray']]],\n  ['framehandlerbase',['FrameHandlerBase',['../classsvo_1_1FrameHandlerBase.html#a4728af3f3b1da1725ee24b811619b2f4',1,'svo::FrameHandlerBase']]],\n  ['framehandlermono',['FrameHandlerMono',['../classsvo_1_1FrameHandlerMono.html#ac47ff8655fde5a91f93204d3cb995e8c',1,'svo::FrameHandlerMono']]],\n  ['framehandlerstereo',['FrameHandlerStereo',['../classsvo_1_1FrameHandlerStereo.html#a9982752128a302c3664596f8a8ead1c2',1,'svo::FrameHandlerStereo']]],\n  ['front',['front',['../classsvo_1_1FeatureTrack.html#abe2acbf3a8170025c24436188ab5512e',1,'svo::FeatureTrack']]]\n];\n"
  },
  {
    "path": "docs/search/functions_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_7.js",
    "content": "var searchData=\n[\n  ['get_5ft_5fc_5fb',['get_T_C_B',['../classvk_1_1cameras_1_1NCamera.html#a715647d79d0319c7d4bcc4e4ccd05f3f',1,'vk::cameras::NCamera']]],\n  ['get_5ft_5fw_5fb',['get_T_W_B',['../classsvo_1_1FrameBundle.html#a736afc6e54f4707d603f67405bdd953a',1,'svo::FrameBundle']]],\n  ['getabsolutegradient',['getAbsoluteGradient',['../classMosaic.html#a0b0a0ca054904c835a8e73657e9f3772',1,'Mosaic']]],\n  ['getaccumulated',['getAccumulated',['../classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a',1,'vk::Timer']]],\n  ['getcamera',['getCamera',['../classvk_1_1cameras_1_1NCamera.html#a70cf2f8aeb34093f4fc3dad63405c306',1,'vk::cameras::NCamera']]],\n  ['getcamerashared',['getCameraShared',['../classvk_1_1cameras_1_1NCamera.html#a36057e5cace3259c1f1689381c183a45',1,'vk::cameras::NCamera::getCameraShared(size_t camera_index)'],['../classvk_1_1cameras_1_1NCamera.html#a615f3b14f9e3501071481444c4bbf325',1,'vk::cameras::NCamera::getCameraShared(size_t camera_index) const']]],\n  ['getcameravector',['getCameraVector',['../classvk_1_1cameras_1_1NCamera.html#ab82489ff15eb2aa23114566d34c1b47d',1,'vk::cameras::NCamera']]],\n  ['getch',['getch',['../classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e',1,'vk::UserInputThread']]],\n  ['getch_5f',['getch_',['../classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99',1,'vk::UserInputThread']]],\n  ['getche',['getche',['../classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d',1,'vk::UserInputThread']]],\n  ['getclosestkeyframe',['getClosestKeyframe',['../classsvo_1_1Map.html#a00df59e6b064b8703898e5a3350712ec',1,'svo::Map']]],\n  ['getclosestnkeyframeswithoberlap',['getClosestNKeyframesWithOberlap',['../classsvo_1_1Map.html#a3f34b39bb21c144937b49280c4a2758c',1,'svo::Map']]],\n  ['getcloseviewobs',['getCloseViewObs',['../classsvo_1_1Point.html#a274e5d81d7b27c75fc9d2c4d6663ad38',1,'svo::Point']]],\n  ['getconstrain',['getconstrain',['../classvikit__py_1_1transformations_1_1Arcball.html#acecfe604df014ec0928300b2be4286d4',1,'vikit_py::transformations::Arcball']]],\n  ['getcurrenttime',['getCurrentTime',['../classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499',1,'vk::Timer']]],\n  ['getcurrenttimestr',['getCurrentTimeStr',['../classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94',1,'vk::Timer']]],\n  ['getdepthvector',['getDepthVector',['../classdepth__from__defocus_1_1DepthVector.html#a731508f6ba2d90aa2432da004c10fc1a',1,'depth_from_defocus::DepthVector']]],\n  ['getdetailedstatus',['getDetailedStatus',['../structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968',1,'vk::cameras::ProjectionResult']]],\n  ['getdistortionparameters',['getDistortionParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#aae571c6775c2a5ded9ec8e3b702c36e6',1,'vk::cameras::CameraGeometry::getDistortionParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2d7cf90ce11c43d113e99b14d495993d',1,'vk::cameras::CameraGeometryBase::getDistortionParameters()']]],\n  ['geterror',['getError',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af986b394da42f7d6087c6d985297a01d',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['getfilteredpose',['getFilteredPose',['../classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b',1,'Tracker']]],\n  ['getfurthestkeyframe',['getFurthestKeyframe',['../classsvo_1_1Map.html#a20818729516f78d838a34673449bc479',1,'svo::Map']]],\n  ['gethessian',['getHessian',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#ad50865303e978ba18160bd2afa46e3cb',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['getinitialattitude',['getInitialAttitude',['../classsvo_1_1ImuHandler.html#af43cc07c06659b667667a5981690c83a',1,'svo::ImuHandler']]],\n  ['getinput',['getInput',['../classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f',1,'vk::UserInputThread']]],\n  ['getintrinsicparameters',['getIntrinsicParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#a831fccee5ea8e720b90d1044338533d4',1,'vk::cameras::CameraGeometry::getIntrinsicParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a3a2f516a8914343fe366fbbd78e12a3d',1,'vk::cameras::CameraGeometryBase::getIntrinsicParameters()']]],\n  ['getkeyframebyid',['getKeyframeById',['../classsvo_1_1Map.html#a42fe05af7113a072570e16add76c13e2',1,'svo::Map']]],\n  ['getlabel',['getLabel',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a9a70c7addad3da7445ac2afa7d324147',1,'vk::cameras::CameraGeometryBase::getLabel()'],['../classvk_1_1cameras_1_1NCamera.html#a7eccedb85ac34cec9eb0e5bb5a31f997',1,'vk::cameras::NCamera::getLabel()']]],\n  ['getlastkeyframe',['getLastKeyframe',['../classsvo_1_1Map.html#afb67a122bb46f1b183c6251df895fea2',1,'svo::Map']]],\n  ['getmask',['getMask',['../classsvo_1_1Frame.html#a5a66fe3946a76445ada2e38147cfbd8e',1,'svo::Frame::getMask()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ae80baaad39fc665e8042a7e9eb0a84e0',1,'vk::cameras::CameraGeometryBase::getMask()']]],\n  ['getmatcher',['getMatcher',['../classsvo_1_1DepthFilter.html#a0db4f6b729df873df7e49f94e21054d3',1,'svo::DepthFilter']]],\n  ['getmeasurements',['getMeasurements',['../classsvo_1_1ImuHandler.html#a944048ff2febf5a715e8c2ac179c32e9',1,'svo::ImuHandler']]],\n  ['getmediandisparity',['getMedianDisparity',['../classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4',1,'svo::SparseImgAlignGpu']]],\n  ['getmilliseconds',['getMilliseconds',['../classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e',1,'vk::Timer']]],\n  ['getmintimestampnanoseconds',['getMinTimestampNanoseconds',['../classsvo_1_1FrameBundle.html#ab5390318b9d6a32258d22e3f1c53b38f',1,'svo::FrameBundle']]],\n  ['getmotionprior',['getMotionPrior',['../classsvo_1_1FrameHandlerBase.html#a0657a487fcb022f2b868089ee1ae6066',1,'svo::FrameHandlerBase']]],\n  ['getncamera',['getNCamera',['../classsvo_1_1FrameHandlerBase.html#a1787cc2c35cdcb8f8db501570acbf0e9',1,'svo::FrameHandlerBase']]],\n  ['getnframeindex',['getNFrameIndex',['../classsvo_1_1Frame.html#ab8ec058962266550f9b9f5125892fab8',1,'svo::Frame']]],\n  ['getnumcameras',['getNumCameras',['../classvk_1_1cameras_1_1NCamera.html#ad233ea2d278087592f477449c7b15332',1,'vk::cameras::NCamera']]],\n  ['getnumtrackedanddisparityperframe',['getNumTrackedAndDisparityPerFrame',['../classsvo_1_1FeatureTracker.html#a15dc4f61e6765e47919c22b0e8cc35c9',1,'svo::FeatureTracker']]],\n  ['getoverlapkeyframes',['getOverlapKeyframes',['../classsvo_1_1Map.html#a75275a92ad6a388da03ecb61c5849bcb',1,'svo::Map']]],\n  ['getposeat',['getPoseAt',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad015324f82f688def03d52386161e706',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['getreconstructedimage',['getReconstructedImage',['../classMosaic.html#aa554763fc8027f7aaa388120001d5e09',1,'Mosaic']]],\n  ['getrelativerotationprior',['getRelativeRotationPrior',['../classsvo_1_1ImuHandler.html#a329060dd1d7f47be02efc859649bae02',1,'svo::ImuHandler']]],\n  ['getscenedepth',['getSceneDepth',['../namespacesvo_1_1frame__utils.html#a3e14f30975b878994df3a16db2593bb1',1,'svo::frame_utils']]],\n  ['getseeddepth',['getSeedDepth',['../classsvo_1_1Frame.html#a3cf372944980408bfc193c07deafd41d',1,'svo::Frame']]],\n  ['getseedframe',['getSeedFrame',['../classsvo_1_1Point.html#a434bb8bb372fe7e3418dabe4935ff8b7',1,'svo::Point']]],\n  ['getseedposinframe',['getSeedPosInFrame',['../classsvo_1_1Frame.html#a1a9283929911b5480b133ae84fdd6577',1,'svo::Frame']]],\n  ['getsortedkeyframes',['getSortedKeyframes',['../classsvo_1_1Map.html#a08bfdb2c4b6b9f06315e3526f05d3d0c',1,'svo::Map']]],\n  ['gettime',['getTime',['../classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1',1,'vk::Timer']]],\n  ['gettimestampnsec',['getTimestampNSec',['../classsvo_1_1Frame.html#a04f38c38d3a837d9408fb1cceaafdc46',1,'svo::Frame']]],\n  ['gettimestampsec',['getTimestampSec',['../classsvo_1_1Frame.html#a677ab5fadd2f9dd87c35a36c57460528',1,'svo::Frame']]],\n  ['gettransformationvector',['getTransformationVector',['../classvk_1_1cameras_1_1NCamera.html#ac32ad5bdf9d5867cf21c2fa6bf021d5d',1,'vk::cameras::NCamera']]],\n  ['gettriangulationparallax',['getTriangulationParallax',['../classsvo_1_1Point.html#ad9eb8d202f27d54e5792ec0dcc2457e6',1,'svo::Point']]],\n  ['gettype',['getType',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a9b17bf9ed137aebb4f70d334495698a7',1,'vk::cameras::CameraGeometryBase']]]\n];\n"
  },
  {
    "path": "docs/search/functions_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_8.js",
    "content": "var searchData=\n[\n  ['hasmask',['hasMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a2444ecb4b20bfe69d6372a38c94d3f16',1,'vk::cameras::CameraGeometryBase']]],\n  ['hasstarted',['hasStarted',['../classsvo_1_1FrameHandlerBase.html#a6411fbf14c5a05c29c2a46fd6fb98acd',1,'svo::FrameHandlerBase']]]\n];\n"
  },
  {
    "path": "docs/search/functions_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_9.js",
    "content": "var searchData=\n[\n  ['id',['id',['../classsvo_1_1Frame.html#a85b6751930952162b2f7ced8f06d2036',1,'svo::Frame::id()'],['../classsvo_1_1Point.html#aff310168138bfa71fa520726378179f6',1,'svo::Point::id()']]],\n  ['imagecallback',['imageCallback',['../classevo__utils_1_1select__exposure__DAVIS_1_1ExposureSelector.html#ad03a6480cd7149ec410f9658ff960466',1,'evo_utils::select_exposure_DAVIS::ExposureSelector']]],\n  ['imageheight',['imageHeight',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a768d756f986912c68676d516d3dea18c',1,'vk::cameras::CameraGeometryBase']]],\n  ['imagewidth',['imageWidth',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a8602711f9d4c4b7187ba04d1d5678177',1,'vk::cameras::CameraGeometryBase']]],\n  ['img',['img',['../classsvo_1_1Frame.html#a4f86fbd03628ffd017f517a9a45eb95f',1,'svo::Frame']]],\n  ['imupos',['imuPos',['../classsvo_1_1Frame.html#a65ace6a33926bac64d78617444c0efab',1,'svo::Frame']]],\n  ['initframe',['initFrame',['../classsvo_1_1Frame.html#a09ee4da5f0e0a4e0dbf36086d61f17cd',1,'svo::Frame']]],\n  ['initgpudata',['initGpuData',['../classsvo_1_1FrameGpu.html#a2b7e406066dd361c70c745369138760a',1,'svo::FrameGpu']]],\n  ['initialize',['initialize',['../classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4',1,'Tracker']]],\n  ['initializenewtracks',['initializeNewTracks',['../classsvo_1_1FeatureTracker.html#a290d11f7097b02fa461b8cf1c21a7a25',1,'svo::FeatureTracker']]],\n  ['initinternal',['initInternal',['../classvk_1_1cameras_1_1NCamera.html#a3b2f13ab67e8d2f2ebb9add468b35bc5',1,'vk::cameras::NCamera']]],\n  ['initnormal',['initNormal',['../classsvo_1_1Point.html#abefcb0aae2a7ff8da053cbfdb4c051d4',1,'svo::Point']]],\n  ['inittermios',['initTermios',['../classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d',1,'vk::UserInputThread']]],\n  ['integrateevents',['integrateEvents',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#af4746b4fc632d898bfab5dc8e63b708d',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['integratingthread',['integratingThread',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5f7a1ab3f8226687166d6fe5b8520b01',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['iskeyframe',['isKeyframe',['../classsvo_1_1Frame.html#a09ebfebf95e30d65273e69c55e6617a2',1,'svo::Frame']]],\n  ['iskeypointvisible',['isKeypointVisible',['../structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb',1,'vk::cameras::ProjectionResult::isKeypointVisible()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#add6f222399cd18fefaeee4c1767868e4',1,'vk::cameras::CameraGeometryBase::isKeypointVisible()']]],\n  ['iskeypointvisiblewithmargin',['isKeypointVisibleWithMargin',['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab9a288afa8d7571c4f30f8b071d982ce',1,'vk::cameras::CameraGeometryBase']]],\n  ['ismasked',['isMasked',['../classvk_1_1cameras_1_1CameraGeometryBase.html#af75364888adf0cb4e4f907cf58833f8a',1,'vk::cameras::CameraGeometryBase']]],\n  ['ispatchwithinimage',['isPatchWithinImage',['../classsvo_1_1Matcher.html#a91e0091043b2a4b31bb7cb6d88bb2c6e',1,'svo::Matcher']]],\n  ['isrotationvalid',['isRotationValid',['../classcv_1_1HomographyDecomposition_1_1HomographyDecomp.html#a39d8f0efba934cf90855db28944d1ec1',1,'cv::HomographyDecomposition::HomographyDecomp']]],\n  ['istrackedlandmark',['isTrackedLandmark',['../classsvo_1_1Frame.html#a09ba195e035e25336118752e8d808137',1,'svo::Frame']]],\n  ['isvisible',['isVisible',['../classsvo_1_1Frame.html#ab9ba93932550e92aa43195aa831f19f7',1,'svo::Frame']]]\n];\n"
  },
  {
    "path": "docs/search/functions_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_a.js",
    "content": "var searchData=\n[\n  ['jacobian',['jacobian',['../classvk_1_1cameras_1_1RadialTangentialDistortion.html#a4a239ba60ce8eacb1a8beacef30ac912',1,'vk::cameras::RadialTangentialDistortion']]],\n  ['jacobian_5fxyz2f',['jacobian_xyz2f',['../classsvo_1_1Point.html#a14bf6a380b2da4ff24446503dc724b00',1,'svo::Point']]],\n  ['jacobian_5fxyz2f_5fimu',['jacobian_xyz2f_imu',['../classsvo_1_1Frame.html#a03fbea569ca4969a51434cb23a73106a',1,'svo::Frame']]],\n  ['jacobian_5fxyz2image_5fimu',['jacobian_xyz2image_imu',['../classsvo_1_1Frame.html#a949e59fb915ca2e5bbd00fa352a2d633',1,'svo::Frame']]],\n  ['jacobian_5fxyz2img_5fimu',['jacobian_xyz2img_imu',['../classsvo_1_1Frame.html#ad18170c2e4927c490edd7b871ada2faf',1,'svo::Frame']]],\n  ['jacobian_5fxyz2uv',['jacobian_xyz2uv',['../classsvo_1_1Frame.html#ad60c0defb5c61abcadb3f341acaa62d9',1,'svo::Frame::jacobian_xyz2uv()'],['../classsvo_1_1Point.html#a110e395d01722c71aefd894a4ae1d684',1,'svo::Point::jacobian_xyz2uv()']]],\n  ['jacobian_5fxyz2uv_5fimu',['jacobian_xyz2uv_imu',['../classsvo_1_1Frame.html#a0e4ba9ed976e38b3897f777dd0001b6e',1,'svo::Frame']]],\n  ['job',['Job',['../structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6',1,'svo::DepthFilter::Job::Job()'],['../structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699',1,'svo::DepthFilter::Job::Job(const FramePtr &amp;_cur_frame, const FramePtr &amp;_ref_frame, const size_t _ref_index)'],['../structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb',1,'svo::DepthFilter::Job::Job(const FramePtr &amp;f, double min_d, double max_d, double mean_d)']]]\n];\n"
  },
  {
    "path": "docs/search/functions_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_b.js",
    "content": "var searchData=\n[\n  ['lastframe',['lastFrame',['../classsvo_1_1FrameHandlerMono.html#a53c2eed564df3f282356c668f3b60712',1,'svo::FrameHandlerMono']]],\n  ['lastframes',['lastFrames',['../classsvo_1_1FrameHandlerStereo.html#aa07d49814862b7b874359e113849440a',1,'svo::FrameHandlerStereo']]],\n  ['lastnumobservations',['lastNumObservations',['../classsvo_1_1FrameHandlerBase.html#a0ec9d5f1b3aacc63b84496c3a8eb4d10',1,'svo::FrameHandlerBase']]],\n  ['lastprocessingtime',['lastProcessingTime',['../classsvo_1_1FrameHandlerBase.html#accb137df18256727849eebc75a1652fc',1,'svo::FrameHandlerBase']]],\n  ['loadfromyaml',['loadFromYaml',['../classvk_1_1cameras_1_1CameraGeometryBase.html#ab342b2a8ed0212d5608b38fdab62a858',1,'vk::cameras::CameraGeometryBase::loadFromYaml()'],['../classvk_1_1cameras_1_1NCamera.html#ad477facc6c06e87b1b33469108e39c93',1,'vk::cameras::NCamera::loadFromYaml()']]],\n  ['loadmapfrombundleadjustment',['loadMapFromBundleAdjustment',['../classsvo_1_1AbstractBundleAdjustment.html#a355647c9d3d43586cd285825e1422227',1,'svo::AbstractBundleAdjustment::loadMapFromBundleAdjustment()'],['../classsvo_1_1BackendInterface.html#a70fc52ababcffd764ad4a155a0e49423',1,'svo::BackendInterface::loadMapFromBundleAdjustment()']]],\n  ['loadmask',['loadMask',['../classvk_1_1cameras_1_1CameraGeometryBase.html#a0215932e0f6f88923069368f2ba16bfc',1,'vk::cameras::CameraGeometryBase']]]\n];\n"
  },
  {
    "path": "docs/search/functions_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_c.js",
    "content": "var searchData=\n[\n  ['map',['map',['../classsvo_1_1FrameHandlerBase.html#ab8b06f38023a60b23f43e5f61f95ccc1',1,'svo::FrameHandlerBase']]],\n  ['mapcallback',['mapCallback',['../classDvsReconstruction.html#a0c5e20c4a2ed7c852eea161dc5aa2ca9',1,'DvsReconstruction::mapCallback()'],['../classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92',1,'Tracker::mapCallback()']]],\n  ['matrix',['matrix',['../classvikit__py_1_1transformations_1_1Arcball.html#a08e63edc552973ef57d98616305fadf2',1,'vikit_py::transformations::Arcball']]],\n  ['mosaic',['Mosaic',['../classMosaic.html#ade1f356723fa9f8f0427b7ce5829350f',1,'Mosaic']]]\n];\n"
  },
  {
    "path": "docs/search/functions_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_d.js",
    "content": "var searchData=\n[\n  ['neednewkf',['needNewKf',['../classsvo_1_1FrameHandlerBase.html#aa137938e09bef10b681a9d1b9ff7b497',1,'svo::FrameHandlerBase']]],\n  ['next',['next',['../classvikit__py_1_1transformations_1_1Arcball.html#a4c3505cf87c983ed5e846222b11a896c',1,'vikit_py::transformations::Arcball']]],\n  ['nrefs',['nRefs',['../classsvo_1_1Point.html#a1239a736f175ba2f461ed26f661dfcbf',1,'svo::Point']]],\n  ['numcameras',['numCameras',['../classvk_1_1cameras_1_1NCamera.html#aad3f560613c3d47cdc7ba9d0097d0ba9',1,'vk::cameras::NCamera']]],\n  ['numfeatures',['numFeatures',['../classsvo_1_1Frame.html#a34b93936cd3e520a509ba4a3d7e46bc7',1,'svo::Frame::numFeatures()'],['../classsvo_1_1FrameBundle.html#ad635ea477834db67ab2b01c8674ca064',1,'svo::FrameBundle::numFeatures()']]],\n  ['numlandmarks',['numLandmarks',['../classsvo_1_1Frame.html#a857540046a75a544750db47e907def0c',1,'svo::Frame::numLandmarks()'],['../classsvo_1_1FrameBundle.html#a5467fcf682ad5bb550fcb613aefcc6e9',1,'svo::FrameBundle::numLandmarks()']]],\n  ['numtrackedfeatures',['numTrackedFeatures',['../classsvo_1_1Frame.html#a5c72a896ce597c05ca09d5d2758d15a6',1,'svo::Frame::numTrackedFeatures()'],['../classsvo_1_1FrameBundle.html#abfc25b103af8196bcd8620f36d4e80da',1,'svo::FrameBundle::numTrackedFeatures()']]]\n];\n"
  },
  {
    "path": "docs/search/functions_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_e.js",
    "content": "var searchData=\n[\n  ['on_5fbootstrap_5fbutton_5fpressed',['on_bootstrap_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a88968ed54a1a88cd8686439fd0784d43',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fcopilot_5fstate_5fchanged',['on_copilot_state_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ae7d73a45236b5ff4627cd9225ddd36c3',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fmap_5fexpansion_5fchanged',['on_map_expansion_changed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#ad7f0ef3ea1c7b6a3ecf632f515588cd2',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fstart_5fbutton_5fpressed',['on_start_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a6df7fdac26609fb4795f46ccb8890cc1',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fswitch_5fbutton_5fpressed',['on_switch_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#a73cd3180e1c85bd852c719bc5edd580c',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['on_5fupdate_5fbutton_5fpressed',['on_update_button_pressed',['../classrqt__evo_1_1evo__widget_1_1EvoWidget.html#abf9a5ed13c2c464c9cdc74ae9679f048',1,'rqt_evo::evo_widget::EvoWidget']]],\n  ['operator_20bool',['operator bool',['../structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02',1,'vk::cameras::ProjectionResult']]],\n  ['operator_3d_3d',['operator==',['../structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092',1,'vk::cameras::ProjectionResult::operator==(const ProjectionResult &amp;other) const'],['../structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793',1,'vk::cameras::ProjectionResult::operator==(const ProjectionResult::Status &amp;other) const']]],\n  ['optimize',['optimize',['../classsvo_1_1Point.html#af2814f4ff5cfcb9d28bfe492a53d06d7',1,'svo::Point::optimize()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a81d74724b7fd40ce911336ddd5bbd4e4',1,'vk::solver::MiniLeastSquaresSolver::optimize()']]],\n  ['optimizegaussnewton',['optimizeGaussNewton',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a192d7bf3f30934b909a917c3eefe01ea',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['optimizelevenbergmarquardt',['optimizeLevenbergMarquardt',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a370c67fedf34421d201799dff3c2b712',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/functions_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/functions_f.js",
    "content": "var searchData=\n[\n  ['pausebootstrapper',['pauseBootstrapper',['../classdvs__bootstrapping_1_1Bootstrapper.html#a5ee5d565b59f276e03aaa79e89445a70',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['pinholecamera',['PinholeCamera',['../classevo__utils_1_1camera_1_1PinholeCamera.html#a7bd23523103950624b1eacfd8b307a21',1,'evo_utils::camera::PinholeCamera']]],\n  ['place',['place',['../classvikit__py_1_1transformations_1_1Arcball.html#a6315f97ef8eca783acd2980dc713b732',1,'vikit_py::transformations::Arcball']]],\n  ['point',['Point',['../classsvo_1_1Point.html#a9d77ac148602a11e6d15070e3ca9bba7',1,'svo::Point::Point(const Eigen::Vector3d &amp;pos)'],['../classsvo_1_1Point.html#ae904bb2f9bf357e859aa1ccf0c5de1cd',1,'svo::Point::Point(const int id, const Eigen::Vector3d &amp;pos)']]],\n  ['pos',['pos',['../classsvo_1_1Frame.html#ace67c4917849a759810d2927886b02ad',1,'svo::Frame::pos()'],['../classsvo_1_1Point.html#a9a6552266bfced00a450c7f4dbc0be25',1,'svo::Point::pos()']]],\n  ['postbootstrapcalled',['postBootstrapCalled',['../classdvs__bootstrapping_1_1Bootstrapper.html#a67eded4cb8f32792941afb66a8cc1582',1,'dvs_bootstrapping::Bootstrapper::postBootstrapCalled()'],['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a7705cc27f5576a7cbce05cd42fd5e9c3',1,'dvs_bootstrapping::FrontoPlanarBootstrapper::postBootstrapCalled()']]],\n  ['postcameraloaded',['postCameraLoaded',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1f0451b7574f6c8dc9fe8276728f481b',1,'dvs_bootstrapping::Bootstrapper::postCameraLoaded()'],['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a5cb2328ccca4540592a7e462d4503991',1,'dvs_bootstrapping::EventsFramesBootstrapper::postCameraLoaded()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0d17eba64b62fb1b3e9ce82ae067f3e7',1,'depth_from_defocus::DepthFromDefocusNode::postCameraLoaded()'],['../classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9',1,'Tracker::postCameraLoaded()']]],\n  ['precomputerectificationmap',['precomputeRectificationMap',['../classMosaic.html#a4b51f56ef447d56e030832edae88c4b1',1,'Mosaic']]],\n  ['precomputerectifiedpoints',['precomputeRectifiedPoints',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aabf95d4de38430266604af8ada0dc552',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['precomputereferenceframe',['precomputeReferenceFrame',['../classLKSE3.html#a40a8dd6e220987bf08f12dc64fb6566c',1,'LKSE3']]],\n  ['print',['print',['../classsvo_1_1Point.html#ae2d358457c3d247884c3f54612c488cc',1,'svo::Point']]],\n  ['printparameters',['printParameters',['../classvk_1_1cameras_1_1CameraGeometry.html#aed1cc99646623ce62b54b280ad1cf90e',1,'vk::cameras::CameraGeometry::printParameters()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#a8e312861e462b9f2e29fec1e4e6ff9c1',1,'vk::cameras::CameraGeometryBase::printParameters()'],['../classvk_1_1cameras_1_1NCamera.html#a447cfe8121a730f567cfcf41fb913bf4',1,'vk::cameras::NCamera::printParameters()']]],\n  ['processeventarray',['processEventArray',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a66af9d6f400f5ba558891c3e96ccefc8',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['processeventqueue',['processEventQueue',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#acf8dc50f440375fdf193e512a73409a5',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['processfirstframe',['processFirstFrame',['../classsvo_1_1FrameHandlerMono.html#a3775f25208dac773c7250229e409dfc8',1,'svo::FrameHandlerMono::processFirstFrame()'],['../classsvo_1_1FrameHandlerStereo.html#a1eb79239f5925fcf055a70b716007273',1,'svo::FrameHandlerStereo::processFirstFrame()']]],\n  ['processframe',['processFrame',['../classsvo_1_1FrameHandlerMono.html#ab45bc735f725b613e649c4a6b92fd6a5',1,'svo::FrameHandlerMono::processFrame()'],['../classsvo_1_1FrameHandlerStereo.html#aa31785db89e72f9047dd28fb0f487ca1',1,'svo::FrameHandlerStereo::processFrame()']]],\n  ['processframebundle',['processFrameBundle',['../classsvo_1_1FrameHandlerArray.html#a3494c8e26fbc59bcbeee40ea97cb8d7c',1,'svo::FrameHandlerArray::processFrameBundle()'],['../classsvo_1_1FrameHandlerBase.html#aa2095d323a85868fa171146f26eceb1d',1,'svo::FrameHandlerBase::processFrameBundle()'],['../classsvo_1_1FrameHandlerMono.html#a033631a985d42758f8f1d077e89cc09e',1,'svo::FrameHandlerMono::processFrameBundle()'],['../classsvo_1_1FrameHandlerStereo.html#afb6b1b1b021514e836b61b3a5acee2aa',1,'svo::FrameHandlerStereo::processFrameBundle()']]],\n  ['project',['project',['../classvikit__py_1_1pinhole__camera_1_1PinholeCamera.html#a10580f558a939cd1ab4247e50107d69e',1,'vikit_py::pinhole_camera::PinholeCamera']]],\n  ['project3',['project3',['../classvk_1_1cameras_1_1CameraGeometry.html#a3acada201195ada920c4a9df98e02c34',1,'vk::cameras::CameraGeometry::project3()'],['../classvk_1_1cameras_1_1CameraGeometryBase.html#ac2bfe46e92c8ea894fdd477a2b1fe13b',1,'vk::cameras::CameraGeometryBase::project3()']]],\n  ['project3dtopixel',['project3dToPixel',['../classevo__utils_1_1camera_1_1PinholeCamera.html#a61fee4ce15caef24fd7d7588e688fd9c',1,'evo_utils::camera::PinholeCamera']]],\n  ['projecteventstovoxelgrid',['projectEventsToVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afdfd142fd0150cdf4db973a7e4cf2446',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['projectmap',['projectMap',['../classLKSE3.html#af83e375a213c2b8092fb21af3fe5172f',1,'LKSE3']]],\n  ['projectpixelto3dray',['projectPixelTo3dRay',['../classevo__utils_1_1camera_1_1PinholeCamera.html#a251272eb99fa4e49a57ff8f2a93f427f',1,'evo_utils::camera::PinholeCamera']]],\n  ['publishdepthmap',['publishDepthmap',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a38737d443d893b1a30d423e13563ec9d',1,'depth_from_defocus::DepthFromDefocusNode::publishDepthmap()'],['../classMosaic.html#ad97f67d85ef30287348e1cf78a0a125e',1,'Mosaic::publishDepthmap()']]],\n  ['publisheventimage',['publishEventImage',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ad90caac7628ef0bc3dec5e963f60053e',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['publishglobalmap',['publishGlobalMap',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a94b54fd9870f48adb1e52e88975cdc45',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['publishimagereconstruction',['publishImageReconstruction',['../classMosaic.html#a3af6d4164d8a1f965321a6cdfbc39dd7',1,'Mosaic']]],\n  ['publishmapoverlapthread',['publishMapOverlapThread',['../classTracker.html#a2279b2b5f7be0fde95c54820fba976fd',1,'Tracker']]],\n  ['publishopticalflowvectors',['publishOpticalFlowVectors',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaeb941155dfff9dc9ab9f8a87590f6fe',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['publishpcl',['publishPcl',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aaf4d0a5f39993ade1e9d3c38f0e34b6b',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['publishpose',['publishPose',['../classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f',1,'Tracker']]],\n  ['publishtf',['publishTF',['../classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c',1,'Tracker']]],\n  ['publishvoxelgrid',['publishVoxelGrid',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63265d395f08ffcc3754dfbd8fddcf9a',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pushback',['pushBack',['../classsvo_1_1FeatureTrack.html#a9c85c082cc7d33bd9d614b35eb9ac4fe',1,'svo::FeatureTrack']]]\n];\n"
  },
  {
    "path": "docs/search/namespaces_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"namespaces_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/namespaces_0.js",
    "content": "var searchData=\n[\n  ['feature_5falignment',['feature_alignment',['../namespacesvo_1_1feature__alignment.html',1,'svo']]],\n  ['frame_5futils',['frame_utils',['../namespacesvo_1_1frame__utils.html',1,'svo']]],\n  ['svo',['svo',['../namespacesvo.html',1,'']]],\n  ['warp',['warp',['../namespacesvo_1_1warp.html',1,'svo']]]\n];\n"
  },
  {
    "path": "docs/search/nomatches.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_0.js",
    "content": "var searchData=\n[\n  ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/pages_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_1.js",
    "content": "var searchData=\n[\n  ['evo_3a_20event_20based_20visual_20odometry',['EVO: Event based Visual Odometry',['../md_README.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/pages_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_2.js",
    "content": "var searchData=\n[\n  ['readme',['README',['../md_rqt_evo_README.html',1,'']]],\n  ['readme',['README',['../md_rqt_svo_README.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/pages_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_3.js",
    "content": "var searchData=\n[\n  ['todo_20list',['Todo List',['../todo.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/pages_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/pages_4.js",
    "content": "var searchData=\n[\n  ['vikit',['VIKIT',['../md_svo_vikit_README.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/search/related_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/related_0.js",
    "content": "var searchData=\n[\n  ['operator_3c_3c',['operator&lt;&lt;',['../structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274',1,'vk::cameras::ProjectionResult']]]\n];\n"
  },
  {
    "path": "docs/search/search.css",
    "content": "/*---------------- Search Box */\n\n#FSearchBox {\n    float: left;\n}\n\n#MSearchBox {\n    white-space : nowrap;\n    float: none;\n    margin-top: 8px;\n    right: 0px;\n    width: 170px;\n    height: 24px;\n    z-index: 102;\n}\n\n#MSearchBox .left\n{\n    display:block;\n    position:absolute;\n    left:10px;\n    width:20px;\n    height:19px;\n    background:url('search_l.png') no-repeat;\n    background-position:right;\n}\n\n#MSearchSelect {\n    display:block;\n    position:absolute;\n    width:20px;\n    height:19px;\n}\n\n.left #MSearchSelect {\n    left:4px;\n}\n\n.right #MSearchSelect {\n    right:5px;\n}\n\n#MSearchField {\n    display:block;\n    position:absolute;\n    height:19px;\n    background:url('search_m.png') repeat-x;\n    border:none;\n    width:115px;\n    margin-left:20px;\n    padding-left:4px;\n    color: #909090;\n    outline: none;\n    font: 9pt Arial, Verdana, sans-serif;\n    -webkit-border-radius: 0px;\n}\n\n#FSearchBox #MSearchField {\n    margin-left:15px;\n}\n\n#MSearchBox .right {\n    display:block;\n    position:absolute;\n    right:10px;\n    top:8px;\n    width:20px;\n    height:19px;\n    background:url('search_r.png') no-repeat;\n    background-position:left;\n}\n\n#MSearchClose {\n    display: none;\n    position: absolute;\n    top: 4px;\n    background : none;\n    border: none;\n    margin: 0px 4px 0px 0px;\n    padding: 0px 0px;\n    outline: none;\n}\n\n.left #MSearchClose {\n    left: 6px;\n}\n\n.right #MSearchClose {\n    right: 2px;\n}\n\n.MSearchBoxActive #MSearchField {\n    color: #000000;\n}\n\n/*---------------- Search filter selection */\n\n#MSearchSelectWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #90A5CE;\n    background-color: #F9FAFC;\n    z-index: 10001;\n    padding-top: 4px;\n    padding-bottom: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-top-left-radius: 4px;\n    -webkit-border-top-right-radius: 4px;\n    -webkit-border-bottom-left-radius: 4px;\n    -webkit-border-bottom-right-radius: 4px;\n    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\n.SelectItem {\n    font: 8pt Arial, Verdana, sans-serif;\n    padding-left:  2px;\n    padding-right: 12px;\n    border: 0px;\n}\n\nspan.SelectionMark {\n    margin-right: 4px;\n    font-family: monospace;\n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem {\n    display: block;\n    outline-style: none;\n    color: #000000; \n    text-decoration: none;\n    padding-left:   6px;\n    padding-right: 12px;\n}\n\na.SelectItem:focus,\na.SelectItem:active {\n    color: #000000; \n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem:hover {\n    color: #FFFFFF;\n    background-color: #3D578C;\n    outline-style: none;\n    text-decoration: none;\n    cursor: pointer;\n    display: block;\n}\n\n/*---------------- Search results window */\n\niframe#MSearchResults {\n    width: 60ex;\n    height: 15em;\n}\n\n#MSearchResultsWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #000;\n    background-color: #EEF1F7;\n    z-index:10000;\n}\n\n/* ----------------------------------- */\n\n\n#SRIndex {\n    clear:both; \n    padding-bottom: 15px;\n}\n\n.SREntry {\n    font-size: 10pt;\n    padding-left: 1ex;\n}\n\n.SRPage .SREntry {\n    font-size: 8pt;\n    padding: 1px 5px;\n}\n\nbody.SRPage {\n    margin: 5px 2px;\n}\n\n.SRChildren {\n    padding-left: 3ex; padding-bottom: .5em \n}\n\n.SRPage .SRChildren {\n    display: none;\n}\n\n.SRSymbol {\n    font-weight: bold; \n    color: #425E97;\n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRScope {\n    display: block;\n    color: #425E97; \n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRSymbol:focus, a.SRSymbol:active,\na.SRScope:focus, a.SRScope:active {\n    text-decoration: underline;\n}\n\nspan.SRScope {\n    padding-left: 4px;\n}\n\n.SRPage .SRStatus {\n    padding: 2px 5px;\n    font-size: 8pt;\n    font-style: italic;\n}\n\n.SRResult {\n    display: none;\n}\n\nDIV.searchresults {\n    margin-left: 10px;\n    margin-right: 10px;\n}\n\n/*---------------- External search page results */\n\n.searchresult {\n    background-color: #F0F3F8;\n}\n\n.pages b {\n   color: white;\n   padding: 5px 5px 3px 5px;\n   background-image: url(\"../tab_a.png\");\n   background-repeat: repeat-x;\n   text-shadow: 0 1px 1px #000000;\n}\n\n.pages {\n    line-height: 17px;\n    margin-left: 4px;\n    text-decoration: none;\n}\n\n.hl {\n    font-weight: bold;\n}\n\n#searchresults {\n    margin-bottom: 20px;\n}\n\n.searchpages {\n    margin-top: 10px;\n}\n\n"
  },
  {
    "path": "docs/search/search.js",
    "content": "function convertToId(search)\n{\n  var result = '';\n  for (i=0;i<search.length;i++)\n  {\n    var c = search.charAt(i);\n    var cn = c.charCodeAt(0);\n    if (c.match(/[a-z0-9\\u0080-\\uFFFF]/))\n    {\n      result+=c;\n    }\n    else if (cn<16)\n    {\n      result+=\"_0\"+cn.toString(16);\n    }\n    else\n    {\n      result+=\"_\"+cn.toString(16);\n    }\n  }\n  return result;\n}\n\nfunction getXPos(item)\n{\n  var x = 0;\n  if (item.offsetWidth)\n  {\n    while (item && item!=document.body)\n    {\n      x   += item.offsetLeft;\n      item = item.offsetParent;\n    }\n  }\n  return x;\n}\n\nfunction getYPos(item)\n{\n  var y = 0;\n  if (item.offsetWidth)\n  {\n     while (item && item!=document.body)\n     {\n       y   += item.offsetTop;\n       item = item.offsetParent;\n     }\n  }\n  return y;\n}\n\n/* A class handling everything associated with the search panel.\n\n   Parameters:\n   name - The name of the global variable that will be\n          storing this instance.  Is needed to be able to set timeouts.\n   resultPath - path to use for external files\n*/\nfunction SearchBox(name, resultsPath, inFrame, label)\n{\n  if (!name || !resultsPath) {  alert(\"Missing parameters to SearchBox.\"); }\n\n  // ---------- Instance variables\n  this.name                  = name;\n  this.resultsPath           = resultsPath;\n  this.keyTimeout            = 0;\n  this.keyTimeoutLength      = 500;\n  this.closeSelectionTimeout = 300;\n  this.lastSearchValue       = \"\";\n  this.lastResultsPage       = \"\";\n  this.hideTimeout           = 0;\n  this.searchIndex           = 0;\n  this.searchActive          = false;\n  this.insideFrame           = inFrame;\n  this.searchLabel           = label;\n\n  // ----------- DOM Elements\n\n  this.DOMSearchField = function()\n  {  return document.getElementById(\"MSearchField\");  }\n\n  this.DOMSearchSelect = function()\n  {  return document.getElementById(\"MSearchSelect\");  }\n\n  this.DOMSearchSelectWindow = function()\n  {  return document.getElementById(\"MSearchSelectWindow\");  }\n\n  this.DOMPopupSearchResults = function()\n  {  return document.getElementById(\"MSearchResults\");  }\n\n  this.DOMPopupSearchResultsWindow = function()\n  {  return document.getElementById(\"MSearchResultsWindow\");  }\n\n  this.DOMSearchClose = function()\n  {  return document.getElementById(\"MSearchClose\"); }\n\n  this.DOMSearchBox = function()\n  {  return document.getElementById(\"MSearchBox\");  }\n\n  // ------------ Event Handlers\n\n  // Called when focus is added or removed from the search field.\n  this.OnSearchFieldFocus = function(isActive)\n  {\n    this.Activate(isActive);\n  }\n\n  this.OnSearchSelectShow = function()\n  {\n    var searchSelectWindow = this.DOMSearchSelectWindow();\n    var searchField        = this.DOMSearchSelect();\n\n    if (this.insideFrame)\n    {\n      var left = getXPos(searchField);\n      var top  = getYPos(searchField);\n      left += searchField.offsetWidth + 6;\n      top += searchField.offsetHeight;\n\n      // show search selection popup\n      searchSelectWindow.style.display='block';\n      left -= searchSelectWindow.offsetWidth;\n      searchSelectWindow.style.left =  left + 'px';\n      searchSelectWindow.style.top  =  top  + 'px';\n    }\n    else\n    {\n      var left = getXPos(searchField);\n      var top  = getYPos(searchField);\n      top += searchField.offsetHeight;\n\n      // show search selection popup\n      searchSelectWindow.style.display='block';\n      searchSelectWindow.style.left =  left + 'px';\n      searchSelectWindow.style.top  =  top  + 'px';\n    }\n\n    // stop selection hide timer\n    if (this.hideTimeout)\n    {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout=0;\n    }\n    return false; // to avoid \"image drag\" default event\n  }\n\n  this.OnSearchSelectHide = function()\n  {\n    this.hideTimeout = setTimeout(this.name +\".CloseSelectionWindow()\",\n                                  this.closeSelectionTimeout);\n  }\n\n  // Called when the content of the search field is changed.\n  this.OnSearchFieldChange = function(evt)\n  {\n    if (this.keyTimeout) // kill running timer\n    {\n      clearTimeout(this.keyTimeout);\n      this.keyTimeout = 0;\n    }\n\n    var e  = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 || e.keyCode==13)\n    {\n      if (e.shiftKey==1)\n      {\n        this.OnSearchSelectShow();\n        var win=this.DOMSearchSelectWindow();\n        for (i=0;i<win.childNodes.length;i++)\n        {\n          var child = win.childNodes[i]; // get span within a\n          if (child.className=='SelectItem')\n          {\n            child.focus();\n            return;\n          }\n        }\n        return;\n      }\n      else if (window.frames.MSearchResults.searchResults)\n      {\n        var elem = window.frames.MSearchResults.searchResults.NavNext(0);\n        if (elem) elem.focus();\n      }\n    }\n    else if (e.keyCode==27) // Escape out of the search field\n    {\n      this.DOMSearchField().blur();\n      this.DOMPopupSearchResultsWindow().style.display = 'none';\n      this.DOMSearchClose().style.display = 'none';\n      this.lastSearchValue = '';\n      this.Activate(false);\n      return;\n    }\n\n    // strip whitespaces\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n\n    if (searchValue != this.lastSearchValue) // search value has changed\n    {\n      if (searchValue != \"\") // non-empty search\n      {\n        // set timer for search update\n        this.keyTimeout = setTimeout(this.name + '.Search()',\n                                     this.keyTimeoutLength);\n      }\n      else // empty search field\n      {\n        this.DOMPopupSearchResultsWindow().style.display = 'none';\n        this.DOMSearchClose().style.display = 'none';\n        this.lastSearchValue = '';\n      }\n    }\n  }\n\n  this.SelectItemCount = function(id)\n  {\n    var count=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        count++;\n      }\n    }\n    return count;\n  }\n\n  this.SelectItemSet = function(id)\n  {\n    var i,j=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        var node = child.firstChild;\n        if (j==id)\n        {\n          node.innerHTML='&#8226;';\n        }\n        else\n        {\n          node.innerHTML='&#160;';\n        }\n        j++;\n      }\n    }\n  }\n\n  // Called when an search filter selection is made.\n  // set item with index id as the active item\n  this.OnSelectItem = function(id)\n  {\n    this.searchIndex = id;\n    this.SelectItemSet(id);\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n    if (searchValue!=\"\" && this.searchActive) // something was found -> do a search\n    {\n      this.Search();\n    }\n  }\n\n  this.OnSearchSelectKey = function(evt)\n  {\n    var e = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down\n    {\n      this.searchIndex++;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==38 && this.searchIndex>0) // Up\n    {\n      this.searchIndex--;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==13 || e.keyCode==27)\n    {\n      this.OnSelectItem(this.searchIndex);\n      this.CloseSelectionWindow();\n      this.DOMSearchField().focus();\n    }\n    return false;\n  }\n\n  // --------- Actions\n\n  // Closes the results window.\n  this.CloseResultsWindow = function()\n  {\n    this.DOMPopupSearchResultsWindow().style.display = 'none';\n    this.DOMSearchClose().style.display = 'none';\n    this.Activate(false);\n  }\n\n  this.CloseSelectionWindow = function()\n  {\n    this.DOMSearchSelectWindow().style.display = 'none';\n  }\n\n  // Performs a search.\n  this.Search = function()\n  {\n    this.keyTimeout = 0;\n\n    // strip leading whitespace\n    var searchValue = this.DOMSearchField().value.replace(/^ +/, \"\");\n\n    var code = searchValue.toLowerCase().charCodeAt(0);\n    var idxChar = searchValue.substr(0, 1).toLowerCase();\n    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair\n    {\n      idxChar = searchValue.substr(0, 2);\n    }\n\n    var resultsPage;\n    var resultsPageWithSearch;\n    var hasResultsPage;\n\n    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);\n    if (idx!=-1)\n    {\n       var hexCode=idx.toString(16);\n       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';\n       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);\n       hasResultsPage = true;\n    }\n    else // nothing available for this search term\n    {\n       resultsPage = this.resultsPath + '/nomatches.html';\n       resultsPageWithSearch = resultsPage;\n       hasResultsPage = false;\n    }\n\n    window.frames.MSearchResults.location = resultsPageWithSearch;\n    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();\n\n    if (domPopupSearchResultsWindow.style.display!='block')\n    {\n       var domSearchBox = this.DOMSearchBox();\n       this.DOMSearchClose().style.display = 'inline';\n       if (this.insideFrame)\n       {\n         var domPopupSearchResults = this.DOMPopupSearchResults();\n         domPopupSearchResultsWindow.style.position = 'relative';\n         domPopupSearchResultsWindow.style.display  = 'block';\n         var width = document.body.clientWidth - 8; // the -8 is for IE :-(\n         domPopupSearchResultsWindow.style.width    = width + 'px';\n         domPopupSearchResults.style.width          = width + 'px';\n       }\n       else\n       {\n         var domPopupSearchResults = this.DOMPopupSearchResults();\n         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;\n         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;\n         domPopupSearchResultsWindow.style.display = 'block';\n         left -= domPopupSearchResults.offsetWidth;\n         domPopupSearchResultsWindow.style.top     = top  + 'px';\n         domPopupSearchResultsWindow.style.left    = left + 'px';\n       }\n    }\n\n    this.lastSearchValue = searchValue;\n    this.lastResultsPage = resultsPage;\n  }\n\n  // -------- Activation Functions\n\n  // Activates or deactivates the search panel, resetting things to\n  // their default values if necessary.\n  this.Activate = function(isActive)\n  {\n    if (isActive || // open it\n        this.DOMPopupSearchResultsWindow().style.display == 'block'\n       )\n    {\n      this.DOMSearchBox().className = 'MSearchBoxActive';\n\n      var searchField = this.DOMSearchField();\n\n      if (searchField.value == this.searchLabel) // clear \"Search\" term upon entry\n      {\n        searchField.value = '';\n        this.searchActive = true;\n      }\n    }\n    else if (!isActive) // directly remove the panel\n    {\n      this.DOMSearchBox().className = 'MSearchBoxInactive';\n      this.DOMSearchField().value   = this.searchLabel;\n      this.searchActive             = false;\n      this.lastSearchValue          = ''\n      this.lastResultsPage          = '';\n    }\n  }\n}\n\n// -----------------------------------------------------------------------\n\n// The class that handles everything on the search results page.\nfunction SearchResults(name)\n{\n    // The number of matches from the last run of <Search()>.\n    this.lastMatchCount = 0;\n    this.lastKey = 0;\n    this.repeatOn = false;\n\n    // Toggles the visibility of the passed element ID.\n    this.FindChildElement = function(id)\n    {\n      var parentElement = document.getElementById(id);\n      var element = parentElement.firstChild;\n\n      while (element && element!=parentElement)\n      {\n        if (element.nodeName == 'DIV' && element.className == 'SRChildren')\n        {\n          return element;\n        }\n\n        if (element.nodeName == 'DIV' && element.hasChildNodes())\n        {\n           element = element.firstChild;\n        }\n        else if (element.nextSibling)\n        {\n           element = element.nextSibling;\n        }\n        else\n        {\n          do\n          {\n            element = element.parentNode;\n          }\n          while (element && element!=parentElement && !element.nextSibling);\n\n          if (element && element!=parentElement)\n          {\n            element = element.nextSibling;\n          }\n        }\n      }\n    }\n\n    this.Toggle = function(id)\n    {\n      var element = this.FindChildElement(id);\n      if (element)\n      {\n        if (element.style.display == 'block')\n        {\n          element.style.display = 'none';\n        }\n        else\n        {\n          element.style.display = 'block';\n        }\n      }\n    }\n\n    // Searches for the passed string.  If there is no parameter,\n    // it takes it from the URL query.\n    //\n    // Always returns true, since other documents may try to call it\n    // and that may or may not be possible.\n    this.Search = function(search)\n    {\n      if (!search) // get search word from URL\n      {\n        search = window.location.search;\n        search = search.substring(1);  // Remove the leading '?'\n        search = unescape(search);\n      }\n\n      search = search.replace(/^ +/, \"\"); // strip leading spaces\n      search = search.replace(/ +$/, \"\"); // strip trailing spaces\n      search = search.toLowerCase();\n      search = convertToId(search);\n\n      var resultRows = document.getElementsByTagName(\"div\");\n      var matches = 0;\n\n      var i = 0;\n      while (i < resultRows.length)\n      {\n        var row = resultRows.item(i);\n        if (row.className == \"SRResult\")\n        {\n          var rowMatchName = row.id.toLowerCase();\n          rowMatchName = rowMatchName.replace(/^sr\\d*_/, ''); // strip 'sr123_'\n\n          if (search.length<=rowMatchName.length &&\n             rowMatchName.substr(0, search.length)==search)\n          {\n            row.style.display = 'block';\n            matches++;\n          }\n          else\n          {\n            row.style.display = 'none';\n          }\n        }\n        i++;\n      }\n      document.getElementById(\"Searching\").style.display='none';\n      if (matches == 0) // no results\n      {\n        document.getElementById(\"NoMatches\").style.display='block';\n      }\n      else // at least one result\n      {\n        document.getElementById(\"NoMatches\").style.display='none';\n      }\n      this.lastMatchCount = matches;\n      return true;\n    }\n\n    // return the first item with index index or higher that is visible\n    this.NavNext = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index++;\n      }\n      return focusItem;\n    }\n\n    this.NavPrev = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index--;\n      }\n      return focusItem;\n    }\n\n    this.ProcessKeys = function(e)\n    {\n      if (e.type == \"keydown\")\n      {\n        this.repeatOn = false;\n        this.lastKey = e.keyCode;\n      }\n      else if (e.type == \"keypress\")\n      {\n        if (!this.repeatOn)\n        {\n          if (this.lastKey) this.repeatOn = true;\n          return false; // ignore first keypress after keydown\n        }\n      }\n      else if (e.type == \"keyup\")\n      {\n        this.lastKey = 0;\n        this.repeatOn = false;\n      }\n      return this.lastKey!=0;\n    }\n\n    this.Nav = function(evt,itemIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        var newIndex = itemIndex-1;\n        var focusItem = this.NavPrev(newIndex);\n        if (focusItem)\n        {\n          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);\n          if (child && child.style.display == 'block') // children visible\n          {\n            var n=0;\n            var tmpElem;\n            while (1) // search for last child\n            {\n              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);\n              if (tmpElem)\n              {\n                focusItem = tmpElem;\n              }\n              else // found it!\n              {\n                break;\n              }\n              n++;\n            }\n          }\n        }\n        if (focusItem)\n        {\n          focusItem.focus();\n        }\n        else // return focus to search field\n        {\n           parent.document.getElementById(\"MSearchField\").focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = itemIndex+1;\n        var focusItem;\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem && elem.style.display == 'block') // children visible\n        {\n          focusItem = document.getElementById('Item'+itemIndex+'_c0');\n        }\n        if (!focusItem) focusItem = this.NavNext(newIndex);\n        if (focusItem)  focusItem.focus();\n      }\n      else if (this.lastKey==39) // Right\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'block';\n      }\n      else if (this.lastKey==37) // Left\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'none';\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n\n    this.NavChild = function(evt,itemIndex,childIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        if (childIndex>0)\n        {\n          var newIndex = childIndex-1;\n          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();\n        }\n        else // already at first child, jump to parent\n        {\n          document.getElementById('Item'+itemIndex).focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = childIndex+1;\n        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);\n        if (!elem) // last child, jump to parent next parent\n        {\n          elem = this.NavNext(itemIndex+1);\n        }\n        if (elem)\n        {\n          elem.focus();\n        }\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n}\n\nfunction setKeyActions(elem,action)\n{\n  elem.setAttribute('onkeydown',action);\n  elem.setAttribute('onkeypress',action);\n  elem.setAttribute('onkeyup',action);\n}\n\nfunction setClassAttr(elem,attr)\n{\n  elem.setAttribute('class',attr);\n  elem.setAttribute('className',attr);\n}\n\nfunction createResults()\n{\n  var results = document.getElementById(\"SRResults\");\n  for (var e=0; e<searchData.length; e++)\n  {\n    var id = searchData[e][0];\n    var srResult = document.createElement('div');\n    srResult.setAttribute('id','SR_'+id);\n    setClassAttr(srResult,'SRResult');\n    var srEntry = document.createElement('div');\n    setClassAttr(srEntry,'SREntry');\n    var srLink = document.createElement('a');\n    srLink.setAttribute('id','Item'+e);\n    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');\n    setClassAttr(srLink,'SRSymbol');\n    srLink.innerHTML = searchData[e][1][0];\n    srEntry.appendChild(srLink);\n    if (searchData[e][1].length==2) // single result\n    {\n      srLink.setAttribute('href',searchData[e][1][1][0]);\n      if (searchData[e][1][1][1])\n      {\n       srLink.setAttribute('target','_parent');\n      }\n      var srScope = document.createElement('span');\n      setClassAttr(srScope,'SRScope');\n      srScope.innerHTML = searchData[e][1][1][2];\n      srEntry.appendChild(srScope);\n    }\n    else // multiple results\n    {\n      srLink.setAttribute('href','javascript:searchResults.Toggle(\"SR_'+id+'\")');\n      var srChildren = document.createElement('div');\n      setClassAttr(srChildren,'SRChildren');\n      for (var c=0; c<searchData[e][1].length-1; c++)\n      {\n        var srChild = document.createElement('a');\n        srChild.setAttribute('id','Item'+e+'_c'+c);\n        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');\n        setClassAttr(srChild,'SRScope');\n        srChild.setAttribute('href',searchData[e][1][c+1][0]);\n        if (searchData[e][1][c+1][1])\n        {\n         srChild.setAttribute('target','_parent');\n        }\n        srChild.innerHTML = searchData[e][1][c+1][2];\n        srChildren.appendChild(srChild);\n      }\n      srEntry.appendChild(srChildren);\n    }\n    srResult.appendChild(srEntry);\n    results.appendChild(srResult);\n  }\n}\n\nfunction init_search()\n{\n  var results = document.getElementById(\"MSearchSelectWindow\");\n  for (var key in indexSectionLabels)\n  {\n    var link = document.createElement('a');\n    link.setAttribute('class','SelectItem');\n    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');\n    link.href='javascript:void(0)';\n    link.innerHTML='<span class=\"SelectionMark\">&#160;</span>'+indexSectionLabels[key];\n    results.appendChild(link);\n  }\n  searchBox.OnSelectItem(0);\n}\n\n"
  },
  {
    "path": "docs/search/searchdata.js",
    "content": "var indexSectionsWithContent =\n{\n  0: \"_abcdefghijklmnopqrstuvwxyz~\",\n  1: \"_abcdefghijklmnoprstuvwz\",\n  2: \"s\",\n  3: \"_abcdefghijlmnopqrstuv~\",\n  4: \"abcdefghijklmnopqrstuvwxy\",\n  5: \"diks\",\n  6: \"kpu\",\n  7: \"o\",\n  8: \"dertv\"\n};\n\nvar indexSectionNames =\n{\n  0: \"all\",\n  1: \"classes\",\n  2: \"namespaces\",\n  3: \"functions\",\n  4: \"variables\",\n  5: \"enums\",\n  6: \"enumvalues\",\n  7: \"related\",\n  8: \"pages\"\n};\n\nvar indexSectionLabels =\n{\n  0: \"All\",\n  1: \"Classes\",\n  2: \"Namespaces\",\n  3: \"Functions\",\n  4: \"Variables\",\n  5: \"Enumerations\",\n  6: \"Enumerator\",\n  7: \"Friends\",\n  8: \"Pages\"\n};\n\n"
  },
  {
    "path": "docs/search/variables_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_0.js",
    "content": "var searchData=\n[\n  ['a_5fcur_5fref_5f',['A_cur_ref_',['../classsvo_1_1Matcher.html#a516300236f619e5bb5692877d326ce9b',1,'svo::Matcher']]],\n  ['acc_5fbias',['acc_bias',['../classsvo_1_1ImuInitialization.html#a99b90c57780695f4af1913da5ad69c9a',1,'svo::ImuInitialization']]],\n  ['acc_5fbias_5f',['acc_bias_',['../classsvo_1_1ImuHandler.html#a22b7c9121510c07cfabd4bf564d6d1a2',1,'svo::ImuHandler::acc_bias_()'],['../classsvo_1_1ViNodeState.html#a95b661260623cfd6e59da5faceff6d64',1,'svo::ViNodeState::acc_bias_()']]],\n  ['acc_5fbias_5frandom_5fwalk_5fsigma',['acc_bias_random_walk_sigma',['../classsvo_1_1ImuCalibration.html#add2bac8746391be19ba67d32c6e8e372',1,'svo::ImuCalibration']]],\n  ['acc_5fbias_5fsigma',['acc_bias_sigma',['../classsvo_1_1ImuInitialization.html#a3f1c945afdd24248da77aa3dbea12698',1,'svo::ImuInitialization']]],\n  ['acc_5fframe_5ftimings_5f',['acc_frame_timings_',['../classsvo_1_1FrameHandlerBase.html#ad4dfcc808f58f96c2ffbc6f25ebaa39e',1,'svo::FrameHandlerBase']]],\n  ['acc_5fnoise_5fdensity',['acc_noise_density',['../classsvo_1_1ImuCalibration.html#a979ab349721bf3ab17ba4f40089dea23',1,'svo::ImuCalibration']]],\n  ['acc_5fnum_5fobs_5f',['acc_num_obs_',['../classsvo_1_1FrameHandlerBase.html#a39961b8ed6a52d37cd5e12e7a506dac1',1,'svo::FrameHandlerBase']]],\n  ['adaptive_5fthreshold_5fc_5f',['adaptive_threshold_c_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#af60735b8c6cde0dcdeb5e083807479cc',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['adaptive_5fthreshold_5fkernel_5fsize_5f',['adaptive_threshold_kernel_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a40b8f1fcd91c8f9917660cdd22297475',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['affine_5fest_5foffset',['affine_est_offset',['../structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d',1,'svo::ReprojectorOptions::affine_est_offset()'],['../structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78',1,'svo::DepthFilterOptions::affine_est_offset()']]],\n  ['align_5f1d',['align_1d',['../structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71',1,'svo::Matcher::Options']]],\n  ['align_5fmax_5fiter',['align_max_iter',['../structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e',1,'svo::Matcher::Options']]],\n  ['alpha',['alpha',['../structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf',1,'svo::SparseImgAlignState']]],\n  ['angle',['angle',['../structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2',1,'svo::Corner']]],\n  ['auto_5ftrigger_5f',['auto_trigger_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9c537264ea3455e4924ef8a3a5833d21',1,'depth_from_defocus::DepthFromDefocusNode']]]\n];\n"
  },
  {
    "path": "docs/search/variables_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_1.js",
    "content": "var searchData=\n[\n  ['batch_5fsize_5f',['batch_size_',['../classLKSE3.html#a7349f324c27c5b02700a513c9524da79',1,'LKSE3']]],\n  ['batches_5f',['batches_',['../classLKSE3.html#a2101771947c5a50deca73658a43b567c',1,'LKSE3']]],\n  ['beta',['beta',['../structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81',1,'svo::SparseImgAlignState']]],\n  ['bootstrap_5fframe_5fid_5f',['bootstrap_frame_id_',['../classdvs__bootstrapping_1_1Bootstrapper.html#ad0d0db5b5ce5de0f444dfd3279da55d9',1,'dvs_bootstrapping::Bootstrapper::bootstrap_frame_id_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4c4fa8b85060c7bad51a26e77d7cb532',1,'depth_from_defocus::DepthFromDefocusNode::bootstrap_frame_id_()']]],\n  ['border',['border',['../structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391',1,'svo::DetectorOptions']]],\n  ['buffer_5f',['buffer_',['../classsvo_1_1CsvDatasetReader.html#aa7c59c03c6a85f330423ebd32dac799f',1,'svo::CsvDatasetReader']]]\n];\n"
  },
  {
    "path": "docs/search/variables_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_10.js",
    "content": "var searchData=\n[\n  ['quality_5fmax_5ffts_5fdrop',['quality_max_fts_drop',['../structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6',1,'svo::BaseOptions']]],\n  ['quality_5fmin_5ffts',['quality_min_fts',['../structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0',1,'svo::BaseOptions']]]\n];\n"
  },
  {
    "path": "docs/search/variables_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_11.js",
    "content": "var searchData=\n[\n  ['r',['R',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['r_5fcur_5fworld_5f',['R_cur_world_',['../classsvo_1_1AbstractInitialization.html#a6a50df992c918076ae1ff5e7cb645838',1,'svo::AbstractInitialization']]],\n  ['r_5fimu_5fworld_5f',['R_imu_world_',['../classsvo_1_1Frame.html#a1d17861d1073e693a369b5c7656e1d36',1,'svo::Frame']]],\n  ['radius_5fsearch_5f',['radius_search_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#af1033e661af53d8d1f162830f13ef0db',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['rect_5f',['rect_',['../classLKSE3.html#a43337685ca3bdc7b78d5ea8a43a435f5',1,'LKSE3']]],\n  ['rectification_5fmap_5f',['rectification_map_',['../classMosaic.html#a93390709e5b74021d5a4edd36d3d6efd',1,'Mosaic']]],\n  ['ref_5fframe',['ref_frame',['../structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a',1,'svo::Reprojector::Candidate']]],\n  ['ref_5fframes_5f',['ref_frames_',['../classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8',1,'svo::SparseImgAlignBase']]],\n  ['ref_5fimg_5f',['ref_img_',['../classLKSE3.html#a8894f0d922f307d4ab06f7c772d098d6',1,'LKSE3']]],\n  ['ref_5findex',['ref_index',['../structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5',1,'svo::Reprojector::Candidate']]],\n  ['ref_5fvoxel_5fgrid_5f',['ref_voxel_grid_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a6d0ad9955f82c132884ac72ec2265002',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['regular_5fframe_5fid_5f',['regular_frame_id_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9b632eb6d82e259230d3cb2bda830539',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['relocalization_5fmax_5ftrials',['relocalization_max_trials',['../structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe',1,'svo::BaseOptions']]],\n  ['relocalization_5fn_5ftrials_5f',['relocalization_n_trials_',['../classsvo_1_1FrameHandlerBase.html#aaa0a849e73db01c049e253906bc0518f',1,'svo::FrameHandlerBase']]],\n  ['remote_5fkey_5f',['remote_key_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a39e537b8e2385d06156df91dc1f2e190',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['remote_5fkey_5fpub_5f',['remote_key_pub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a617aa089e6e345edacaee8b9b8266490',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['remote_5fsub_5f',['remote_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a43e4d4fde4163801103a9cce9dd6c3b4',1,'dvs_bootstrapping::Bootstrapper::remote_sub_()'],['../classTracker.html#ade9360c0b7392539943229150027677a',1,'Tracker::remote_sub_()']]],\n  ['remove_5funconstrained_5fpoints',['remove_unconstrained_points',['../structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8',1,'svo::ReprojectorOptions']]],\n  ['reproj_5ferror_5fthresh',['reproj_error_thresh',['../structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56',1,'svo::InitializationOptions']]],\n  ['reproject_5funconverged_5fseeds',['reproject_unconverged_seeds',['../structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3',1,'svo::ReprojectorOptions']]],\n  ['reset_5fbefore_5fdetection',['reset_before_detection',['../structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe',1,'svo::FeatureTrackerOptions']]],\n  ['rho_5f',['rho_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa42970c6659ffbd5483c9c041642f9f2',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/variables_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_12.js",
    "content": "var searchData=\n[\n  ['sampling_5flevel',['sampling_level',['../structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e',1,'svo::DetectorOptions']]],\n  ['saturation_5faccel_5fmax',['saturation_accel_max',['../classsvo_1_1ImuCalibration.html#a32d0696e3ee54f6c8be8f4cb742d9ca4',1,'svo::ImuCalibration']]],\n  ['saturation_5fomega_5fmax',['saturation_omega_max',['../classsvo_1_1ImuCalibration.html#a1d86f9ebf7a9eded44a226b9310297ac',1,'svo::ImuCalibration']]],\n  ['scan_5fepi_5funit_5fsphere',['scan_epi_unit_sphere',['../structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9',1,'svo::DepthFilterOptions']]],\n  ['score',['score',['../structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef',1,'svo::Reprojector::Candidate::score()'],['../structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e',1,'svo::Corner::score()']]],\n  ['score_5fvec_5f',['score_vec_',['../classsvo_1_1Frame.html#ac2788e7b975245189b3058718748facb',1,'svo::Frame']]],\n  ['seed_5fconvergence_5fsigma2_5fthresh',['seed_convergence_sigma2_thresh',['../structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c',1,'svo::DepthFilterOptions']]],\n  ['seed_5fref_5fvec_5f',['seed_ref_vec_',['../classsvo_1_1Frame.html#a78fb662e02b5d690d0ec5aff180c3b95',1,'svo::Frame']]],\n  ['sensor_5fsize',['sensor_size',['../classmotion__correction_1_1WarpUpdateParams.html#a526331c824445d1998abceb0e9e0d1f1',1,'motion_correction::WarpUpdateParams']]],\n  ['set_5freset_5f',['set_reset_',['../classsvo_1_1FrameHandlerBase.html#a4d5da447318a37a2569f360a799bc795',1,'svo::FrameHandlerBase']]],\n  ['set_5fstart_5f',['set_start_',['../classsvo_1_1FrameHandlerBase.html#a8feb15626100f7ef0adccd1d412596ad',1,'svo::FrameHandlerBase']]],\n  ['stage_5f',['stage_',['../classsvo_1_1FrameHandlerBase.html#a892e230faa0a3073ed05b363968ebe98',1,'svo::FrameHandlerBase']]],\n  ['state_5f',['state_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a0dd83f7db94b2615d40a03892dcdcbe0',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['status_5f',['status_',['../structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706',1,'vk::cameras::ProjectionResult']]],\n  ['stop_5f',['stop_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a858e23e3a958664ddddab82ccfb449e2',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['stop_5fwhen_5ferror_5fincreases',['stop_when_error_increases',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['strategy',['strategy',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['structure_5foptimization_5fmax_5fpts',['structure_optimization_max_pts',['../structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225',1,'svo::BaseOptions']]],\n  ['subpix_5frefinement',['subpix_refinement',['../structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb',1,'svo::Matcher::Options']]]\n];\n"
  },
  {
    "path": "docs/search/variables_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_13.js",
    "content": "var searchData=\n[\n  ['t',['t',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['t_5fbody_5fcam_5f',['T_body_cam_',['../classsvo_1_1Frame.html#a7f0bd5479004f541142a4197d73f1ef1',1,'svo::Frame']]],\n  ['t_5fc_5fb_5f',['T_C_B_',['../classvk_1_1cameras_1_1NCamera.html#ad40fbb66998063aebdfaf64a705c86df',1,'vk::cameras::NCamera']]],\n  ['t_5fcur_5ffrom_5fref_5f',['T_cur_from_ref_',['../classsvo_1_1AbstractInitialization.html#aa22cfe13c5fecb2143a98267014b4166',1,'svo::AbstractInitialization']]],\n  ['t_5fcur_5fref_5f',['T_cur_ref_',['../classLKSE3.html#ad746e006ac2fc8211c0fdf47fe87c605',1,'LKSE3']]],\n  ['t_5ff_5fw_5f',['T_f_w_',['../classsvo_1_1Frame.html#a749fa7087396f987838c81697c97ae33',1,'svo::Frame']]],\n  ['t_5ficur_5firef',['T_icur_iref',['../structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5',1,'svo::SparseImgAlignState']]],\n  ['t_5firef_5fworld_5f',['T_iref_world_',['../classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5',1,'svo::SparseImgAlignBase']]],\n  ['t_5fkf_5fref_5f',['T_kf_ref_',['../classLKSE3.html#ae940ac6eeeb100e9698d7a0a528e2986',1,'LKSE3']]],\n  ['t_5flastimu_5fnewimu_5f',['t_lastimu_newimu_',['../classsvo_1_1FrameHandlerBase.html#ac7963fe5b1a195cb1fa89a494a1ac632',1,'svo::FrameHandlerBase']]],\n  ['t_5fref_5fcam_5f',['T_ref_cam_',['../classLKSE3.html#a786c18da0f4b081cd32e37f433048a79',1,'LKSE3']]],\n  ['t_5fref_5fcur_5f',['t_ref_cur_',['../classsvo_1_1AbstractInitialization.html#a7d2735111e496273cab33e274b0eec33',1,'svo::AbstractInitialization']]],\n  ['t_5fref_5fw_5f',['T_ref_w_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a313454c2e14b5d530145cdea7cb353d8',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['t_5fw_5fb_5f',['T_W_B_',['../classsvo_1_1ViNodeState.html#a76790f1d53f5d1eaee0b8621736df380',1,'svo::ViNodeState']]],\n  ['t_5fworld_5fimuinit',['T_world_imuinit',['../classsvo_1_1FrameHandlerBase.html#a735f6fdf6ea066ed4a23370da868474e',1,'svo::FrameHandlerBase']]],\n  ['t_5fworld_5fkf_5f',['T_world_kf_',['../classLKSE3.html#aa2c888001a622a25fa07e41f3a2a25f1',1,'LKSE3']]],\n  ['tf_5f',['tf_',['../classDvsReconstruction.html#a7f6d5f839a1c2b12a54a08a4b5a1ba5a',1,'DvsReconstruction']]],\n  ['tf_5fsub_5f',['tf_sub_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aefbd42bbebb0de0bbd7282ce67afc0c6',1,'depth_from_defocus::DepthFromDefocusNode::tf_sub_()'],['../classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee',1,'Tracker::tf_sub_()']]],\n  ['threshold_5fprimary',['threshold_primary',['../structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b',1,'svo::DetectorOptions']]],\n  ['threshold_5fsecondary',['threshold_secondary',['../structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89',1,'svo::DetectorOptions']]],\n  ['timer_5f',['timer_',['../classsvo_1_1FrameHandlerBase.html#a60b9699bf6c7dd0e13c48f54b859a3d0',1,'svo::FrameHandlerBase']]],\n  ['timestamp_5f',['timestamp_',['../structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53',1,'svo::ImuMeasurement']]],\n  ['trace_5fdir',['trace_dir',['../structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857',1,'svo::BaseOptions']]],\n  ['track_5fid_5fvec_5f',['track_id_vec_',['../classsvo_1_1Frame.html#aa9f027e13363d1bc6a96f90f58840bf8',1,'svo::Frame']]],\n  ['tracker_5f',['tracker_',['../classsvo_1_1AbstractInitialization.html#ae2e24cfe6f93e061880908e8056fa91d',1,'svo::AbstractInitialization']]],\n  ['tracking_5fquality_5f',['tracking_quality_',['../classsvo_1_1FrameHandlerBase.html#a731f97f7daa1b810d4f0c39f45c4804e',1,'svo::FrameHandlerBase']]],\n  ['trials_5f',['trials_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#af0e85febfe2a215ceb37e0245d35965b',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['ts_5f',['ts_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a425dc08fd4e0100eba904dd3a7503d4a',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['ts_5fref_5f',['ts_ref_',['../classMosaic.html#a20353ba89de5fae20b608b04ca01b49f',1,'Mosaic']]],\n  ['type',['type',['../structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1',1,'svo::Reprojector::Candidate::type()'],['../structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b',1,'svo::FeatureWrapper::type()']]],\n  ['type_5f',['type_',['../classsvo_1_1Point.html#af55a54c3d8d4f47c38b7c58ac8a99e0a',1,'svo::Point']]],\n  ['type_5ffocus_5fmeasure_5f',['type_focus_measure_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a9fc0bac204374e6d8f001bccc91f42f9',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['type_5fvec_5f',['type_vec_',['../classsvo_1_1Frame.html#a71f690854f4a63c9b1496e3945d6156c',1,'svo::Frame']]]\n];\n"
  },
  {
    "path": "docs/search/variables_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_14.js",
    "content": "var searchData=\n[\n  ['undistort_5fmapx_5f',['undistort_mapx_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a685a6a728974af53157f9373aa463838',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['undistort_5fmapy_5f',['undistort_mapy_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a709741806ccfc7d9a4157b6547ba81b7',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['update_5f3d_5fpoint',['update_3d_point',['../structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d',1,'svo::DepthFilterOptions']]],\n  ['update_5fseeds_5fwith_5fold_5fkeyframes',['update_seeds_with_old_keyframes',['../structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9',1,'svo::BaseOptions']]],\n  ['use_5fasync_5freprojectors',['use_async_reprojectors',['../structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5',1,'svo::BaseOptions']]],\n  ['use_5fimu',['use_imu',['../structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c',1,'svo::BaseOptions']]],\n  ['use_5finverse_5fdepth',['use_inverse_depth',['../structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4',1,'svo::DepthFilterOptions']]],\n  ['use_5fthreaded_5fdepthfilter',['use_threaded_depthfilter',['../structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee',1,'svo::DepthFilterOptions']]]\n];\n"
  },
  {
    "path": "docs/search/variables_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_15.js",
    "content": "var searchData=\n[\n  ['velocity',['velocity',['../classsvo_1_1ImuInitialization.html#a48631e0716dca6dc9f5aa7cc3718861e',1,'svo::ImuInitialization']]],\n  ['velocity_5fsigma',['velocity_sigma',['../classsvo_1_1ImuInitialization.html#ab2c6b127deadd3252b766f127716025e',1,'svo::ImuInitialization']]],\n  ['verbose',['verbose',['../structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4',1,'svo::DepthFilterOptions::verbose()'],['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6',1,'vk::solver::MiniLeastSquaresSolverOptions::verbose()']]],\n  ['virtual_5fcam_5f',['virtual_cam_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a68691a0697108ba82a6cd0a674d84ae3',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['virtual_5fheight_5f',['virtual_height_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae7870dbb15d8db5b442bc8ae80333c62',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['virtual_5fwidth_5f',['virtual_width_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a22cd4237f65478939011561af75e326c',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['voxel_5ffilter_5fleaf_5fsize_5f',['voxel_filter_leaf_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#acff32750da61643c9d76f3de42afcc56',1,'depth_from_defocus::DepthFromDefocusNode']]]\n];\n"
  },
  {
    "path": "docs/search/variables_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_16.js",
    "content": "var searchData=\n[\n  ['w_5f',['w_',['../classMosaic.html#a003358a147ccb575966016de5cde0bf3',1,'Mosaic']]],\n  ['w_5fv_5fb_5f',['W_v_B_',['../classsvo_1_1ViNodeState.html#a7ab8dff69a84a9131f8d9709573084d3',1,'svo::ViNodeState']]],\n  ['w_5fvirt_5f',['w_virt_',['../classMosaic.html#a9e4ad268d0e54b8c4db76a7ffffdd235',1,'Mosaic']]],\n  ['warp_5fmode',['warp_mode',['../classmotion__correction_1_1WarpUpdateParams.html#a84a8ddbd114e714571e57c5d93fa2091',1,'motion_correction::WarpUpdateParams']]],\n  ['weight_5fscale_5frot_5f',['weight_scale_rot_',['../classLKSE3.html#a55eb23c7330e6ed6d7168cbee0ae35e6',1,'LKSE3']]],\n  ['weight_5fscale_5ftrans_5f',['weight_scale_trans_',['../classLKSE3.html#a06c0f5147576ee71f79185e57dd949b0',1,'LKSE3']]],\n  ['width_5f',['width_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a15cf181171b6e147d51fb3d34b1459c3',1,'dvs_bootstrapping::EventsFramesBootstrapper::width_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a726d1f1162353f1caecdebf2278a015d',1,'depth_from_defocus::DepthFromDefocusNode::width_()'],['../classLKSE3.html#adffc20c113bb95265b91bb3fe60a30e9',1,'LKSE3::width_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#ae1bb4d8bb3766b11b728e2cb2193df6f',1,'evo_utils::camera::PinholeCamera::width_()']]],\n  ['window_5fsize_5f',['window_size_',['../classMosaic.html#a8a95091b2b681537c0953833908da6de',1,'Mosaic']]],\n  ['world_5fframe_5fid_5f',['world_frame_id_',['../classdvs__bootstrapping_1_1Bootstrapper.html#ab4a986f20504628105d325b21e34a7b3',1,'dvs_bootstrapping::Bootstrapper::world_frame_id_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#aae99eca2579b25fc757930b5540adc54',1,'depth_from_defocus::DepthFromDefocusNode::world_frame_id_()'],['../classMosaic.html#a372b4117e8e80a22de2a8f3100dfe002',1,'Mosaic::world_frame_id_()'],['../classDvsReconstruction.html#a4f09fa7ba3df24aded795f58b3c51802',1,'DvsReconstruction::world_frame_id_()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_17.js",
    "content": "var searchData=\n[\n  ['x',['x',['../structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750',1,'svo::Corner']]],\n  ['x_5f',['x_',['../classLKSE3.html#ae97a2513fbf49573cdd736c0b12ff31e',1,'LKSE3']]],\n  ['xyz_5fref_5fcache_5f',['xyz_ref_cache_',['../classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f',1,'svo::SparseImgAlign']]]\n];\n"
  },
  {
    "path": "docs/search/variables_18.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_18.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_18.js",
    "content": "var searchData=\n[\n  ['y',['y',['../structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec',1,'svo::Corner']]]\n];\n"
  },
  {
    "path": "docs/search/variables_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_2.js",
    "content": "var searchData=\n[\n  ['c_5f',['c_',['../classMosaic.html#a826ebc128647464ed1c24650e08f4761',1,'Mosaic::c_()'],['../classDvsReconstruction.html#a7c285468e731463a3b75126ddac05678',1,'DvsReconstruction::c_()']]],\n  ['cam_5f',['cam_',['../classsvo_1_1Frame.html#a697ab5c0ab639af5ff97e7f2bba471df',1,'svo::Frame']]],\n  ['camera_5finfo_5fsub_5f',['camera_info_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a1ef8c557470ea848c4a5ce0b495712b3',1,'dvs_bootstrapping::Bootstrapper::camera_info_sub_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a35a3692d84034741bce050cfbf1858cd',1,'depth_from_defocus::DepthFromDefocusNode::camera_info_sub_()'],['../classDvsReconstruction.html#ac95e031f3489c189a35dad55ebb1f8e3',1,'DvsReconstruction::camera_info_sub_()'],['../classTracker.html#a5a4accfc84b455232a1fe11ad7d34658',1,'Tracker::camera_info_sub_()']]],\n  ['cameras_5f',['cameras_',['../classvk_1_1cameras_1_1NCamera.html#ac820561513d67fdd3ff8833db5a28d27',1,'vk::cameras::NCamera']]],\n  ['cams_5f',['cams_',['../classsvo_1_1FrameHandlerBase.html#a3134fcde8903009914568658d64d673d',1,'svo::FrameHandlerBase']]],\n  ['cell_5fsize',['cell_size',['../structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9',1,'svo::ReprojectorOptions::cell_size()'],['../structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c',1,'svo::DetectorOptions::cell_size()']]],\n  ['chi2_5f',['chi2_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a31b8e23ebfc84111a5c62656c7637be3',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['confidence_5fmask_5f',['confidence_mask_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a3e2c40e443e860ce9cd1cd9ec0278005',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['copilot_5fsub_5f',['copilot_sub_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a67c78059b53cd51fb551418970f76572',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['cov',['cov',['../classMosaic.html#a39d705ffa05effc9b4692c181aa115cb',1,'Mosaic']]],\n  ['criteria',['criteria',['../classmotion__correction_1_1WarpUpdateParams.html#ac6581bf6b6c5889fc421acb56e15bc08',1,'motion_correction::WarpUpdateParams']]],\n  ['cu_5fimg_5fpyramid_5fcopy_5f',['cu_img_pyramid_copy_',['../classsvo_1_1FrameGpu.html#afc537469a5ad3d24e76b57a638c8304f',1,'svo::FrameGpu']]],\n  ['cur_5fev_5f',['cur_ev_',['../classDvsReconstruction.html#a824270ab2bf654fbe69ad9670861f34d',1,'DvsReconstruction']]],\n  ['cur_5fframes_5f',['cur_frames_',['../classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27',1,'svo::SparseImgAlignBase']]],\n  ['cur_5fpx',['cur_px',['../structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e',1,'svo::Reprojector::Candidate']]],\n  ['current_5fevent_5f',['current_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ad9bbd8fd1f19afcb05609eb8390ed203',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['cx_5f',['cx_',['../classLKSE3.html#a30e4bb3541cf7fbd38f3be7673d58edc',1,'LKSE3::cx_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a954f1e44784c1361d84f5a3d3e8f5040',1,'evo_utils::camera::PinholeCamera::cx_()']]],\n  ['cy_5f',['cy_',['../classLKSE3.html#a09f43d7659d6b4f7e19f9449df749b08',1,'LKSE3::cy_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a213fe206182bab3a10abf1dbc8e9364b',1,'evo_utils::camera::PinholeCamera::cy_()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_3.js",
    "content": "var searchData=\n[\n  ['data_5fmutex_5f',['data_mutex_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a43b38251f208c52f2cc4d1fc00f4f219',1,'dvs_bootstrapping::Bootstrapper::data_mutex_()'],['../classTracker.html#a2a5d3f77e102c6414c56948fbdf635df',1,'Tracker::data_mutex_()']]],\n  ['delay_5fimu_5fcam',['delay_imu_cam',['../classsvo_1_1ImuCalibration.html#aca9d15f26d109552dcefd13ac9121781',1,'svo::ImuCalibration']]],\n  ['depth_5f',['depth_',['../classsvo_1_1PatchNormal.html#a3f8819885e232809ce767f3f526498b2',1,'svo::PatchNormal']]],\n  ['depth_5fat_5fcurrent_5fframe_5f',['depth_at_current_frame_',['../classsvo_1_1AbstractInitialization.html#ab39a5d256e4335bdc07b18eccbeb846c',1,'svo::AbstractInitialization']]],\n  ['depth_5fmedian_5f',['depth_median_',['../classMosaic.html#abc2b9dbc7f6f51df7c69a9a2fc22363e',1,'Mosaic::depth_median_()'],['../classLKSE3.html#ace9861d1a3afefa09c08292a21d78021',1,'LKSE3::depth_median_()'],['../classsvo_1_1FrameHandlerBase.html#abc7b83a56b092b5b6e1a2b220ff8df20',1,'svo::FrameHandlerBase::depth_median_()']]],\n  ['depth_5fmin_5f',['depth_min_',['../classsvo_1_1FrameHandlerBase.html#ae014ba4e454ff376cb5b0ba25173e4ab',1,'svo::FrameHandlerBase']]],\n  ['depth_5fref_5f',['depth_ref_',['../classLKSE3.html#a2f36df7081b6a221775b7c36e3c456f4',1,'LKSE3']]],\n  ['depthmap',['depthmap',['../classMosaic.html#a65b2ef6acb4ed91d4a09c4dacf316e7a',1,'Mosaic']]],\n  ['depths_5fvec_5f',['depths_vec_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afddf16f4d9c8139a54eee1941743d751',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['detector_5ftype',['detector_type',['../structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20',1,'svo::DetectorOptions']]],\n  ['dvs_5fcam_5f',['dvs_cam_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a8090033f289e75e5c8848d8d607776fa',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['dx_5f',['dx_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a7dcfeb71948d1620404981525e494e32',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/variables_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_4.js",
    "content": "var searchData=\n[\n  ['enable_5fvisuals_5f',['enable_visuals_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#abc3eaa3b946e04185c10bcefb931e0f3',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['epi_5fimage_5f',['epi_image_',['../classsvo_1_1Matcher.html#a03bce17dc9e2f21c4cab3ca16a785184',1,'svo::Matcher']]],\n  ['epi_5flength_5fpyramid_5f',['epi_length_pyramid_',['../classsvo_1_1Matcher.html#a9a7f14a10723967506db9c4216885f2c',1,'svo::Matcher']]],\n  ['eps',['eps',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['event_5fsub_5f',['event_sub_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a40a55b3f3cb917d0446aead2985c7d13',1,'dvs_bootstrapping::Bootstrapper::event_sub_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ab80ebeb058562a6834726a1781c569c5',1,'depth_from_defocus::DepthFromDefocusNode::event_sub_()'],['../classDvsReconstruction.html#a92695355f8236dd77aa375b23f02da99',1,'DvsReconstruction::event_sub_()'],['../classTracker.html#a03e620f13a98ac9895069762c00cc3a0',1,'Tracker::event_sub_()']]],\n  ['eventqueue_5f',['eventQueue_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a9ee3a994f2d517ef2211aaafeb6bba24',1,'dvs_bootstrapping::Bootstrapper']]],\n  ['events_5f',['events_',['../classDvsReconstruction.html#ae48c641119ec6c22b5f9e59d73e97e78',1,'DvsReconstruction::events_()'],['../classTracker.html#ab4357f4055315cb02f22a646f73b42fb',1,'Tracker::events_()']]],\n  ['events_5ffor_5freconstruction_5f',['events_for_reconstruction_',['../classDvsReconstruction.html#afaaf3cf07a99a8f6cd87fc5286973aa3',1,'DvsReconstruction']]],\n  ['events_5fto_5frecreate_5fkf_5f',['events_to_recreate_kf_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a971d6b1bf08a82afa9f6457a3efd0252',1,'depth_from_defocus::DepthFromDefocusNode']]]\n];\n"
  },
  {
    "path": "docs/search/variables_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_5.js",
    "content": "var searchData=\n[\n  ['f',['f',['../structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6',1,'svo::FeatureWrapper']]],\n  ['f_5fvec_5f',['f_vec_',['../classsvo_1_1Frame.html#a6c26e6a2f3148d00539863eab5548bcf',1,'svo::Frame']]],\n  ['frame_5fcounter_5f',['frame_counter_',['../classsvo_1_1FrameHandlerBase.html#af74f64e83ef1c88cbcedf5f6e91ab208',1,'svo::FrameHandlerBase::frame_counter_()'],['../classsvo_1_1Frame.html#a4708038228f42fe71f25c05f1bf378c9',1,'svo::Frame::frame_counter_()']]],\n  ['frame_5fid_5f',['frame_id_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2b8f9a445431a5432f2a30c4f0bcc302',1,'depth_from_defocus::DepthFromDefocusNode::frame_id_()'],['../classMosaic.html#a6766ab54811dbf49a92706f458d8f8f5',1,'Mosaic::frame_id_()'],['../classDvsReconstruction.html#a16e383aa16075e01ebdff443d540e013',1,'DvsReconstruction::frame_id_()']]],\n  ['frame_5fref_5f',['frame_ref_',['../classsvo_1_1PatchNormal.html#a3e0d5857d012898d6cb810c97b3a9935',1,'svo::PatchNormal']]],\n  ['frame_5fsize_5f',['frame_size_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ab94f6fda052003d3d3a3c9782aa04301',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['frames_5f',['frames_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#a6cfaf0e56d549c48c06334efbd04ab49',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['frames_5fref_5f',['frames_ref_',['../classsvo_1_1AbstractInitialization.html#a43599f8bcbdd69c18149b1448f2f6c2d',1,'svo::AbstractInitialization']]],\n  ['fx_5f',['fx_',['../classLKSE3.html#a899546c1a1fde1e282ba55881ebab589',1,'LKSE3::fx_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#abe5a18db98df7a23b4d93c9f2ad93af1',1,'evo_utils::camera::PinholeCamera::fx_()']]],\n  ['fy_5f',['fy_',['../classLKSE3.html#a38f8f4fc76a8a8380554b4cc4c2fd3ca',1,'LKSE3::fy_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a5fa565a175b0b0b1af458160932a2609',1,'evo_utils::camera::PinholeCamera::fy_()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_6.js",
    "content": "var searchData=\n[\n  ['g_5f',['g_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a904b6520e51dd46c43b95fbbedbeafea',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['grad',['grad',['../classMosaic.html#abf3db73be0330023eb59bb65a012538b',1,'Mosaic::grad()'],['../structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c',1,'svo::FeatureWrapper::grad()']]],\n  ['grad_5fvec_5f',['grad_vec_',['../classsvo_1_1Frame.html#a9824ce581e2aa2d8930a0378a98f84a6',1,'svo::Frame']]],\n  ['gravity_5fmagnitude',['gravity_magnitude',['../classsvo_1_1ImuCalibration.html#a22131791196ceec4cae1cb378cff3875',1,'svo::ImuCalibration']]],\n  ['gyro_5fbias_5f',['gyro_bias_',['../classsvo_1_1ViNodeState.html#a6b4cdfc57b7a672ab0d058750b9548de',1,'svo::ViNodeState']]],\n  ['gyro_5fbias_5frandom_5fwalk_5fsigma',['gyro_bias_random_walk_sigma',['../classsvo_1_1ImuCalibration.html#aa3d8188fa92dc9cf54846285b0983545',1,'svo::ImuCalibration']]],\n  ['gyro_5fnoise_5fdensity',['gyro_noise_density',['../classsvo_1_1ImuCalibration.html#ae3fdc5a7c137367ba0d9f695b4a60498',1,'svo::ImuCalibration']]]\n];\n"
  },
  {
    "path": "docs/search/variables_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_7.js",
    "content": "var searchData=\n[\n  ['h_5f',['h_',['../classMosaic.html#ad157f94d001d23cdcfbcf220abe6255c',1,'Mosaic::h_()'],['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a3b69a83876010cb3f9a37f886aa519bf',1,'vk::solver::MiniLeastSquaresSolver::H_()']]],\n  ['h_5finv_5f',['h_inv_',['../classsvo_1_1Matcher.html#ae09df94962be792484c79ec44f76a5c3',1,'svo::Matcher']]],\n  ['h_5fvirt_5f',['h_virt_',['../classMosaic.html#ab1a8d5f03e8f6651a8854f7d34f9927b',1,'Mosaic']]],\n  ['have_5fdepth_5fprior_5f',['have_depth_prior_',['../classsvo_1_1AbstractInitialization.html#a39278ac0ece4bb6920d8e8d7286be8ac',1,'svo::AbstractInitialization']]],\n  ['have_5frotation_5fprior_5f',['have_rotation_prior_',['../classsvo_1_1AbstractInitialization.html#ab1dbe5edff29693eec75b3cb090478f0',1,'svo::AbstractInitialization']]],\n  ['have_5ftranslation_5fprior_5f',['have_translation_prior_',['../classsvo_1_1AbstractInitialization.html#aa8b3465a5b4bcdc9aa30cba80f0f8686',1,'svo::AbstractInitialization']]],\n  ['height_5f',['height_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aff0a99868ff4ca68ee8cb63d68025236',1,'dvs_bootstrapping::EventsFramesBootstrapper::height_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a1746a5424d4c6fb08c07415d00cb8561',1,'depth_from_defocus::DepthFromDefocusNode::height_()'],['../classLKSE3.html#ad9c246374fbeb8eb5f96146496a82370',1,'LKSE3::height_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#ac735d96e2a97d2fe6132979673b5002c',1,'evo_utils::camera::PinholeCamera::height_()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_8.js",
    "content": "var searchData=\n[\n  ['i_5fprior_5f',['I_prior_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a0c5c9560e3169719421d10f0062bef92',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['id_5f',['id_',['../classsvo_1_1Frame.html#a3220d0fd39e2c2b6b502ebe5e56fe3e0',1,'svo::Frame::id_()'],['../classsvo_1_1Point.html#a4dc25c9a96296984265b1a3a510b8f19',1,'svo::Point::id_()']]],\n  ['idle_5f',['idle_',['../classdvs__bootstrapping_1_1Bootstrapper.html#a656b62b448a0104a78299d1b09852803',1,'dvs_bootstrapping::Bootstrapper::idle_()'],['../classTracker.html#a58bf1175127d9fedbc07fa94a7d02937',1,'Tracker::idle_()']]],\n  ['image',['image',['../classMosaic.html#aaa65f5a9c89892cc31196b6f0271c8e4',1,'Mosaic']]],\n  ['img_5falign_5fest_5fillumination_5fgain',['img_align_est_illumination_gain',['../structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmax_5flevel',['img_align_max_level',['../structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmax_5fnum_5ffeatures',['img_align_max_num_features',['../structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5',1,'svo::BaseOptions']]],\n  ['img_5falign_5fmin_5flevel',['img_align_min_level',['../structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f',1,'svo::BaseOptions']]],\n  ['img_5falign_5fprior_5flambda_5frot',['img_align_prior_lambda_rot',['../structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57',1,'svo::BaseOptions']]],\n  ['img_5falign_5fprior_5flambda_5ftrans',['img_align_prior_lambda_trans',['../structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020',1,'svo::BaseOptions']]],\n  ['img_5falign_5frobustification',['img_align_robustification',['../structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6',1,'svo::BaseOptions']]],\n  ['img_5falign_5fuse_5fdistortion_5fjacobian',['img_align_use_distortion_jacobian',['../structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b',1,'svo::BaseOptions']]],\n  ['img_5fpyr_5f',['img_pyr_',['../classsvo_1_1Frame.html#a1147e6dd9b678161585875e4a4048987',1,'svo::Frame']]],\n  ['imu_5fintegration_5fsigma',['imu_integration_sigma',['../classsvo_1_1ImuCalibration.html#a58070c4f8e91bde3959f75fba3304030',1,'svo::ImuCalibration']]],\n  ['imu_5frate',['imu_rate',['../classsvo_1_1ImuCalibration.html#a82463fc28a3811d6937dfda915ea5d07',1,'svo::ImuCalibration']]],\n  ['imu_5ftimestamps_5fns_5f',['imu_timestamps_ns_',['../classsvo_1_1FrameBundle.html#a13b70e1a1ece794728627ad34b632721',1,'svo::FrameBundle']]],\n  ['in_5fba_5fgraph_5f',['in_ba_graph_',['../classsvo_1_1Point.html#a76c4634d066e5e67d9f3d7b7d411394b',1,'svo::Point']]],\n  ['init_5fcov_5f',['init_cov_',['../classMosaic.html#a1c0a4a5d28cefce72d2d525022235170',1,'Mosaic']]],\n  ['init_5fdisparity_5fpivot_5fratio',['init_disparity_pivot_ratio',['../structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4',1,'svo::InitializationOptions']]],\n  ['init_5fmap_5fscale',['init_map_scale',['../structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc',1,'svo::BaseOptions']]],\n  ['init_5fmin_5fdisparity',['init_min_disparity',['../structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ffeatures',['init_min_features',['../structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ffeatures_5ffactor',['init_min_features_factor',['../structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5finliers',['init_min_inliers',['../structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb',1,'svo::InitializationOptions']]],\n  ['init_5fmin_5ftracked',['init_min_tracked',['../structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2',1,'svo::InitializationOptions']]],\n  ['init_5ftype',['init_type',['../structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136',1,'svo::InitializationOptions']]],\n  ['init_5fuse_5fatt_5fand_5fdepth',['init_use_att_and_depth',['../structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4',1,'svo::BaseOptions']]],\n  ['invmu_5fsigma2_5fa_5fb_5fvec_5f',['invmu_sigma2_a_b_vec_',['../classsvo_1_1Frame.html#aa35f9b3a6e275eddc65c7f366a691301',1,'svo::Frame']]],\n  ['is_5fkeyframe_5f',['is_keyframe_',['../classsvo_1_1Frame.html#a4ae56e6cb7e35f1ec17aedb9f00ac3d0',1,'svo::Frame']]],\n  ['isam_5fwait_5ftime_5fms',['isam_wait_time_ms',['../structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f',1,'svo::BackendInterfaceOptions']]],\n  ['iter_5f',['iter_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a742ca0d12cf87a33a8d5960e194f4a47',1,'vk::solver::MiniLeastSquaresSolver']]]\n];\n"
  },
  {
    "path": "docs/search/variables_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_9.js",
    "content": "var searchData=\n[\n  ['j',['J',['../structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75',1,'LKSE3::Keypoint']]],\n  ['jacobian_5fproj_5fcache_5f',['jacobian_proj_cache_',['../classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09',1,'svo::SparseImgAlign']]],\n  ['jjt',['JJt',['../structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91',1,'LKSE3::Keypoint']]]\n];\n"
  },
  {
    "path": "docs/search/variables_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_a.js",
    "content": "var searchData=\n[\n  ['k_5f',['K_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a632c50ae671224d4fdb90d04649eed3d',1,'depth_from_defocus::DepthFromDefocusNode::K_()'],['../classMosaic.html#a178afd3f88bdf4531c6f5bce3a9c2c8b',1,'Mosaic::K_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#a132e0a2671fa231632cf738c08d2d687',1,'evo_utils::camera::PinholeCamera::K_()']]],\n  ['k_5fvirt_5f',['K_virt_',['../classMosaic.html#a10fe521b7d59fef41086247db9a3c53d',1,'Mosaic']]],\n  ['key_5fpts_5f',['key_pts_',['../classsvo_1_1Frame.html#acf53d418a1e2368f3f4010b4f81ba2c0',1,'svo::Frame']]],\n  ['keyframes_5f',['keyframes_',['../classsvo_1_1Map.html#a16dd148e1e959c12cc3353006530ed6e',1,'svo::Map']]],\n  ['keypoints_5f',['keypoints_',['../classLKSE3.html#a9622311a6ae9f81bcc2f1ea4945721a7',1,'LKSE3']]],\n  ['kf_5fvisibility_5f',['kf_visibility_',['../classLKSE3.html#a66c26aa644e59eb9505fbaa61b6a6b2d',1,'LKSE3']]],\n  ['kfselect_5fcriterion',['kfselect_criterion',['../structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fangle',['kfselect_min_angle',['../structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fdist',['kfselect_min_dist',['../structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde',1,'svo::BaseOptions']]],\n  ['kfselect_5fmin_5fdist_5fmetric',['kfselect_min_dist_metric',['../structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe',1,'svo::BaseOptions']]],\n  ['kfselect_5fnumkfs_5flower_5fthresh',['kfselect_numkfs_lower_thresh',['../structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1',1,'svo::BaseOptions']]],\n  ['kfselect_5fnumkfs_5fupper_5fthresh',['kfselect_numkfs_upper_thresh',['../structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8',1,'svo::BaseOptions']]],\n  ['kinv_5f',['KInv_',['../classMosaic.html#a9de6c4db4cff9714a205f2d5d3f580f7',1,'Mosaic::KInv_()'],['../classevo__utils_1_1camera_1_1PinholeCamera.html#abdfd824b95e1cc5af7df62b171af9566',1,'evo_utils::camera::PinholeCamera::Kinv_()']]],\n  ['kinv_5fvirt_5f',['KInv_virt_',['../classMosaic.html#ac1c6102c7e4614eef736dfbb8953a918',1,'Mosaic']]],\n  ['klt_5fmax_5fiter',['klt_max_iter',['../structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmax_5flevel',['klt_max_level',['../structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmin_5flevel',['klt_min_level',['../structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fmin_5fupdate_5fsquared',['klt_min_update_squared',['../structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5fpatch_5fsizes',['klt_patch_sizes',['../structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3',1,'svo::FeatureTrackerOptions']]],\n  ['klt_5ftemplate_5fis_5ffirst_5fobservation',['klt_template_is_first_observation',['../structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43',1,'svo::FeatureTrackerOptions']]]\n];\n"
  },
  {
    "path": "docs/search/variables_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_b.js",
    "content": "var searchData=\n[\n  ['label_5f',['label_',['../classvk_1_1cameras_1_1NCamera.html#a832186f4e9e9599a3c12cdf94bf8dc41',1,'vk::cameras::NCamera']]],\n  ['landmark_5fvec_5f',['landmark_vec_',['../classsvo_1_1Frame.html#afd9e2bf1dcaa1f82206b616d662f6437',1,'svo::Frame']]],\n  ['last_5fba_5fupdate_5f',['last_ba_update_',['../classsvo_1_1Point.html#a9fe3d75611fb51efc6798492fb46b5ad',1,'svo::Point']]],\n  ['last_5fframes_5f',['last_frames_',['../classsvo_1_1FrameHandlerBase.html#aeac142109c38dcf88d26dd5e022142d4',1,'svo::FrameHandlerBase']]],\n  ['last_5fkf_5fupdate_5fevent_5f',['last_kf_update_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0e5758c89defe7c49b6116203e77e2',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['last_5fprojected_5fkf_5fid_5f',['last_projected_kf_id_',['../classsvo_1_1Point.html#a32033b60c3cbfa947f315d12ccc8f850',1,'svo::Point']]],\n  ['last_5fpublished_5fts_5f',['last_published_ts_',['../classsvo_1_1Frame.html#a137c490d744a7002f7608801714edba9',1,'svo::Frame::last_published_ts_()'],['../classsvo_1_1Point.html#a548c8b0f71b6fa3fdbd7a57eec4a2d3a',1,'svo::Point::last_published_ts_()']]],\n  ['last_5fstructure_5foptim_5f',['last_structure_optim_',['../classsvo_1_1Point.html#a4968925f54f239e75f31ed3818814ccc',1,'svo::Point']]],\n  ['level',['level',['../structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db',1,'svo::FeatureWrapper::level()'],['../structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4',1,'svo::Corner::level()']]],\n  ['level_5f',['level_',['../classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b',1,'svo::SparseImgAlignBase']]],\n  ['level_5fvec_5f',['level_vec_',['../classsvo_1_1Frame.html#a1accb3c86ed9d7abf140d83cc24f958d',1,'svo::Frame']]],\n  ['local_5fframe_5fsize_5f',['local_frame_size_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#ae6a7f21a3b5b5dff875b0f6573c47dcf',1,'dvs_bootstrapping::EventsFramesBootstrapper']]]\n];\n"
  },
  {
    "path": "docs/search/variables_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_c.js",
    "content": "var searchData=\n[\n  ['map_5f',['map_',['../classMosaic.html#aba58a0d6482ecf38a45ca83815569443',1,'Mosaic::map_()'],['../classDvsReconstruction.html#aab40adb61fcc3250a1de5289f53dc2be',1,'DvsReconstruction::map_()'],['../classLKSE3.html#afe174f15a8dbec80ba5bd07cd4ab0dcb',1,'LKSE3::map_()'],['../classsvo_1_1FrameHandlerBase.html#a4f186966e5ef11f3c7b011dd147b3c91',1,'svo::FrameHandlerBase::map_()']]],\n  ['map_5fblur_5f',['map_blur_',['../classMosaic.html#afedc6f48c1efb28dda255b25c22d2742',1,'Mosaic::map_blur_()'],['../classLKSE3.html#a54124fd5d010a38f4df0cb2ec67036f4',1,'LKSE3::map_blur_()']]],\n  ['map_5flocal_5f',['map_local_',['../classLKSE3.html#ab07de201b842f895e552cf33475ad2f6',1,'LKSE3']]],\n  ['map_5fsub_5f',['map_sub_',['../classDvsReconstruction.html#add6f7f352e14e97b991227cc4de3cdd2',1,'DvsReconstruction::map_sub_()'],['../classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6',1,'Tracker::map_sub_()']]],\n  ['max_5fdepth_5f',['max_depth_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ac65d0e128be514ed1a396e4ff1b38daf',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['max_5fepi_5flength_5foptim',['max_epi_length_optim',['../structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81',1,'svo::Matcher::Options']]],\n  ['max_5fepi_5fsearch_5fsteps',['max_epi_search_steps',['../structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b',1,'svo::Matcher::Options']]],\n  ['max_5fimu_5fdelta_5ft',['max_imu_delta_t',['../classsvo_1_1ImuCalibration.html#a65e8549d3d4fda4f6b1dc3ef76ac1566',1,'svo::ImuCalibration']]],\n  ['max_5fiter',['max_iter',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['max_5fiterations_5f',['max_iterations_',['../classLKSE3.html#a17593bcd462e3bea8bb1142968164266',1,'LKSE3']]],\n  ['max_5flevel',['max_level',['../structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d',1,'svo::DetectorOptions']]],\n  ['max_5fn_5ffeatures_5fper_5fframe',['max_n_features_per_frame',['../structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8',1,'svo::ReprojectorOptions']]],\n  ['max_5fn_5fkfs',['max_n_kfs',['../structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b',1,'svo::BaseOptions::max_n_kfs()'],['../structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3',1,'svo::ReprojectorOptions::max_n_kfs()']]],\n  ['max_5fn_5fseeds_5fper_5fframe',['max_n_seeds_per_frame',['../structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143',1,'svo::DepthFilterOptions']]],\n  ['max_5fnum_5ffeatures_5f',['max_num_features_',['../classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660',1,'svo::SparseImgAlignBase']]],\n  ['max_5fsearch_5flevel',['max_search_level',['../structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337',1,'svo::DepthFilterOptions']]],\n  ['max_5ftrials',['max_trials',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['measurements_5f',['measurements_',['../classsvo_1_1ImuHandler.html#a4b0c151b8efa51f23d533ca963179be7',1,'svo::ImuHandler']]],\n  ['median_5ffilter_5fsize_5f',['median_filter_size_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a981fb5f234a53aa96aa24c93da86f423',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['min_5fdepth_5f',['min_depth_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a635b56c3ef2453da9e5881c920eb0059',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['min_5flevel',['min_level',['../structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386',1,'svo::DetectorOptions']]],\n  ['min_5fnum_5fneighbors_5f',['min_num_neighbors_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace24950e40764734e448abb9abbb65dd',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['min_5ftracks_5fto_5fdetect_5fnew_5ffeatures',['min_tracks_to_detect_new_features',['../structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55',1,'svo::FeatureTrackerOptions']]],\n  ['mu_5f',['mu_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a20e15cfacd7c24453502296c2078887e',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['mu_5finit',['mu_init',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['mut_5f',['mut_',['../classsvo_1_1GraphManager.html#a5c8f65e0321daab9129367a1d39a1959',1,'svo::GraphManager']]]\n];\n"
  },
  {
    "path": "docs/search/variables_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_d.js",
    "content": "var searchData=\n[\n  ['n',['n',['../structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b',1,'cv::HomographyDecomposition::_CameraMotion']]],\n  ['n_5ffailed_5freproj_5f',['n_failed_reproj_',['../classsvo_1_1Point.html#aa22f74f4850050eb4c38f8f3b80c17d6',1,'svo::Point']]],\n  ['n_5fmeas_5f',['n_meas_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#a80ebef71a9bf1b774c990e5478c045fc',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['n_5freproj',['n_reproj',['../structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc',1,'svo::Reprojector::Candidate']]],\n  ['n_5fsucceeded_5freproj_5f',['n_succeeded_reproj_',['../classsvo_1_1Point.html#a0ba6315556c70718cf89f6d78553277e',1,'svo::Point']]],\n  ['n_5fvisible_5f',['n_visible_',['../classLKSE3.html#acb8f03911b91548c624a5b324832a856',1,'LKSE3']]],\n  ['need_5fnew_5fkf_5f',['need_new_kf_',['../classsvo_1_1FrameHandlerBase.html#a0f25d8ecadf657853997b46408ccde9a',1,'svo::FrameHandlerBase']]],\n  ['new_5fframes_5f',['new_frames_',['../classsvo_1_1FrameHandlerBase.html#af508b33ff564584a69ba0a7b225705af',1,'svo::FrameHandlerBase']]],\n  ['new_5fimg_5f',['new_img_',['../classLKSE3.html#ab49e4489091b1343ff2094387a7aa4ee',1,'LKSE3']]],\n  ['newest_5fprocessed_5fevent_5f',['newest_processed_event_',['../classdvs__bootstrapping_1_1EventsFramesBootstrapper.html#aaafb56114b190f10a32e49ef7042c46d',1,'dvs_bootstrapping::EventsFramesBootstrapper']]],\n  ['newest_5ftracked_5fevent_5f',['newest_tracked_event_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ace0ad5d9ed7f95e6478803c2340a1a30',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['nframe_5findex_5f',['nframe_index_',['../classsvo_1_1Frame.html#a2c725631540e15ccc2f0d1378a8ba170',1,'svo::Frame']]],\n  ['nh_5f',['nh_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a332088b877233c941a41edeed681a57e',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['normal_5f',['normal_',['../classsvo_1_1Point.html#aed0f446f516bf46e5e17e6ebbec1ab06',1,'svo::Point']]],\n  ['normal_5finformation_5f',['normal_information_',['../classsvo_1_1Point.html#aafc301b3b365b5de22a372eac0cfafd6',1,'svo::Point']]],\n  ['normal_5fset_5f',['normal_set_',['../classsvo_1_1Point.html#a9366dd131e9ec57c744b7f3497451af0',1,'svo::Point']]],\n  ['nu_5f',['nu_',['../classvk_1_1solver_1_1MiniLeastSquaresSolver.html#aa8e39cc2bab8234da3b719936cb94d39',1,'vk::solver::MiniLeastSquaresSolver']]],\n  ['nu_5finit',['nu_init',['../structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561',1,'vk::solver::MiniLeastSquaresSolverOptions']]],\n  ['num_5fdepth_5fcells_5f',['num_depth_cells_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a4a5d1f3d4b60664b3dbedfd93672f89d',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['num_5ffeatures_5f',['num_features_',['../classsvo_1_1Frame.html#a83d59cf336b9d8e927b125f850ab9d63',1,'svo::Frame']]],\n  ['num_5fobs_5flast_5f',['num_obs_last_',['../classsvo_1_1FrameHandlerBase.html#a21c9f984ddd3b2096595ec07dd5df12e',1,'svo::FrameHandlerBase']]],\n  ['num_5fpyramid_5flevels',['num_pyramid_levels',['../classmotion__correction_1_1WarpUpdateParams.html#a7aa3a2c8f1927d1cb6a9ca6cbd7a1c17',1,'motion_correction::WarpUpdateParams']]]\n];\n"
  },
  {
    "path": "docs/search/variables_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_e.js",
    "content": "var searchData=\n[\n  ['obs_5f',['obs_',['../classsvo_1_1Point.html#a468fc89330be6299070f853eecf78cac',1,'svo::Point']]],\n  ['ofs_5f',['ofs_',['../classsvo_1_1ImuHandler.html#a0f966922d90b43adec9421e28ecd23ee',1,'svo::ImuHandler']]],\n  ['ofs_5freproj_5ferrors_5f',['ofs_reproj_errors_',['../classsvo_1_1PoseOptimizer.html#a7865b7b2d413fc1ef51f5a517eba4a8b',1,'svo::PoseOptimizer']]],\n  ['omega_5fbias',['omega_bias',['../classsvo_1_1ImuInitialization.html#a7213362eac076f96b37125bdf56a467f',1,'svo::ImuInitialization']]],\n  ['omega_5fbias_5f',['omega_bias_',['../classsvo_1_1ImuHandler.html#a22cda8062d46a4a47161bf53ddf92851',1,'svo::ImuHandler']]],\n  ['omega_5fbias_5fsigma',['omega_bias_sigma',['../classsvo_1_1ImuInitialization.html#a95e53a48e779e3bdb1c8242d3116ba61',1,'svo::ImuInitialization']]],\n  ['omega_5fcoriolis',['omega_coriolis',['../classsvo_1_1ImuCalibration.html#a3326a38e075ec0cc109df53310a6e9ce',1,'svo::ImuCalibration']]],\n  ['options_5f',['options_',['../classsvo_1_1FrameHandlerBase.html#afebe181759fb81a2d916fd7deeb2da69',1,'svo::FrameHandlerBase::options_()'],['../classsvo_1_1AbstractInitialization.html#ac1068444d04d307ce094ffa2a0316adb',1,'svo::AbstractInitialization::options_()']]]\n];\n"
  },
  {
    "path": "docs/search/variables_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\"><!--\ncreateResults();\n--></script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\"><!--\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\n--></script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/search/variables_f.js",
    "content": "var searchData=\n[\n  ['p',['P',['../structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a',1,'LKSE3::Keypoint']]],\n  ['pc_5f',['pc_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a63f8adce923276393dc12edaad4c4d66',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pc_5fglobal_5f',['pc_global_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a2144912eab70d469e16448ae24f71a7d',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pcl_5f',['pcl_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#aea843038e505012562c626cd1c25424b',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['pixel_5fvalue',['pixel_value',['../structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b',1,'LKSE3::Keypoint']]],\n  ['pos_5f',['pos_',['../classsvo_1_1Point.html#ac2ddc680bb87e76fc38db6839f9178b5',1,'svo::Point']]],\n  ['poseoptim_5fprior_5flambda',['poseoptim_prior_lambda',['../structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70',1,'svo::BaseOptions']]],\n  ['poseoptim_5fthresh',['poseoptim_thresh',['../structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed',1,'svo::BaseOptions']]],\n  ['poseoptim_5fusing_5funit_5fsphere',['poseoptim_using_unit_sphere',['../structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310',1,'svo::BaseOptions']]],\n  ['poses_5fpub_5f',['poses_pub_',['../classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7',1,'Tracker']]],\n  ['precomputed_5frectified_5fpoints_5f',['precomputed_rectified_points_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#afb731a5a3862a81d979ddfba21c0e81a',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pub_5fdepth_5f',['pub_depth_',['../classMosaic.html#a217dcd4a95e50bafe98ded8ba553e481',1,'Mosaic']]],\n  ['pub_5fdepth_5fmap_5f',['pub_depth_map_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a489a220948a3742cb67c3f3ee9c17ab7',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pub_5fimg_5f',['pub_img_',['../classMosaic.html#a962d6b0d6ad32b9a425f0e86f6e2a5fb',1,'Mosaic']]],\n  ['pub_5fpc_5f',['pub_pc_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#a43637fc6e2b7f7e05d92a9f5132970c7',1,'dvs_bootstrapping::FrontoPlanarBootstrapper::pub_pc_()'],['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#abb6a055c5cd4515fe7eb5818911b7d50',1,'depth_from_defocus::DepthFromDefocusNode::pub_pc_()']]],\n  ['pub_5fpc_5fglobal_5f',['pub_pc_global_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#ae83baae63ad0f9e266e3a1e323d01b4f',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['pub_5ftf_5f',['pub_tf_',['../classdvs__bootstrapping_1_1FrontoPlanarBootstrapper.html#ae5a697b3f40227821f98b245ec212275',1,'dvs_bootstrapping::FrontoPlanarBootstrapper']]],\n  ['pub_5fvoxel_5fgrid_5f',['pub_voxel_grid_',['../classdepth__from__defocus_1_1DepthFromDefocusNode.html#a5aff4f76d8c1697d12a9eaf3b1a25f67',1,'depth_from_defocus::DepthFromDefocusNode']]],\n  ['px',['px',['../structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8',1,'svo::FeatureWrapper']]],\n  ['px_5fvec_5f',['px_vec_',['../classsvo_1_1Frame.html#acb36ee9773605f69538ebd27df49bc97',1,'svo::Frame']]],\n  ['pyr_5fnew_5f',['pyr_new_',['../classLKSE3.html#adf67aa8aa635f5e39201f2e210196bce',1,'LKSE3']]],\n  ['pyramid_5flevels_5f',['pyramid_levels_',['../classLKSE3.html#ad29f3e4a058be67e50c63b724e5b8db1',1,'LKSE3']]]\n];\n"
  },
  {
    "path": "docs/seed_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/seed.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">seed.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span>seed {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">enum</span> SeedStateIndex</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;{</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  kMu,</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  kSigma2,</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  kA,</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  kB,</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;};</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"comment\">// Accessors</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">inline</span> FloatType mu(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;{</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(0);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;}</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">inline</span> FloatType sigma2(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;{</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(1);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;}</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">inline</span> FloatType a(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;{</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(2);</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;}</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">inline</span> FloatType b(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;{</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(3);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;}</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"preprocessor\">#if 0</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"comment\">// Exponential Depth Parametrization</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;<span class=\"keyword\">inline</span> FloatType getDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;{</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordflow\">return</span> std::exp(mu_sigma2_a_b(0));</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;}</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;{</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keywordflow\">return</span> std::exp(-mu_sigma2_a_b(0)); <span class=\"comment\">// exp(x)^-1 = exp(-x)</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;}</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvMinDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;{</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">const</span> FloatType sigma = std::sqrt(mu_sigma2_a_b(1));</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordflow\">return</span> std::exp(-(mu_sigma2_a_b(0) - sigma));</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;}</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvMaxDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;{</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keyword\">const</span> FloatType sigma = std::sqrt(mu_sigma2_a_b(1));</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keywordflow\">return</span> std::exp(-(mu_sigma2_a_b(0) + sigma));</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;}</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;<span class=\"keyword\">inline</span> FloatType getMeanFromDepth(FloatType depth)</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;{</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keywordflow\">return</span> std::log(depth);</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;}</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keyword\">inline</span> FloatType getMeanRangeFromDepthMinMax(FloatType depth_min, FloatType depth_max)</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;{</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  CHECK_GE(depth_max, 0.0);</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  CHECK_GE(depth_min, 0.0);</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keywordflow\">return</span> (std::log(depth_max) - std::log(depth_min))*2.0;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;}</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;<span class=\"keyword\">inline</span> FloatType getInitSigma2FromMuRange(FloatType mu_range)</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;{</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"keywordflow\">return</span> mu_range * mu_range / 36.0;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;}</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isConverged(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;                        FloatType mu_range,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;                        FloatType sigma2_convergence_threshold)</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;{</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"comment\">// If initial uncertainty was reduced by factor sigma2_convergence_threshold</span></div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"comment\">// we accept the seed as converged.</span></div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">const</span> FloatType thresh = mu_range / sigma2_convergence_threshold;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <span class=\"keywordflow\">return</span> (mu_sigma2_a_b(1) &lt; thresh * thresh);</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;}</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;<span class=\"keyword\">inline</span> FloatType getSigma2FromDepthSigma(FloatType depth, FloatType depth_sigma)</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;{</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keyword\">const</span> FloatType sigma = 0.5 * (std::log(depth+depth_sigma) - std::log(depth-depth_sigma));</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keywordflow\">return</span> sigma * sigma;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;}</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;<span class=\"preprocessor\">#else</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;<span class=\"comment\">// Inverse Depth Parametrization</span></div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;<span class=\"keyword\">inline</span> FloatType getDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;{</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  <span class=\"keywordflow\">return</span> 1.0 / mu_sigma2_a_b(0);</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;}</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;{</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(0);</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;}</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvMinDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;{</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  <span class=\"keywordflow\">return</span> mu_sigma2_a_b(0) + std::sqrt(mu_sigma2_a_b(1));</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;}</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;<span class=\"keyword\">inline</span> FloatType getInvMaxDepth(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;{</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keywordflow\">return</span> std::max(mu_sigma2_a_b(0) - std::sqrt(mu_sigma2_a_b(1)), 0.00000001);</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;}</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;<span class=\"keyword\">inline</span> FloatType getMeanFromDepth(FloatType depth)</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;{</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  <span class=\"keywordflow\">return</span> 1.0 / depth;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;}</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;<span class=\"keyword\">inline</span> FloatType getMeanRangeFromDepthMinMax(FloatType depth_min, FloatType <span class=\"comment\">/*depth_max*/</span>)</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;{</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordflow\">return</span> 1.0 / depth_min;</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;}</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;<span class=\"keyword\">inline</span> FloatType getInitSigma2FromMuRange(FloatType mu_range)</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;{</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  <span class=\"keywordflow\">return</span> mu_range * mu_range / 36.0;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;}</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isConverged(<span class=\"keyword\">const</span> Eigen::Ref&lt;const SeedState&gt;&amp; mu_sigma2_a_b,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;                        FloatType mu_range,</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;                        FloatType sigma2_convergence_threshold)</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;{</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;  <span class=\"comment\">// If initial uncertainty was reduced by factor sigma2_convergence_threshold</span></div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;  <span class=\"comment\">// we accept the seed as converged.</span></div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;  <span class=\"keyword\">const</span> FloatType thresh = mu_range / sigma2_convergence_threshold;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  <span class=\"keywordflow\">return</span> (mu_sigma2_a_b(1) &lt; thresh * thresh);</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;}</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;<span class=\"keyword\">inline</span> FloatType getSigma2FromDepthSigma(FloatType depth, FloatType depth_sigma)</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;{</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keyword\">const</span> FloatType sigma = 0.5 * (1.0 / std::max(0.000000000001, depth - depth_sigma)</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;                               - 1.0 / (depth + depth_sigma));</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  <span class=\"keywordflow\">return</span> sigma * sigma;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;}</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;<span class=\"comment\">// -----------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;<span class=\"comment\">// Utils</span></div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> increaseOutlierProbability(Eigen::Ref&lt;SeedState&gt;&amp; mu_sigma2_a_b)</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;{</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;  mu_sigma2_a_b(3) += 1;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;}</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;} <span class=\"comment\">// namespace seed</span></div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/smart__factors__fwd_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_backend/include/svo/backend/smart_factors_fwd.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_9fec18ccfd53fd49ed8c627e6d4cc5c5.html\">svo_backend</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_169217caa56e152ba10678380c01ab08.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d9d3c50dad25936e4cdae23cc15ff37b.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_090a70428d2d57d74b0729d005431577.html\">backend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">smart_factors_fwd.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;utility&gt;</span> <span class=\"comment\">// std::pair</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;boost/shared_ptr.hpp&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacegtsam.html\">gtsam</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">class </span>Values;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">class </span>Pose3;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">class </span>Point3;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">class </span>Cal3_S2;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classgtsam_1_1FastMap.html\">   12</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> KEY, <span class=\"keyword\">typename</span> VALUE&gt; <span class=\"keyword\">class </span><a class=\"code\" href=\"classgtsam_1_1FastMap.html\">FastMap</a>;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">   13</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">class</span> CALIBRATION&gt; <span class=\"keyword\">class </span><a class=\"code\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">SmartProjectionPoseFactor</a>;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classgtsam_1_1GenericProjectionFactor.html\">   14</a></span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">class</span> POSE, <span class=\"keyword\">class</span> LANDMARK, <span class=\"keyword\">class</span> CALIBRATION&gt; <span class=\"keyword\">class </span><a class=\"code\" href=\"classgtsam_1_1GenericProjectionFactor.html\">GenericProjectionFactor</a>;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">class </span>SmartProjectionParams;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;} <span class=\"comment\">// namespace gtsam</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">// Typedef of desired classes to reduce compile-time</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classgtsam_1_1GenericProjectionFactor.html\">gtsam::GenericProjectionFactor&lt;gtsam::Pose3, gtsam::Point3, gtsam::Cal3_S2&gt;</a> ProjectionFactor;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">gtsam::SmartProjectionPoseFactor&lt;gtsam::Cal3_S2&gt;</a> SmartFactor;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap&lt;boost::shared_ptr&lt;SmartFactor&gt;</a>, <span class=\"keywordtype\">size_t</span>&gt; FactorIndexMap;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">typedef</span> <a class=\"code\" href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap&lt;int, std::pair&lt;boost::shared_ptr&lt;SmartFactor&gt;</a>, <span class=\"keywordtype\">int</span>&gt;&gt; SmartFactorMap;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classgtsam_1_1FastMap_html\"><div class=\"ttname\"><a href=\"classgtsam_1_1FastMap.html\">gtsam::FastMap</a></div><div class=\"ttdef\"><b>Definition:</b> smart_factors_fwd.h:12</div></div>\n<div class=\"ttc\" id=\"classgtsam_1_1SmartProjectionPoseFactor_html\"><div class=\"ttname\"><a href=\"classgtsam_1_1SmartProjectionPoseFactor.html\">gtsam::SmartProjectionPoseFactor</a></div><div class=\"ttdef\"><b>Definition:</b> smart_factors_fwd.h:13</div></div>\n<div class=\"ttc\" id=\"namespacegtsam_html\"><div class=\"ttname\"><a href=\"namespacegtsam.html\">gtsam</a></div><div class=\"ttdef\"><b>Definition:</b> smart_factors_fwd.h:7</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classgtsam_1_1GenericProjectionFactor_html\"><div class=\"ttname\"><a href=\"classgtsam_1_1GenericProjectionFactor.html\">gtsam::GenericProjectionFactor</a></div><div class=\"ttdef\"><b>Definition:</b> smart_factors_fwd.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/sparse__img__align_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align/sparse_img_align.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">sparse_img_align.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/img_align/sparse_img_align_base.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/robust_cost.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, 2, Eigen::Dynamic, Eigen::ColMajor&gt; UvCache;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, 3, Eigen::Dynamic, Eigen::ColMajor&gt; XyzRefCache;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, 6, Eigen::Dynamic, Eigen::ColMajor&gt; JacobianProjCache;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, 8, Eigen::Dynamic, Eigen::ColMajor&gt; JacobianCache;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor&gt; ResidualCache;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;bool, Eigen::Dynamic, 1, Eigen::ColMajor&gt; VisibilityMask;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor&gt; RefPatchCache;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlign.html\">   30</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;{</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;SparseImgAlign&gt; Ptr;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html\">SparseImgAlign</a>(</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options,</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options);</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">   42</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">setPatchSizeSideEffects</a>()</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  {</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    <span class=\"comment\">// no side effects</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  }</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">size_t</span> run(<span class=\"keyword\">const</span> FrameBundle::Ptr&amp; ref_frames,</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;             <span class=\"keyword\">const</span> FrameBundle::Ptr&amp; cur_frames);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"comment\">// caches:</span></div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  <span class=\"keywordtype\">bool</span> have_cache_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  std::vector&lt; std::vector&lt;size_t&gt; &gt; fts_vec_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  UvCache uv_cache_; <span class=\"comment\">//&lt;! containts feature coordinates in reference image (size 2 x #Patches)</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">   55</a></span>&#160;  XyzRefCache <a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">xyz_ref_cache_</a>; </div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">   56</a></span>&#160;  JacobianProjCache <a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">jacobian_proj_cache_</a>; </div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  JacobianCache jacobian_cache_; <span class=\"comment\">//&lt;! contains 1x8 jacobians (pose and illumination model) (size 8 x AreaPatch*#Patches)</span></div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  ResidualCache residual_cache_; <span class=\"comment\">//&lt;! residuals (size AreaPatch x #Patches)</span></div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  VisibilityMask visibility_mask_;<span class=\"comment\">//&lt;! is Patch visible in current image? (size 1 x #Patches)</span></div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  RefPatchCache ref_patch_cache_; <span class=\"comment\">//&lt;! residuals (size AreaPatch x #Patches)</span></div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">evaluateError</a>(</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state,</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;      GradientVector* g);</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">void</span> update(</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; old_model,</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; new_model);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">void</span> applyPrior(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; current_model);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> finishIteration();</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;};</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keyword\">namespace </span>sparse_img_align_utils {</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;<span class=\"keywordtype\">void</span> extractFeaturesSubset(</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size_wb,             <span class=\"comment\">// patch size + border (usually border = 2 for gradiant)</span></div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    std::vector&lt;size_t&gt;&amp; fts);</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"comment\">// Fills UvCache (needed for extraction of refpatch extraction at every pyramid level),</span></div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;<span class=\"comment\">// XyzRefCache (needed at every optimization step for reprojection) and</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;<span class=\"comment\">// JacobianProjCache (needed at every pyramid level)</span></div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;<span class=\"keywordtype\">void</span> precomputeBaseCaches(</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keyword\">const</span> std::vector&lt;size_t&gt;&amp; fts,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> use_pinhole_distortion,</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    <span class=\"keywordtype\">size_t</span>&amp; feature_counter,</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    UvCache&amp; uv_cache,</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    XyzRefCache&amp; xyz_ref_cache,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    JacobianProjCache&amp; jacobian_proj_cache);</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;<span class=\"comment\">// Fills JacobianCache and RefPatchCache at every level and sets have_cache_ to true</span></div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;<span class=\"keywordtype\">void</span> precomputeJacobiansAndRefPatches(</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; ref_frame,</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    <span class=\"keyword\">const</span> UvCache&amp; uv_cache,</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    <span class=\"keyword\">const</span> JacobianProjCache&amp; jacobian_proj_cache,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> level,</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size,</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> nr_features,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    <span class=\"keywordtype\">bool</span> estimate_alpha, <span class=\"keywordtype\">bool</span> estimate_beta,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    <span class=\"keywordtype\">size_t</span>&amp; feature_counter,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    JacobianCache&amp; jacobian_cache,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    RefPatchCache&amp; ref_patch_cache);</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;<span class=\"comment\">// Fills ResidualCache and VisibilityMask</span></div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;<span class=\"keywordtype\">void</span> computeResidualsOfFrame(</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; cur_frame,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> level,</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size,</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> nr_features,</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> alpha,</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> beta,</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;    <span class=\"keyword\">const</span> RefPatchCache&amp; ref_patch_cache,</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    <span class=\"keyword\">const</span> XyzRefCache&amp; xyz_ref_cache,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    <span class=\"keywordtype\">size_t</span>&amp; feature_counter,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;    std::vector&lt;Vector2d&gt;* match_px,</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    ResidualCache&amp; residual_cache,</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    VisibilityMask&amp; visibility_mask</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;    );</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;<span class=\"comment\">// Compute Hessian and gradient</span></div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;FloatType computeHessianAndGradient(</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    <span class=\"keyword\">const</span> JacobianCache&amp; jacobian_cache,</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;    <span class=\"keyword\">const</span> ResidualCache&amp; residual_cache,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    <span class=\"keyword\">const</span> VisibilityMask&amp; visibility_mask,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> weight_scale,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;    <span class=\"keyword\">const</span> vk::solver::WeightFunctionPtr&amp; weight_function,</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    SparseImgAlign::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    SparseImgAlign::GradientVector* g);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;<span class=\"comment\">// Experimental. Computes residuals and Hessian at the same time. No significant speedup was observed.</span></div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;<span class=\"keywordtype\">float</span> computeResidualHessianGradient(</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    <span class=\"keyword\">const</span> FramePtr&amp; cur_frame,</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> level,</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size,</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> nr_features,</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref,</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> alpha,</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> beta,</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keyword\">const</span> RefPatchCache&amp; ref_patch_cache,</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;    <span class=\"keyword\">const</span> XyzRefCache&amp; xyz_ref_cache,</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;    <span class=\"keyword\">const</span> JacobianCache&amp; jacobian_cache,</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> weight_scale,</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    <span class=\"keyword\">const</span> vk::solver::WeightFunctionPtr&amp; weight_function,</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;    SparseImgAlign::HessianMatrix* H,</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    SparseImgAlign::GradientVector* g,</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    <span class=\"keywordtype\">size_t</span>&amp; feature_counter</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;    );</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;} <span class=\"comment\">// namespace sparse_img_align_utils</span></div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1SparseImgAlign_html_a082c892a9383b6f771ffcbe87bc048ab\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlign.html#a082c892a9383b6f771ffcbe87bc048ab\">svo::SparseImgAlign::setPatchSizeSideEffects</a></div><div class=\"ttdeci\">void setPatchSizeSideEffects()</div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align.h:42</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlign_html_ade9b9eb3d67c8e8ef7aea115c0d13c6f\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlign.html#ade9b9eb3d67c8e8ef7aea115c0d13c6f\">svo::SparseImgAlign::xyz_ref_cache_</a></div><div class=\"ttdeci\">XyzRefCache xyz_ref_cache_</div><div class=\"ttdoc\">contains 3d feature location in IMU frame (size 3 x #Patches) </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align.h:55</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></div><div class=\"ttdoc\">Sparse Image Alignment Options. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:37</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlign_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlign.html\">svo::SparseImgAlign</a></div><div class=\"ttdoc\">Optimize the pose of the frame by minimizing the photometric error of feature patches. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align.h:30</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignState_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></div><div class=\"ttdoc\">State to be estimated. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:49</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></div><div class=\"ttdoc\">Optimize the pose of the frame by minimizing the photometric error of feature patches. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:59</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlign_html_af3bb4b8fdf4fc4f64047e29c2030888d\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlign.html#af3bb4b8fdf4fc4f64047e29c2030888d\">svo::SparseImgAlign::evaluateError</a></div><div class=\"ttdeci\">double evaluateError(const SparseImgAlignState &amp;state, HessianMatrix *H, GradientVector *g)</div><div class=\"ttdoc\">Warp the (cur)rent image such that it aligns with the (ref)erence image. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align.cpp:115</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlign_html_a8d37c813de81016eaeaf11bb96be2a09\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlign.html#a8d37c813de81016eaeaf11bb96be2a09\">svo::SparseImgAlign::jacobian_proj_cache_</a></div><div class=\"ttdeci\">JacobianProjCache jacobian_proj_cache_</div><div class=\"ttdoc\">containts 2x6 Jacobians (d proj(X))/(d xi) (size 2 x 6 x #Patches) </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align.h:56</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/sparse__img__align__base_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align/sparse_img_align_base.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">sparse_img_align_base.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/mini_least_squares_solver.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/robust_cost.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">//using namespace Eigen;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">using</span> Eigen::Vector2i;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">using</span> Eigen::Vector2f;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">using</span> Eigen::Vector2d;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">using</span> Eigen::Vector3d;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">using</span> Eigen::Matrix2f;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">using</span> Eigen::Matrix2d;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">using</span> Eigen::Matrix3d;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">using</span> Eigen::Matrix;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;double, 8, 8&gt; Matrix8d;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;double, 8, 1&gt; Vector8d;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType,2,1&gt; Vector2ft;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType,3,1&gt; Vector3ft;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatType,8,1&gt; Vector8ft;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SparseImgAlignOptions.html\">   37</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;{</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">int</span> max_level = 4;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordtype\">int</span> min_level = 1;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keywordtype\">bool</span> estimate_illumination_gain = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">bool</span> estimate_illumination_offset = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keywordtype\">bool</span> use_distortion_jacobian = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordtype\">bool</span> robustification = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">double</span> weight_scale = 10;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;};</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SparseImgAlignState.html\">   49</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;{</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">   52</a></span>&#160;  Transformation <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">T_icur_iref</a>;     </div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf\">   53</a></span>&#160;  <span class=\"keywordtype\">double</span> alpha = 0.0;  </div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81\">   54</a></span>&#160;  <span class=\"keywordtype\">double</span> beta = 0.0;   </div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  <span class=\"comment\">// TODO: if we have multiple frames, we should have alpha&amp;beta for every frame individually</span></div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;};</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html\">   59</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a>&lt;8, SparseImgAlignState, SparseImgAlignBase&gt;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;{</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;SparseImgAlignBase&gt; Ptr;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">typedef</span> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a> <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a>;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a>(</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;      SolverOptions optimization_options,</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options);</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">size_t</span> run(<span class=\"keyword\">const</span> FrameBundle::Ptr&amp; ref_frames,</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;             <span class=\"keyword\">const</span> FrameBundle::Ptr&amp; cur_frames) = 0;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keyword\">static</span> SolverOptions getDefaultSolverOptions();</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  <span class=\"keywordtype\">void</span> setWeightedPrior(</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_cur_ref_prior,</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> alpha_prior,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> beta_prior,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> lambda_rot,</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> lambda_trans,</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> lambda_alpha,</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> lambda_beta);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">class</span> derived&gt;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keywordtype\">void</span> setPatchSize(<span class=\"keywordtype\">size_t</span> patch_size)</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  {</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    patch_size_ = patch_size;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    border_size_ = 1;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    patch_size_with_border_ = patch_size_ + 2*border_size_;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    patch_area_ = patch_size_*patch_size_;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    <span class=\"keyword\">static_cast&lt;</span>derived*<span class=\"keyword\">&gt;</span>(<span class=\"keyword\">this</span>)-&gt;setPatchSizeSideEffects();</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  }</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> setPatchSizeSideEffects() = 0;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">  102</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">setMaxNumFeaturesToAlign</a>(<span class=\"keywordtype\">int</span> num)</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  {</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;    max_num_features_ = num;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  }</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">  108</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">setAlphaInitialValue</a>(<span class=\"keywordtype\">double</span> alpha_init)</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  {</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    alpha_init_ = alpha_init;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  }</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">  114</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">setBetaInitialValue</a>(<span class=\"keywordtype\">double</span> beta_init)</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  {</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    beta_init_ = beta_init;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  }</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">  120</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">setCompensation</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">bool</span> do_compensation)</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  {</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    options_.estimate_illumination_gain = do_compensation;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    options_.estimate_illumination_offset = do_compensation;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  }</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">double</span> evaluateError(</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      GradientVector* g) = 0;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  <span class=\"keywordtype\">void</span> update(</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; old_model,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      <span class=\"keyword\">const</span> UpdateVector&amp; dx,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; new_model);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordtype\">void</span> applyPrior(<span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a>&amp; current_model);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> finishIteration() {}</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordtype\">int</span> patch_size_;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;  <span class=\"keywordtype\">int</span> border_size_;</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;  <span class=\"keywordtype\">int</span> patch_size_with_border_;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;  <span class=\"keywordtype\">int</span> patch_area_;</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kJacobianSize = 8;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  <span class=\"keyword\">static</span> constexpr <span class=\"keywordtype\">int</span> kHessianTriagN = 36; <span class=\"comment\">// Nr elements of the upper triangular part of the Hessian</span></div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;  <a class=\"code\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options_;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">  150</a></span>&#160;  FrameBundle::Ptr <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">ref_frames_</a>; </div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">  151</a></span>&#160;  FrameBundle::Ptr <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">cur_frames_</a>; </div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">  152</a></span>&#160;  Transformation <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">T_iref_world_</a>; </div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">  153</a></span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">level_</a>; </div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;  <span class=\"keywordtype\">double</span> prior_lambda_rot_;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  <span class=\"keywordtype\">double</span> prior_lambda_trans_;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;  <span class=\"keywordtype\">double</span> prior_lambda_alpha_;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keywordtype\">double</span> prior_lambda_beta_;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignBase.html#a52b5536d15bb5f7e71b166c235ecb660\">  158</a></span>&#160;  <span class=\"keywordtype\">int</span> max_num_features_ = -1; </div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;  <span class=\"keywordtype\">double</span> alpha_init_ = 0.0;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;  <span class=\"keywordtype\">double</span> beta_init_ = 0.0;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;  vk::solver::WeightFunctionPtr weight_function_;</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;  <span class=\"keywordtype\">double</span> weight_scale_;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;};</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_ab76abe2df1f3158db10036766b3a0e3b\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#ab76abe2df1f3158db10036766b3a0e3b\">svo::SparseImgAlignBase::level_</a></div><div class=\"ttdeci\">int level_</div><div class=\"ttdoc\">current pyramid level on which the optimization runs. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:153</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></div><div class=\"ttdoc\">Sparse Image Alignment Options. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:37</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignState_html_a36f5ab3915ef3499843d733e615c73c5\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">svo::SparseImgAlignState::T_icur_iref</a></div><div class=\"ttdeci\">EIGEN_MAKE_ALIGNED_OPERATOR_NEW Transformation T_icur_iref</div><div class=\"ttdoc\">Relative transformation between last and current frame. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:52</div></div>\n<div class=\"ttc\" id=\"classvk_1_1solver_1_1MiniLeastSquaresSolver_html\"><div class=\"ttname\"><a href=\"classvk_1_1solver_1_1MiniLeastSquaresSolver.html\">vk::solver::MiniLeastSquaresSolver</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:53</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a10fba90982b01781c771d190ab6c9cf8\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a10fba90982b01781c771d190ab6c9cf8\">svo::SparseImgAlignBase::setAlphaInitialValue</a></div><div class=\"ttdeci\">void setAlphaInitialValue(double alpha_init)</div><div class=\"ttdoc\">Set inital value for illumination estimation multiplicative parameter. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:108</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a063cf65662c5ccd0704ff76e71dd2c27\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a063cf65662c5ccd0704ff76e71dd2c27\">svo::SparseImgAlignBase::cur_frames_</a></div><div class=\"ttdeci\">FrameBundle::Ptr cur_frames_</div><div class=\"ttdoc\">only the image is known! </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:151</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_af3709befd619eded103d3f2f890735a8\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#af3709befd619eded103d3f2f890735a8\">svo::SparseImgAlignBase::ref_frames_</a></div><div class=\"ttdeci\">FrameBundle::Ptr ref_frames_</div><div class=\"ttdoc\">reference frame, has depth for gradient pixels. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:150</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a5714f0be918499ce3c4506fac5093cb9\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a5714f0be918499ce3c4506fac5093cb9\">svo::SparseImgAlignBase::setMaxNumFeaturesToAlign</a></div><div class=\"ttdeci\">void setMaxNumFeaturesToAlign(int num)</div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:102</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a969ecfed6d72c366e715abb84303b267\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a969ecfed6d72c366e715abb84303b267\">svo::SparseImgAlignBase::setCompensation</a></div><div class=\"ttdeci\">void setCompensation(const bool do_compensation)</div><div class=\"ttdoc\">Set compensation. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:120</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a5f3482ed793303a2dbdb03504c84bdf5\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a5f3482ed793303a2dbdb03504c84bdf5\">svo::SparseImgAlignBase::T_iref_world_</a></div><div class=\"ttdeci\">Transformation T_iref_world_</div><div class=\"ttdoc\">Pose of reference frame&amp;#39;s IMU in world coordinates. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:152</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignState_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></div><div class=\"ttdoc\">State to be estimated. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:49</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></div><div class=\"ttdoc\">Optimize the pose of the frame by minimizing the photometric error of feature patches. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:59</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html_a9f4c32db9799835eb96edd923eb91afe\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html#a9f4c32db9799835eb96edd923eb91afe\">svo::SparseImgAlignBase::setBetaInitialValue</a></div><div class=\"ttdeci\">void setBetaInitialValue(double beta_init)</div><div class=\"ttdoc\">Set inital value for illumination estimation additive parameter. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:114</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/sparse__img__align__gpu_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_img_align/include/svo/img_align/sparse_img_align_gpu.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_45f0b20d46831437f833c1c1b580a596.html\">svo_img_align</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4fbcc3d3dbbfa94ed8f578780a01afc9.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ea5f8ab27efd92f8105e8174a9eaf2ea.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6a4873862b1aee04d6a77ca8dc5bb8a7.html\">img_align</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">sparse_img_align_gpu.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/img_align/sparse_img_align_base.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/solver/robust_cost.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;vikit/performance_monitor.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_imgproc/image_pyramid.hpp&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_image_gpu.cuh&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_matrix.cuh&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;imp/cu_core/cu_pinhole_camera.cuh&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;svo/img_align/sparse_img_align_device_utils.cuh&gt;</span> <span class=\"comment\">//for CacheMemoryHandler</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">typedef</span> Eigen::Matrix&lt;FloatTypeGpu,3,1&gt; Vector3ftGpu;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1HostCacheHandler.html\">   26</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;{</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  std::vector&lt;Float2TypeGpu&gt; uv_cache;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  std::vector&lt;Float3TypeGpu&gt; xyz_ref_cache;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  std::vector&lt;size_t&gt; first_ftr_index;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  std::vector&lt;size_t&gt; nbr_of_ftrs;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  <span class=\"keywordtype\">size_t</span> total_nbr_of_ftrs;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keywordtype\">void</span> clear()</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  {</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    uv_cache.clear();</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    xyz_ref_cache.clear();</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    first_ftr_index.clear();</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;    nbr_of_ftrs.clear();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">void</span> reserve(<span class=\"keywordtype\">size_t</span> feature_capacity)</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  {</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    uv_cache.reserve(feature_capacity);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    xyz_ref_cache.reserve(feature_capacity);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  }</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> capacity()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    <span class=\"keywordflow\">return</span> uv_cache.capacity();</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  }</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> push_uv(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; u, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; v)</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  {</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    uv_cache.push_back({<span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(u),static_cast&lt;FloatTypeGpu&gt;(v)});</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  }</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> push_uv(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; u, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; v)</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  {</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    uv_cache.push_back({<span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(u),static_cast&lt;FloatTypeGpu&gt;(v)});</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  }</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> push_xyz(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; x, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; y, <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; z)</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  {</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    xyz_ref_cache.push_back({<span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(x), static_cast&lt;FloatTypeGpu&gt;(y),</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;                             <span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(z)});</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  }</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> push_xyz(<span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; x, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; y, <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span>&amp; z)</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  {</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    xyz_ref_cache.push_back({<span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(x), static_cast&lt;FloatTypeGpu&gt;(y),</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;                             <span class=\"keyword\">static_cast&lt;</span>FloatTypeGpu<span class=\"keyword\">&gt;</span>(z)});</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;};</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignGpu.html\">   77</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignBase.html\">SparseImgAlignBase</a></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;{</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  EIGEN_MAKE_ALIGNED_OPERATOR_NEW</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;SparseImgAlignGpu&gt; Ptr;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  <a class=\"code\" href=\"classsvo_1_1SparseImgAlignGpu.html\">SparseImgAlignGpu</a>(</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;      <a class=\"code\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">SolverOptions</a> optimization_options,</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      <a class=\"code\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a> options);</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">   89</a></span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">setPatchSizeSideEffects</a>()</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  {</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    gpu_cache_.setPatchArea(patch_area_);</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  }</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <span class=\"keywordtype\">size_t</span> run(<span class=\"keyword\">const</span> FrameBundle::Ptr&amp; ref_frames,</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;             <span class=\"keyword\">const</span> FrameBundle::Ptr&amp; cur_frames);</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">  102</a></span>&#160;  <span class=\"keyword\">inline</span> FloatTypeGpu <a class=\"code\" href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">getMedianDisparity</a>() {<span class=\"keywordflow\">return</span> median_disparity_;}</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;  GPUProperties gpu_props_;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;  <span class=\"keywordtype\">int</span> num_blocks_reduce_;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;  <span class=\"keywordtype\">int</span> num_threads_reduce_;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;  <span class=\"keywordtype\">bool</span> have_cache_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;  FloatTypeGpu median_disparity_;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  <span class=\"comment\">// data storage</span></div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;  std::vector&lt;std::vector&lt;imp::cu::ImageGpu8uC1::Ptr&gt; &gt; cu_cur_imgs_pyramid_copy_;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  std::vector&lt;std::vector&lt;imp::cu::ImageGpu8uC1::Ptr&gt; &gt; cu_ref_imgs_pyramid_copy_;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  <span class=\"comment\">// TODO: USE imp::ImagePyramid</span></div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  <span class=\"comment\">//std::vector&lt;imp::ImagePyramid8uC1::Ptr&gt; cu_ref_pyramids_device_;</span></div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  <span class=\"comment\">//std::vector&lt;imp::ImagePyramid8uC1::Ptr&gt; cu_cur_pyramids_device_;</span></div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <a class=\"code\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a> host_cache_;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  GpuCacheHandler gpu_cache_;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  std::vector&lt;imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr&gt; cu_T_imu_cam_bundle_;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  std::vector&lt;imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;::Ptr&gt; cu_T_cam_imu_bundle_;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;  std::vector&lt;imp::cu::PinholeCamera::Ptr&gt; cu_camera_bundle_;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  std::vector&lt;imp::cu::Matrix&lt;FloatTypeGpu,3,4&gt;&gt; cu_T_cur_ref_bundle_;</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;<span class=\"keyword\">protected</span>:</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;  <span class=\"keywordtype\">double</span> evaluateError(</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a> &amp;state,</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;      HessianMatrix* H,</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;      GradientVector* g);</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;};</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;<span class=\"keyword\">namespace </span>sparse_img_align_host_utils {</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;<span class=\"keywordtype\">void</span> extractFeaturesSubset(<span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; ref_frame,</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;                           <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> max_level,</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;                           <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> patch_size_wb, <span class=\"comment\">// patch size + border (usually border=2 for gradient),</span></div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;                           <span class=\"keywordtype\">size_t</span>&amp; nr_fts_extracted,</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;                           <a class=\"code\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a>&amp; host_cache);</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;} <span class=\"comment\">// namespace sparse_img_align_host_utils</span></div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignGpu_html_ad1c34c3d957054b0cb96b1192f1cd5ea\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignGpu.html#ad1c34c3d957054b0cb96b1192f1cd5ea\">svo::SparseImgAlignGpu::setPatchSizeSideEffects</a></div><div class=\"ttdeci\">void setPatchSizeSideEffects()</div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_gpu.h:89</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></div><div class=\"ttdoc\">Sparse Image Alignment Options. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:37</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1SparseImgAlignState_html\"><div class=\"ttname\"><a href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></div><div class=\"ttdoc\">State to be estimated. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:49</div></div>\n<div class=\"ttc\" id=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions_html\"><div class=\"ttname\"><a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></div><div class=\"ttdef\"><b>Definition:</b> mini_least_squares_solver.h:18</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignGpu_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignGpu.html\">svo::SparseImgAlignGpu</a></div><div class=\"ttdoc\">Optimize the pose of the frame by minimizing the photometric error of feature patches. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_gpu.h:77</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1HostCacheHandler_html\"><div class=\"ttname\"><a href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_gpu.h:26</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignGpu_html_ae5d4c2aafee7c3e5b9e2116bf639f7c4\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignGpu.html#ae5d4c2aafee7c3e5b9e2116bf639f7c4\">svo::SparseImgAlignGpu::getMedianDisparity</a></div><div class=\"ttdeci\">FloatTypeGpu getMedianDisparity()</div><div class=\"ttdoc\">getMedianDisparity returns the median disparty for all features between the current frame and the ref...</div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_gpu.h:102</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SparseImgAlignBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SparseImgAlignBase.html\">svo::SparseImgAlignBase</a></div><div class=\"ttdoc\">Optimize the pose of the frame by minimizing the photometric error of feature patches. </div><div class=\"ttdef\"><b>Definition:</b> sparse_img_align_base.h:59</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/stereo__triangulation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/stereo_triangulation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">stereo_triangulation.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structsvo_1_1StereoTriangulationOptions.html\">   12</a></span>&#160;<span class=\"keyword\">struct </span><a class=\"code\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;{</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keywordtype\">size_t</span> triangulate_n_features = 120;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keywordtype\">double</span> mean_depth_inv = 1.0/3.0;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keywordtype\">double</span> min_depth_inv = 1.0/1.0;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keywordtype\">double</span> max_depth_inv = 1.0/50.0;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;};</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1StereoTriangulation.html\">   20</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;{</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;StereoTriangulation&gt; Ptr;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  <a class=\"code\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a> options_;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  DetectorPtr feature_detector_;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <a class=\"code\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a>(</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a>&amp; options,</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;      <span class=\"keyword\">const</span> DetectorPtr&amp; feature_detector);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1StereoTriangulation.html\">StereoTriangulation</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">void</span> compute(<span class=\"keyword\">const</span> FramePtr&amp; frame0, <span class=\"keyword\">const</span> FramePtr&amp; frame1);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;};</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1StereoTriangulation_html\"><div class=\"ttname\"><a href=\"classsvo_1_1StereoTriangulation.html\">svo::StereoTriangulation</a></div><div class=\"ttdef\"><b>Definition:</b> stereo_triangulation.h:20</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"structsvo_1_1StereoTriangulationOptions_html\"><div class=\"ttname\"><a href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></div><div class=\"ttdef\"><b>Definition:</b> stereo_triangulation.h:12</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structArgumentType.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: ArgumentType&lt; T &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">ArgumentType&lt; T &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"macros_8h_source.html\">macros.h</a>&gt;</code></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><h3>template&lt;typename T&gt;<br />\nstruct ArgumentType&lt; T &gt;</h3>\n\n<p>Extract the type from an expression which wraps a type inside braces. This is done to protect the commas in some types. </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"macros_8h_source.html\">macros.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structArgumentType_3_01T_07U_08_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">ArgumentType&lt; T(U)&gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\">ArgumentType&lt; T(U)&gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Type</b> typedef (defined in <a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\">ArgumentType&lt; T(U)&gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structArgumentType_3_01T_07U_08_4.html\">ArgumentType&lt; T(U)&gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structArgumentType_3_01T_07U_08_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: ArgumentType&lt; T(U)&gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structArgumentType_3_01T_07U_08_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">ArgumentType&lt; T(U)&gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aa8e61ff7a2005fa85fd950f8eb451f0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa8e61ff7a2005fa85fd950f8eb451f0f\"></a>\ntypedef U&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b></td></tr>\n<tr class=\"separator:aa8e61ff7a2005fa85fd950f8eb451f0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"macros_8h_source.html\">macros.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structLKSE3_1_1Keypoint-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></li><li class=\"navelem\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">LKSE3::Keypoint Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">J</a></td><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">JJt</a></td><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Keypoint</b>(Eigen::Vector3f _P, float _pixel_value, Vector8 _J, Matrix6 _JJt) (defined in <a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">P</a></td><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">pixel_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">LKSE3::Keypoint</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structLKSE3_1_1Keypoint.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: LKSE3::Keypoint Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"classLKSE3.html\">LKSE3</a></li><li class=\"navelem\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html\">Keypoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structLKSE3_1_1Keypoint-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">LKSE3::Keypoint Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"lk__se3_8hpp_source.html\">lk_se3.hpp</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0a9ddd93bb9cec2bb10fd959da8350e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0a9ddd93bb9cec2bb10fd959da8350e3\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Keypoint</b> (Eigen::Vector3f _P, float _pixel_value, Vector8 _J, Matrix6 _JJt)</td></tr>\n<tr class=\"separator:a0a9ddd93bb9cec2bb10fd959da8350e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3a63714be7cbd29753fb10611ba32e3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3a63714be7cbd29753fb10611ba32e3a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector3f&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a3a63714be7cbd29753fb10611ba32e3a\">P</a></td></tr>\n<tr class=\"memdesc:a3a63714be7cbd29753fb10611ba32e3a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">bearing vector <br /></td></tr>\n<tr class=\"separator:a3a63714be7cbd29753fb10611ba32e3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3cab605ae13bd5e4015e8faee6a440b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3cab605ae13bd5e4015e8faee6a440b\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#af3cab605ae13bd5e4015e8faee6a440b\">pixel_value</a></td></tr>\n<tr class=\"memdesc:af3cab605ae13bd5e4015e8faee6a440b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">corresponding intensity value <br /></td></tr>\n<tr class=\"separator:af3cab605ae13bd5e4015e8faee6a440b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea5af5126f9d81ee8b8cc8bfc6622a75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aea5af5126f9d81ee8b8cc8bfc6622a75\"></a>\nVector8&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#aea5af5126f9d81ee8b8cc8bfc6622a75\">J</a></td></tr>\n<tr class=\"memdesc:aea5af5126f9d81ee8b8cc8bfc6622a75\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Jacobian of the trasformation to fit. <br /></td></tr>\n<tr class=\"separator:aea5af5126f9d81ee8b8cc8bfc6622a75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a000c90408aa18deeb126cdf9ca59dc91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a000c90408aa18deeb126cdf9ca59dc91\"></a>\nMatrix6&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structLKSE3_1_1Keypoint.html#a000c90408aa18deeb126cdf9ca59dc91\">JJt</a></td></tr>\n<tr class=\"memdesc:a000c90408aa18deeb126cdf9ca59dc91\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">J dot J^T. <br /></td></tr>\n<tr class=\"separator:a000c90408aa18deeb126cdf9ca59dc91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Util structure to update the transformation, used to define the generic jacobian and store the bearing vector and the intensity value of the tracked frame </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>dvs_tracking/include/dvs_tracking/<a class=\"el\" href=\"lk__se3_8hpp_source.html\">lk_se3.hpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, Eigen::Matrix&lt; Scalar, A, B, C, D, E &gt; &amp;M) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, Eigen::Matrix&lt; Scalar, Eigen::Dynamic, B, C, D, E &gt; &amp;M) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, Eigen::Matrix&lt; Scalar, A, Eigen::Dynamic, C, D, E &gt; &amp;M) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, Eigen::Matrix&lt; Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D, E &gt; &amp;M) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>encode</b>(const Eigen::Matrix&lt; Scalar, A, B, C, D, E &gt; &amp;M) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; Eigen::Matrix&lt; Scalar_, A_, B_, C_, D_, E_ &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a3f357c08f2dbbffba1ea4fe7775fa904\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a3f357c08f2dbbffba1ea4fe7775fa904\"></a>\ntemplate&lt;class Scalar , int A, int B, int C, int D, int E&gt; </td></tr>\n<tr class=\"memitem:a3f357c08f2dbbffba1ea4fe7775fa904\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static Node&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>encode</b> (const Eigen::Matrix&lt; Scalar, A, B, C, D, E &gt; &amp;M)</td></tr>\n<tr class=\"separator:a3f357c08f2dbbffba1ea4fe7775fa904\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3e97671503bfb6e6e07d1c161a4839e\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"ac3e97671503bfb6e6e07d1c161a4839e\"></a>\ntemplate&lt;class Scalar , int A, int B, int C, int D, int E&gt; </td></tr>\n<tr class=\"memitem:ac3e97671503bfb6e6e07d1c161a4839e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, Eigen::Matrix&lt; Scalar, A, B, C, D, E &gt; &amp;M)</td></tr>\n<tr class=\"separator:ac3e97671503bfb6e6e07d1c161a4839e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a457971c649e7da965c6c2881df127297\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a457971c649e7da965c6c2881df127297\"></a>\ntemplate&lt;class Scalar , int B, int C, int D, int E&gt; </td></tr>\n<tr class=\"memitem:a457971c649e7da965c6c2881df127297\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, Eigen::Matrix&lt; Scalar, Eigen::Dynamic, B, C, D, E &gt; &amp;M)</td></tr>\n<tr class=\"separator:a457971c649e7da965c6c2881df127297\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0684d35bf9d0fe5f61160472421cee85\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a0684d35bf9d0fe5f61160472421cee85\"></a>\ntemplate&lt;class Scalar , int A, int C, int D, int E&gt; </td></tr>\n<tr class=\"memitem:a0684d35bf9d0fe5f61160472421cee85\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, Eigen::Matrix&lt; Scalar, A, Eigen::Dynamic, C, D, E &gt; &amp;M)</td></tr>\n<tr class=\"separator:a0684d35bf9d0fe5f61160472421cee85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d4e34f65120d3af4ffc2d4009e49eb8\"><td class=\"memTemplParams\" colspan=\"2\"><a id=\"a4d4e34f65120d3af4ffc2d4009e49eb8\"></a>\ntemplate&lt;class Scalar , int C, int D, int E&gt; </td></tr>\n<tr class=\"memitem:a4d4e34f65120d3af4ffc2d4009e49eb8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, Eigen::Matrix&lt; Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D, E &gt; &amp;M)</td></tr>\n<tr class=\"separator:a4d4e34f65120d3af4ffc2d4009e49eb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"yaml-serialization-eigen_8h_source.html\">yaml-serialization-eigen.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">convert&lt; std::queue&lt; ValueType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, std::queue&lt; ValueType &gt; &amp;queue) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const std::queue&lt; ValueType &gt; &amp;queue) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; std::queue&lt; ValueType &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">convert&lt; std::queue&lt; ValueType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::queue&lt; ValueType &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a3f823217f21812ce862990f259810742\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3f823217f21812ce862990f259810742\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const std::queue&lt; ValueType &gt; &amp;queue)</td></tr>\n<tr class=\"separator:a3f823217f21812ce862990f259810742\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80b02f71e3b9ed1857870b611531b07e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80b02f71e3b9ed1857870b611531b07e\"></a>\nstatic bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, std::queue&lt; ValueType &gt; &amp;queue)</td></tr>\n<tr class=\"separator:a80b02f71e3b9ed1857870b611531b07e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"yaml-serialization_8h_source.html\">yaml-serialization.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd\">decode</a>(const Node &amp;node, std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &amp;camera)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &amp;camera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::CameraGeometryBase &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a5cee079a734cf54c9adeed0c59bed5cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4_01_4.html#a5cee079a734cf54c9adeed0c59bed5cd\">decode</a> (const Node &amp;node, std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &gt; &amp;camera)</td></tr>\n<tr class=\"separator:a5cee079a734cf54c9adeed0c59bed5cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1b25560133c26d0b9f2a3b6406b9b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac1b25560133c26d0b9f2a3b6406b9b6e\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &gt; &amp;camera)</td></tr>\n<tr class=\"separator:ac1b25560133c26d0b9f2a3b6406b9b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5cee079a734cf54c9adeed0c59bed5cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cee079a734cf54c9adeed0c59bed5cd\">&#9670;&nbsp;</a></span>decode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool YAML::convert&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &gt; &gt;::decode </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Node &amp;&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>camera</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>This function will attempt to parse a camera from the yaml node. By default, yaml-cpp will throw and exception if the parsing fails. This function was written to <em>not</em> throw exceptions. Hence, decode always returns true, but when it fails, the shared pointer will be null. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/yaml/<a class=\"el\" href=\"camera-yaml-serialization_8h_source.html\">camera-yaml-serialization.h</a></li>\n<li>svo_vikit/vikit_cameras/src/camera_yaml_serialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228\">decode</a>(const Node &amp;node, std::shared_ptr&lt; vk::cameras::NCamera &gt; &amp;ncamera)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const std::shared_ptr&lt; vk::cameras::NCamera &gt; &amp;ncamera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html\">convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::shared_ptr&lt; vk::cameras::NCamera &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a028d37752a01f283b1631a716c821228\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1shared__ptr_3_01vk_1_1cameras_1_1NCamera_01_4_01_4.html#a028d37752a01f283b1631a716c821228\">decode</a> (const Node &amp;node, std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &gt; &amp;ncamera)</td></tr>\n<tr class=\"separator:a028d37752a01f283b1631a716c821228\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe7067969294b11b0e91e4de7b0ff4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9fe7067969294b11b0e91e4de7b0ff4f\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &gt; &amp;ncamera)</td></tr>\n<tr class=\"separator:a9fe7067969294b11b0e91e4de7b0ff4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a028d37752a01f283b1631a716c821228\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a028d37752a01f283b1631a716c821228\">&#9670;&nbsp;</a></span>decode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool YAML::convert&lt; std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &gt; &gt;::decode </td>\n          <td>(</td>\n          <td class=\"paramtype\">const Node &amp;&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::shared_ptr&lt; <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>ncamera</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<p>This function will attempt to parse an ncamera from the yaml node. By default, yaml-cpp will throw an exception if the parsing fails. This function was written to <em>not</em> throw exceptions. Hence, decode always returns true, but when it fails, the shared pointer will be null. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/yaml/<a class=\"el\" href=\"ncamera-yaml-serialization_8h_source.html\">ncamera-yaml-serialization.h</a></li>\n<li>svo_vikit/vikit_cameras/src/ncamera_yaml_serialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, std::unordered_map&lt; KeyType, ValueType &gt; &amp;map) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const std::unordered_map&lt; KeyType, ValueType &gt; &amp;map) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::unordered_map&lt; KeyType, ValueType &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a48f852f2faaa5b8bbd0cbbf66dd46f13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48f852f2faaa5b8bbd0cbbf66dd46f13\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const std::unordered_map&lt; KeyType, ValueType &gt; &amp;map)</td></tr>\n<tr class=\"separator:a48f852f2faaa5b8bbd0cbbf66dd46f13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d20667df5c265be109d9176ea3bd74b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d20667df5c265be109d9176ea3bd74b\"></a>\nstatic bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, std::unordered_map&lt; KeyType, ValueType &gt; &amp;map)</td></tr>\n<tr class=\"separator:a2d20667df5c265be109d9176ea3bd74b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"yaml-serialization_8h_source.html\">yaml-serialization.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, std::unordered_set&lt; KeyType &gt; &amp;set) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const std::unordered_set&lt; KeyType &gt; &amp;set) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">convert&lt; std::unordered_set&lt; KeyType &gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; std::unordered_set&lt; KeyType &gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a6ba5e13f6ddcb5ece33a479f2fa99dd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6ba5e13f6ddcb5ece33a479f2fa99dd6\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const std::unordered_set&lt; KeyType &gt; &amp;set)</td></tr>\n<tr class=\"separator:a6ba5e13f6ddcb5ece33a479f2fa99dd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9adc9a19fe484e1c87a47902e11fba73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9adc9a19fe484e1c87a47902e11fba73\"></a>\nstatic bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, std::unordered_set&lt; KeyType &gt; &amp;set)</td></tr>\n<tr class=\"separator:a9adc9a19fe484e1c87a47902e11fba73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"yaml-serialization_8h_source.html\">yaml-serialization.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">convert&lt; vk::cameras::CameraGeometryBase &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, vk::cameras::CameraGeometryBase &amp;camera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const vk::cameras::CameraGeometryBase &amp;camera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; vk::cameras::CameraGeometryBase &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4.html\">convert&lt; vk::cameras::CameraGeometryBase &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1CameraGeometryBase_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; vk::cameras::CameraGeometryBase &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a5e4a96fde4007adb29fe8268865994f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5e4a96fde4007adb29fe8268865994f4\"></a>\nstatic bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &amp;camera)</td></tr>\n<tr class=\"separator:a5e4a96fde4007adb29fe8268865994f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb138978b1fbe259a42eccb1dd910813\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afb138978b1fbe259a42eccb1dd910813\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1CameraGeometryBase.html\">vk::cameras::CameraGeometryBase</a> &amp;camera)</td></tr>\n<tr class=\"separator:afb138978b1fbe259a42eccb1dd910813\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/yaml/<a class=\"el\" href=\"camera-yaml-serialization_8h_source.html\">camera-yaml-serialization.h</a></li>\n<li>svo_vikit/vikit_cameras/src/camera_yaml_serialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">convert&lt; vk::cameras::NCamera &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; vk::cameras::NCamera &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">YAML::convert&lt; vk::cameras::NCamera &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>decode</b>(const Node &amp;node, vk::cameras::NCamera &amp;ncamera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">YAML::convert&lt; vk::cameras::NCamera &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">YAML::convert&lt; vk::cameras::NCamera &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>encode</b>(const vk::cameras::NCamera &amp;ncamera) (defined in <a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">YAML::convert&lt; vk::cameras::NCamera &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">YAML::convert&lt; vk::cameras::NCamera &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: YAML::convert&lt; vk::cameras::NCamera &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>YAML</b></li><li class=\"navelem\"><a class=\"el\" href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4.html\">convert&lt; vk::cameras::NCamera &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"structYAML_1_1convert_3_01vk_1_1cameras_1_1NCamera_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">YAML::convert&lt; vk::cameras::NCamera &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ae49aad0f94895e846cee3dd92ed49c92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae49aad0f94895e846cee3dd92ed49c92\"></a>\nstatic bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>decode</b> (const Node &amp;node, <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &amp;ncamera)</td></tr>\n<tr class=\"separator:ae49aad0f94895e846cee3dd92ed49c92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45c013e3221bc94a12fb112280d8bb18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a45c013e3221bc94a12fb112280d8bb18\"></a>\nstatic Node&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>encode</b> (const <a class=\"el\" href=\"classvk_1_1cameras_1_1NCamera.html\">vk::cameras::NCamera</a> &amp;ncamera)</td></tr>\n<tr class=\"separator:a45c013e3221bc94a12fb112280d8bb18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/yaml/<a class=\"el\" href=\"ncamera-yaml-serialization_8h_source.html\">ncamera-yaml-serialization.h</a></li>\n<li>svo_vikit/vikit_cameras/src/ncamera_yaml_serialization.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1Aligned-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1Aligned.html\">Aligned</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::Aligned&lt; Container, Type &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1Aligned.html\">aslam::Aligned&lt; Container, Type &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1Aligned.html\">aslam::Aligned&lt; Container, Type &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1Aligned.html\">aslam::Aligned&lt; Container, Type &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1Aligned.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::Aligned&lt; Container, Type &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1Aligned.html\">Aligned</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1Aligned-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::Aligned&lt; Container, Type &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a5abcca6a6a58c1565f957b82906a1018\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5abcca6a6a58c1565f957b82906a1018\"></a>\ntypedef Container&lt; Type, Eigen::aligned_allocator&lt; Type &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:a5abcca6a6a58c1565f957b82906a1018\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"memory_8h_source.html\">memory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1AlignedMap-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">AlignedMap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::AlignedMap&lt; KeyType, ValueType &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">aslam::AlignedMap&lt; KeyType, ValueType &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">aslam::AlignedMap&lt; KeyType, ValueType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">aslam::AlignedMap&lt; KeyType, ValueType &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1AlignedMap.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::AlignedMap&lt; KeyType, ValueType &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1AlignedMap.html\">AlignedMap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1AlignedMap-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::AlignedMap&lt; KeyType, ValueType &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a3c3833e02086bbab9251c470e4ed25c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3c3833e02086bbab9251c470e4ed25c4\"></a>\ntypedef std::map&lt; KeyType, ValueType, std::less&lt; KeyType &gt;, Eigen::aligned_allocator&lt; std::pair&lt; const KeyType, ValueType &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:a3c3833e02086bbab9251c470e4ed25c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"memory_8h_source.html\">memory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1AlignedUnorderedMap-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">AlignedUnorderedMap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1AlignedUnorderedMap.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1AlignedUnorderedMap.html\">AlignedUnorderedMap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1AlignedUnorderedMap-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::AlignedUnorderedMap&lt; KeyType, ValueType &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a190227ca55de3856986abd08e2369b7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a190227ca55de3856986abd08e2369b7d\"></a>\ntypedef std::unordered_map&lt; KeyType, ValueType, std::hash&lt; KeyType &gt;, std::equal_to&lt; KeyType &gt;, Eigen::aligned_allocator&lt; std::pair&lt; const KeyType, ValueType &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:a190227ca55de3856986abd08e2369b7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"memory_8h_source.html\">memory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumDiffFunctor-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>functional</b>(const typename NumDiffFunctor::InputType &amp;x, typename NumDiffFunctor::ValueType &amp;fvec, typename NumDiffFunctor::JacobianType *Jout) const =0 (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getJacobian</b>(const InputType &amp;x, JacobianType *out_jacobian) const (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>InputsAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>InputType</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>JacobianType</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>NumDiffFunctor</b>() (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator()</b>(const InputType &amp;x, ValueType &amp;fvec) const (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Scalar</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ValuesAtCompileTime</b> enum value (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ValueType</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~NumDiffFunctor</b>() (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumDiffFunctor.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumDiffFunctor.html\">NumDiffFunctor</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"structaslam_1_1common_1_1NumDiffFunctor-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumDiffFunctor&lt; NY, NX, _Scalar &gt; Struct Template Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a9c767d46f3a153bc9d2f7a1c0fa0cc81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9c767d46f3a153bc9d2f7a1c0fa0cc81\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <b>InputsAtCompileTime</b> = NX, \n<b>ValuesAtCompileTime</b> = NY\n }</td></tr>\n<tr class=\"separator:a9c767d46f3a153bc9d2f7a1c0fa0cc81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a091f3839dac761aa7d8478fa3efb7a24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a091f3839dac761aa7d8478fa3efb7a24\"></a>\ntypedef _Scalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Scalar</b></td></tr>\n<tr class=\"separator:a091f3839dac761aa7d8478fa3efb7a24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88a27bd266430ea7b0608a0ffe460e48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88a27bd266430ea7b0608a0ffe460e48\"></a>\ntypedef Eigen::Matrix&lt; Scalar, InputsAtCompileTime, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>InputType</b></td></tr>\n<tr class=\"separator:a88a27bd266430ea7b0608a0ffe460e48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a287b6069ec491ee8876d8729d83ac080\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a287b6069ec491ee8876d8729d83ac080\"></a>\ntypedef Eigen::Matrix&lt; Scalar, ValuesAtCompileTime, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ValueType</b></td></tr>\n<tr class=\"separator:a287b6069ec491ee8876d8729d83ac080\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6403aa778221cefd6257750a04214f7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6403aa778221cefd6257750a04214f7a\"></a>\ntypedef Eigen::Matrix&lt; Scalar, ValuesAtCompileTime, InputsAtCompileTime &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>JacobianType</b></td></tr>\n<tr class=\"separator:a6403aa778221cefd6257750a04214f7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab75478480b774f2ca9533470e6a18a4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab75478480b774f2ca9533470e6a18a4c\"></a>\nvirtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>functional</b> (const typename NumDiffFunctor::InputType &amp;x, typename NumDiffFunctor::ValueType &amp;fvec, typename NumDiffFunctor::JacobianType *Jout) const =0</td></tr>\n<tr class=\"separator:ab75478480b774f2ca9533470e6a18a4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65138cad5004f9a8fae1d516b58296ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a65138cad5004f9a8fae1d516b58296ea\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator()</b> (const InputType &amp;x, ValueType &amp;fvec) const</td></tr>\n<tr class=\"separator:a65138cad5004f9a8fae1d516b58296ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff9fdd76991617aac153a6a89c6cf404\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aff9fdd76991617aac153a6a89c6cf404\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getJacobian</b> (const InputType &amp;x, JacobianType *out_jacobian) const</td></tr>\n<tr class=\"separator:aff9fdd76991617aac153a6a89c6cf404\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraits-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">NumericalDiffTraits</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraits.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraits.html\">NumericalDiffTraits</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1common_1_1NumericalDiffTraits-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraits&lt; _Functor, mode &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aebd9adf34b4070ada733f84d1a97bb30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aebd9adf34b4070ada733f84d1a97bb30\"></a>\ntypedef <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a>&lt; _Functor, mode, _Functor::InputsAtCompileTime &gt;::<a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:aebd9adf34b4070ada733f84d1a97bb30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraitsSelector-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraitsSelector.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector.html\">NumericalDiffTraitsSelector</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, ValuesAtCompileTime &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ab383c204bdd214ed122647923d5a9b88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab383c204bdd214ed122647923d5a9b88\"></a>\ntypedef <a class=\"el\" href=\"classaslam_1_1common_1_1NumericalDiff.html\">NumericalDiff</a>&lt; _Functor, mode &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:ab383c204bdd214ed122647923d5a9b88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> typedef (defined in <a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>aslam</b></li><li class=\"navelem\"><b>common</b></li><li class=\"navelem\"><a class=\"el\" href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4.html\">NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"structaslam_1_1common_1_1NumericalDiffTraitsSelector_3_01__Functor_00_01mode_00_010_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">aslam::common::NumericalDiffTraitsSelector&lt; _Functor, mode, 0 &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a37d67f4d1405132d21405c9adefe9dfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a37d67f4d1405132d21405c9adefe9dfd\"></a>\ntypedef <a class=\"el\" href=\"classaslam_1_1common_1_1ZeroNumericalDiff.html\">ZeroNumericalDiff</a>&lt; _Functor, mode &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:a37d67f4d1405132d21405c9adefe9dfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/aslam/common/<a class=\"el\" href=\"numdiff-jacobian-tester_8h_source.html\">numdiff-jacobian-tester.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structcv_1_1HomographyDecomposition_1_1__CameraMotion-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">_CameraMotion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::_CameraMotion Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">cv::HomographyDecomposition::_CameraMotion</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a></td><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">cv::HomographyDecomposition::_CameraMotion</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a></td><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">cv::HomographyDecomposition::_CameraMotion</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a></td><td class=\"entry\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">cv::HomographyDecomposition::_CameraMotion</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structcv_1_1HomographyDecomposition_1_1__CameraMotion.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: cv::HomographyDecomposition::_CameraMotion Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>cv</b></li><li class=\"navelem\"><b>HomographyDecomposition</b></li><li class=\"navelem\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html\">_CameraMotion</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">cv::HomographyDecomposition::_CameraMotion Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aa29316accee94975abdb4fadb3e6b1c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa29316accee94975abdb4fadb3e6b1c5\"></a>\ncv::Matx33d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#aa29316accee94975abdb4fadb3e6b1c5\">R</a></td></tr>\n<tr class=\"memdesc:aa29316accee94975abdb4fadb3e6b1c5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">rotation matrix <br /></td></tr>\n<tr class=\"separator:aa29316accee94975abdb4fadb3e6b1c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9bc3b2afb4cf0f5250a207e09f3b98b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab9bc3b2afb4cf0f5250a207e09f3b98b\"></a>\ncv::Vec3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#ab9bc3b2afb4cf0f5250a207e09f3b98b\">n</a></td></tr>\n<tr class=\"memdesc:ab9bc3b2afb4cf0f5250a207e09f3b98b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">normal of the plane the camera is looking at <br /></td></tr>\n<tr class=\"separator:ab9bc3b2afb4cf0f5250a207e09f3b98b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f876052e07dd5efd69a15db1f99e761\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5f876052e07dd5efd69a15db1f99e761\"></a>\ncv::Vec3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structcv_1_1HomographyDecomposition_1_1__CameraMotion.html#a5f876052e07dd5efd69a15db1f99e761\">t</a></td></tr>\n<tr class=\"memdesc:a5f876052e07dd5efd69a15db1f99e761\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">translation vector <br /></td></tr>\n<tr class=\"separator:a5f876052e07dd5efd69a15db1f99e761\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"homography__decomp_8h_source.html\">homography_decomp.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>std</b></li><li class=\"navelem\"><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt; Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator()</b>(const std::function&lt; void(CallbackArgs...)&gt; &amp;x) const (defined in <a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>std</b></li><li class=\"navelem\"><a class=\"el\" href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4.html\">hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt;</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"structstd_1_1hash_3_01std_1_1function_3_01void_07CallbackArgs_8_8_8_08_4_01_4-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">std::hash&lt; std::function&lt; void(CallbackArgs...)&gt; &gt; Struct Template Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa278639248b43fc9db614f70da45b5cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa278639248b43fc9db614f70da45b5cc\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator()</b> (const std::function&lt; void(CallbackArgs...)&gt; &amp;x) const</td></tr>\n<tr class=\"separator:aa278639248b43fc9db614f70da45b5cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/rpg_common/<a class=\"el\" href=\"callback__host_8h_source.html\">callback_host.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1BackendInterfaceOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendInterfaceOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>add_imu_factors</b> (defined in <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">isam_wait_time_ms</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>min_num_obs</b> (defined in <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>n_frames_in_init_ba</b> (defined in <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_dir</b> (defined in <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>use_smart_factors</b> (defined in <a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">svo::BackendInterfaceOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1BackendInterfaceOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BackendInterfaceOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html\">BackendInterfaceOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1BackendInterfaceOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BackendInterfaceOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::BackendInterfaceOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1BackendInterfaceOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BackendInterfaceOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2ed6c2695403b1ef0076a632f55f1b03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ed6c2695403b1ef0076a632f55f1b03\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_dir</b> = &quot;/tmp&quot;</td></tr>\n<tr class=\"separator:a2ed6c2695403b1ef0076a632f55f1b03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80931a61a6c184c11b700a8e06b12d8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a80931a61a6c184c11b700a8e06b12d8f\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BackendInterfaceOptions.html#a80931a61a6c184c11b700a8e06b12d8f\">isam_wait_time_ms</a> = 2</td></tr>\n<tr class=\"memdesc:a80931a61a6c184c11b700a8e06b12d8f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Time we wait for iSAM to release lock. <br /></td></tr>\n<tr class=\"separator:a80931a61a6c184c11b700a8e06b12d8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07080c30763e3d6c94d2aabdfcbce9f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a07080c30763e3d6c94d2aabdfcbce9f5\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>add_imu_factors</b> = false</td></tr>\n<tr class=\"separator:a07080c30763e3d6c94d2aabdfcbce9f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd53294a6532437894675fcf46b3d598\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abd53294a6532437894675fcf46b3d598\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_frames_in_init_ba</b> = 8u</td></tr>\n<tr class=\"separator:abd53294a6532437894675fcf46b3d598\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdced689ddb78ab1ca1df2a323c174c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afdced689ddb78ab1ca1df2a323c174c9\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>use_smart_factors</b> = false</td></tr>\n<tr class=\"separator:afdced689ddb78ab1ca1df2a323c174c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca533cb4ed031a4422297465a0c97b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2ca533cb4ed031a4422297465a0c97b5\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_num_obs</b> = 2u</td></tr>\n<tr class=\"separator:a2ca533cb4ed031a4422297465a0c97b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"backend__interface_8h_source.html\">backend_interface.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1BackendInterfaceOptions__coll__graph.md5",
    "content": "9aa484c18713aad0bc4926cdefd7c827"
  },
  {
    "path": "docs/structsvo_1_1BaseOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BaseOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3\">img_align_est_illumination_gain</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>img_align_est_illumination_offset</b> (defined in <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764\">img_align_max_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5\">img_align_max_num_features</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f\">img_align_min_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57\">img_align_prior_lambda_rot</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020\">img_align_prior_lambda_trans</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6\">img_align_robustification</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b\">img_align_use_distortion_jacobian</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc\">init_map_scale</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4\">init_use_att_and_depth</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f\">kfselect_criterion</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea\">kfselect_min_angle</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>kfselect_min_disparity</b> (defined in <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde\">kfselect_min_dist</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe\">kfselect_min_dist_metric</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>kfselect_min_num_frames_between_kfs</b> (defined in <a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1\">kfselect_numkfs_lower_thresh</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8\">kfselect_numkfs_upper_thresh</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">max_n_kfs</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70\">poseoptim_prior_lambda</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed\">poseoptim_thresh</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310\">poseoptim_using_unit_sphere</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6\">quality_max_fts_drop</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0\">quality_min_fts</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe\">relocalization_max_trials</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225\">structure_optimization_max_pts</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857\">trace_dir</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9\">update_seeds_with_old_keyframes</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5\">use_async_reprojectors</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c\">use_imu</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">svo::BaseOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1BaseOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::BaseOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html\">BaseOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1BaseOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::BaseOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Options for base frame handler module. Sets tracing and quality options.  \n <a href=\"structsvo_1_1BaseOptions.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"frame__handler__base_8h_source.html\">frame_handler_base.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::BaseOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1BaseOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1BaseOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a130a6c1435bc84c6ff7d1c3cbdab0b7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">max_n_kfs</a> = 10</td></tr>\n<tr class=\"separator:a130a6c1435bc84c6ff7d1c3cbdab0b7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac51592f2afb2136eabdfd62cdacef49f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">KeyframeCriterion</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac51592f2afb2136eabdfd62cdacef49f\">kfselect_criterion</a> = KeyframeCriterion::DOWNLOOKING</td></tr>\n<tr class=\"separator:ac51592f2afb2136eabdfd62cdacef49f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac44f60b4f19dd897b6b0144e6780ccde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac44f60b4f19dd897b6b0144e6780ccde\">kfselect_min_dist</a> = 0.12</td></tr>\n<tr class=\"separator:ac44f60b4f19dd897b6b0144e6780ccde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fc098c6d24d453a7300d40533016aa8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5fc098c6d24d453a7300d40533016aa8\">kfselect_numkfs_upper_thresh</a> = 110</td></tr>\n<tr class=\"separator:a5fc098c6d24d453a7300d40533016aa8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac87ca5ab77baacc9d454419669d9c0f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac87ca5ab77baacc9d454419669d9c0f1\">kfselect_numkfs_lower_thresh</a> = 80</td></tr>\n<tr class=\"separator:ac87ca5ab77baacc9d454419669d9c0f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a778ae57ced870355f6beeb26c20bbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a8a778ae57ced870355f6beeb26c20bbe\">kfselect_min_dist_metric</a> = 0.5</td></tr>\n<tr class=\"separator:a8a778ae57ced870355f6beeb26c20bbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb5b350c9f44c6c54d64e27dd6d48eea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abb5b350c9f44c6c54d64e27dd6d48eea\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb5b350c9f44c6c54d64e27dd6d48eea\">kfselect_min_angle</a> = 5.0</td></tr>\n<tr class=\"memdesc:abb5b350c9f44c6c54d64e27dd6d48eea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Keyframe selection for FORWARD: Minimum angle in degrees to closest KF. <br /></td></tr>\n<tr class=\"separator:abb5b350c9f44c6c54d64e27dd6d48eea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97c2180b9d3c9747eb404d3094950dd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a97c2180b9d3c9747eb404d3094950dd6\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kfselect_min_num_frames_between_kfs</b> = 2</td></tr>\n<tr class=\"separator:a97c2180b9d3c9747eb404d3094950dd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a419b249a570d27438950f9207b01d67e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a419b249a570d27438950f9207b01d67e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>kfselect_min_disparity</b> = -1</td></tr>\n<tr class=\"separator:a419b249a570d27438950f9207b01d67e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b22ae5553bab24a0899ed34437206fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a7b22ae5553bab24a0899ed34437206fc\">init_map_scale</a> = 1.0</td></tr>\n<tr class=\"separator:a7b22ae5553bab24a0899ed34437206fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b0375b8400b5bf396f561d54a22a1f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b0375b8400b5bf396f561d54a22a1f4\">init_use_att_and_depth</a> = false</td></tr>\n<tr class=\"separator:a5b0375b8400b5bf396f561d54a22a1f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5920cbcb00a12a82702e124b2cfd764\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab5920cbcb00a12a82702e124b2cfd764\">img_align_max_level</a> = 4</td></tr>\n<tr class=\"separator:ab5920cbcb00a12a82702e124b2cfd764\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dbaed5604782d85db44b8a8f8c35e7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0dbaed5604782d85db44b8a8f8c35e7f\">img_align_min_level</a> = 2</td></tr>\n<tr class=\"separator:a0dbaed5604782d85db44b8a8f8c35e7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb6afaacd08fe6036ced4ed2e55a82a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abb6afaacd08fe6036ced4ed2e55a82a6\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#abb6afaacd08fe6036ced4ed2e55a82a6\">img_align_robustification</a> = false</td></tr>\n<tr class=\"memdesc:abb6afaacd08fe6036ced4ed2e55a82a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">control whether to use robustification in image alignment <br /></td></tr>\n<tr class=\"separator:abb6afaacd08fe6036ced4ed2e55a82a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a532dbaa5142feae1beadf831cf519d57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a532dbaa5142feae1beadf831cf519d57\">img_align_prior_lambda_rot</a> = 0.0</td></tr>\n<tr class=\"separator:a532dbaa5142feae1beadf831cf519d57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8bd21ea64d2c7c566669b1612bc0020\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ae8bd21ea64d2c7c566669b1612bc0020\">img_align_prior_lambda_trans</a> = 0.0</td></tr>\n<tr class=\"separator:ae8bd21ea64d2c7c566669b1612bc0020\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370f5c535eb387d01020a67df69f13f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a370f5c535eb387d01020a67df69f13f5\">img_align_max_num_features</a> = 0</td></tr>\n<tr class=\"separator:a370f5c535eb387d01020a67df69f13f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab27fde0e7cdb7befd7e57c379bb2c40b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ab27fde0e7cdb7befd7e57c379bb2c40b\">img_align_use_distortion_jacobian</a> = false</td></tr>\n<tr class=\"separator:ab27fde0e7cdb7befd7e57c379bb2c40b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b4aedac547d412a6384fdab2458e3e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a3b4aedac547d412a6384fdab2458e3e3\">img_align_est_illumination_gain</a> = false</td></tr>\n<tr class=\"separator:a3b4aedac547d412a6384fdab2458e3e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09c4de9d3819fa1a62580a52c2787ba8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09c4de9d3819fa1a62580a52c2787ba8\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>img_align_est_illumination_offset</b> = false</td></tr>\n<tr class=\"separator:a09c4de9d3819fa1a62580a52c2787ba8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e9811010ab6eb25b9ffaed4c4aaeaed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5e9811010ab6eb25b9ffaed4c4aaeaed\">poseoptim_thresh</a> = 2.0</td></tr>\n<tr class=\"separator:a5e9811010ab6eb25b9ffaed4c4aaeaed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac94cdf774f9084bcb90be092c6082f70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac94cdf774f9084bcb90be092c6082f70\">poseoptim_prior_lambda</a> = 0.0</td></tr>\n<tr class=\"separator:ac94cdf774f9084bcb90be092c6082f70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af283b7730d83212bd179af6e83361310\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#af283b7730d83212bd179af6e83361310\">poseoptim_using_unit_sphere</a> = false</td></tr>\n<tr class=\"separator:af283b7730d83212bd179af6e83361310\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a512051ee55420bcb60e6441dfed45225\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a512051ee55420bcb60e6441dfed45225\">structure_optimization_max_pts</a> = 20</td></tr>\n<tr class=\"separator:a512051ee55420bcb60e6441dfed45225\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6187b58c18f41afd53908c9ff984857\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac6187b58c18f41afd53908c9ff984857\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ac6187b58c18f41afd53908c9ff984857\">trace_dir</a> = &quot;/tmp&quot;</td></tr>\n<tr class=\"memdesc:ac6187b58c18f41afd53908c9ff984857\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Location where the tracefile is saved. <br /></td></tr>\n<tr class=\"separator:ac6187b58c18f41afd53908c9ff984857\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b72719ca8505084ee641ee4de8738f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a5b72719ca8505084ee641ee4de8738f0\">quality_min_fts</a> = 50</td></tr>\n<tr class=\"separator:a5b72719ca8505084ee641ee4de8738f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bae5bf6d65121964c504148bb5317d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a1bae5bf6d65121964c504148bb5317d6\">quality_max_fts_drop</a> = 40</td></tr>\n<tr class=\"separator:a1bae5bf6d65121964c504148bb5317d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a511f735f4054da8e384ac142f61790fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a511f735f4054da8e384ac142f61790fe\">relocalization_max_trials</a> = 100</td></tr>\n<tr class=\"separator:a511f735f4054da8e384ac142f61790fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad88e51b5c46babc27def92917729a65c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad88e51b5c46babc27def92917729a65c\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#ad88e51b5c46babc27def92917729a65c\">use_imu</a> = false</td></tr>\n<tr class=\"memdesc:ad88e51b5c46babc27def92917729a65c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Should IMU measurements be used. <br /></td></tr>\n<tr class=\"separator:ad88e51b5c46babc27def92917729a65c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f60d310c161a41a6d19fb25dc5d13f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0f60d310c161a41a6d19fb25dc5d13f9\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a0f60d310c161a41a6d19fb25dc5d13f9\">update_seeds_with_old_keyframes</a> = false</td></tr>\n<tr class=\"memdesc:a0f60d310c161a41a6d19fb25dc5d13f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Update seeds with old keyframes. <br /></td></tr>\n<tr class=\"separator:a0f60d310c161a41a6d19fb25dc5d13f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a246f7f519a61427cd1bdf64fed8aa7f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a246f7f519a61427cd1bdf64fed8aa7f5\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1BaseOptions.html#a246f7f519a61427cd1bdf64fed8aa7f5\">use_async_reprojectors</a> = false</td></tr>\n<tr class=\"memdesc:a246f7f519a61427cd1bdf64fed8aa7f5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">EXPERIMENTAL Asynchronous reprojection (for multi-camera svo) <br /></td></tr>\n<tr class=\"separator:a246f7f519a61427cd1bdf64fed8aa7f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Options for base frame handler module. Sets tracing and quality options. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a3b4aedac547d412a6384fdab2458e3e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b4aedac547d412a6384fdab2458e3e3\">&#9670;&nbsp;</a></span>img_align_est_illumination_gain</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::BaseOptions::img_align_est_illumination_gain = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Estimate an affine transformation for illumination/exposure change. If you observe bad tracking because of illumination/exposure change, enabling these parameters might help. Normally it is OK to leave them as default. </p>\n\n</div>\n</div>\n<a id=\"ab5920cbcb00a12a82702e124b2cfd764\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5920cbcb00a12a82702e124b2cfd764\">&#9670;&nbsp;</a></span>img_align_max_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::img_align_max_level = 4</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) During sparse image alignment (see [1]), we find the pose relative to the last frame by minimizing the photometric error between the frames. This KLT-style optimizer is pyramidal to allow more motion between two frames. Depending on the image size, you should increase this value. For images of the size 640x480 we set this value to 4. If your image is double the resolution, increase to 5, and so on. </p>\n\n</div>\n</div>\n<a id=\"a370f5c535eb387d01020a67df69f13f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a370f5c535eb387d01020a67df69f13f5\">&#9670;&nbsp;</a></span>img_align_max_num_features</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::img_align_max_num_features = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>If you choose to extract many features then sparse image alignment may become too slow. You can limit the number of features for this step with this parameter to randomly sample N features that are used for alignment. </p>\n\n</div>\n</div>\n<a id=\"a0dbaed5604782d85db44b8a8f8c35e7f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0dbaed5604782d85db44b8a8f8c35e7f\">&#9670;&nbsp;</a></span>img_align_min_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::img_align_min_level = 2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) During sparse image alignment, we stop optimizing at this level for efficiency reasons. If you have the time, you can go down to the zero'th level. Depending on the image size, you should increase this value. For images of the size 640x480 we set this value to 2. If your image is double the resolution, increase to 3, and so on. </p>\n\n</div>\n</div>\n<a id=\"a532dbaa5142feae1beadf831cf519d57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a532dbaa5142feae1beadf831cf519d57\">&#9670;&nbsp;</a></span>img_align_prior_lambda_rot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::img_align_prior_lambda_rot = 0.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>If you are using a gyroscope and provide an attitude estimate together with the image in the function addImage() then this parameter specifies how much you trust your gyroscope. If you set it to 2.0 (default) it means that the gyroscope attitude is valued two times more than the actualy orientation estimate from the visual measurements. </p>\n\n</div>\n</div>\n<a id=\"ae8bd21ea64d2c7c566669b1612bc0020\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8bd21ea64d2c7c566669b1612bc0020\">&#9670;&nbsp;</a></span>img_align_prior_lambda_trans</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::img_align_prior_lambda_trans = 0.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Internally, we have a very basic constant velocity motion model. similarly to lambda_rot, this parameter trades-off the visual measurements with the constant velocity prior. By default this weight is way below 1. </p>\n\n</div>\n</div>\n<a id=\"ab27fde0e7cdb7befd7e57c379bb2c40b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab27fde0e7cdb7befd7e57c379bb2c40b\">&#9670;&nbsp;</a></span>img_align_use_distortion_jacobian</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::BaseOptions::img_align_use_distortion_jacobian = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Whether or not to include the distortion when calculating the jacobian. For small FoV pinhole projection, it is safe to leave it as false. For fisheye lens, set this to true. </p>\n\n</div>\n</div>\n<a id=\"a7b22ae5553bab24a0899ed34437206fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b22ae5553bab24a0899ed34437206fc\">&#9670;&nbsp;</a></span>init_map_scale</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::init_map_scale = 1.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>By default, when the VO initializes, it sets the average depth to this value. This is because from monocular views, we can't estimate the scale. If you initialize SVO with a downward-looking camera at 1.5m height over a flat surface, then set this value to 1.5 and the resulting map will be approximately in the right scale. </p>\n\n</div>\n</div>\n<a id=\"a5b0375b8400b5bf396f561d54a22a1f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b0375b8400b5bf396f561d54a22a1f4\">&#9670;&nbsp;</a></span>init_use_att_and_depth</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::BaseOptions::init_use_att_and_depth = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>By default, the orientation of the first camera-frame is set to be the identity (camera facing in z-direction, camera-right is in x-direction, camera-down is in y-direction) and the map scale is initialized with the option init_map_scale. However, if you would like to provide another initial orientation and inital scene depth, then activate this flag. If activated, you need to provide attitude and depth measurements using the functions addAttitudeMeasurement(), addDepthMeasurement() in the base class. This option is useful for in-flight initialization of SVO. </p>\n\n</div>\n</div>\n<a id=\"ac51592f2afb2136eabdfd62cdacef49f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac51592f2afb2136eabdfd62cdacef49f\">&#9670;&nbsp;</a></span>kfselect_criterion</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacesvo.html#a96dffa3404d720ee055bec35ea8b0ecf\">KeyframeCriterion</a> svo::BaseOptions::kfselect_criterion = KeyframeCriterion::DOWNLOOKING</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Keyframe selection criterion: If we have a downlooking camera (e.g. on quadrotor), select DOWNLOOKING. Otherwise, select FORWARD. </p>\n\n</div>\n</div>\n<a id=\"ac44f60b4f19dd897b6b0144e6780ccde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac44f60b4f19dd897b6b0144e6780ccde\">&#9670;&nbsp;</a></span>kfselect_min_dist</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::kfselect_min_dist = 0.12</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) Parameter for DOWNLOOKING keyframe criterion. We select a new KF whenever we move kfselect_min_dist of the average depth away from the closest keyframe. </p>\n\n</div>\n</div>\n<a id=\"a8a778ae57ced870355f6beeb26c20bbe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a778ae57ced870355f6beeb26c20bbe\">&#9670;&nbsp;</a></span>kfselect_min_dist_metric</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::kfselect_min_dist_metric = 0.5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Keyframe selection for FORWARD : Minimum distance in meters (set initial scale!) before a new keyframe is selected. </p>\n\n</div>\n</div>\n<a id=\"ac87ca5ab77baacc9d454419669d9c0f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac87ca5ab77baacc9d454419669d9c0f1\">&#9670;&nbsp;</a></span>kfselect_numkfs_lower_thresh</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::kfselect_numkfs_lower_thresh = 80</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Keyframe selection for FORWARD : If we have less than this amount of features we always select a new keyframe. </p>\n\n</div>\n</div>\n<a id=\"a5fc098c6d24d453a7300d40533016aa8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fc098c6d24d453a7300d40533016aa8\">&#9670;&nbsp;</a></span>kfselect_numkfs_upper_thresh</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::kfselect_numkfs_upper_thresh = 110</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Keyframe selection for FORWARD: If we are tracking more than this amount of features, then we don't take a new keyframe. </p>\n\n</div>\n</div>\n<a id=\"a130a6c1435bc84c6ff7d1c3cbdab0b7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a130a6c1435bc84c6ff7d1c3cbdab0b7b\">&#9670;&nbsp;</a></span>max_n_kfs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::max_n_kfs = 10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>The VO only keeps a list of N keyframes in the map. If a new keyframe is selected, then one furthest away from the current position is removed Default is 10. Set to 0 if all keyframes should remain in the map. More keyframes may reduce drift but since no loop-closures are actively detected and closed it is not beneficial to accumulate all keyframes. </p>\n\n</div>\n</div>\n<a id=\"ac94cdf774f9084bcb90be092c6082f70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac94cdf774f9084bcb90be092c6082f70\">&#9670;&nbsp;</a></span>poseoptim_prior_lambda</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::poseoptim_prior_lambda = 0.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>This is the same parameter as img_align_prior_lambda_rot but for the pose optimization instead of the sparse image alignment. Only used if you provide gyroscope measurements. </p>\n\n</div>\n</div>\n<a id=\"a5e9811010ab6eb25b9ffaed4c4aaeaed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e9811010ab6eb25b9ffaed4c4aaeaed\">&#9670;&nbsp;</a></span>poseoptim_thresh</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::poseoptim_thresh = 2.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) This parameter is the reprojection error threshold during pose optimization. If the distance between a feature and the projected pixel position of the corresponding 3D point is further than this threshold appart (on the zero'th level pyramid), then the feature is removed from the frame. With a good camera and image resolution of 640x480 a threshold of 2.0 is typically ok. If you use shitty cameras (rolling shutter), higher resolution cameras, cameras with imperfect calibration etc. you might increase this threshold. But first, check the tracefile for the average reprojection threshold. We made the experice that with GoPro cameras, we had to increase this threshold. </p>\n\n</div>\n</div>\n<a id=\"af283b7730d83212bd179af6e83361310\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af283b7730d83212bd179af6e83361310\">&#9670;&nbsp;</a></span>poseoptim_using_unit_sphere</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::BaseOptions::poseoptim_using_unit_sphere = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>This parameter controls whether the pose optimizer works on:</p><ul>\n<li>unit plane: preferable for pinhole model</li>\n<li>unit sphere: omnidirectional camera model(e.g. fisheye, catadioptric) </li>\n</ul>\n\n</div>\n</div>\n<a id=\"a1bae5bf6d65121964c504148bb5317d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bae5bf6d65121964c504148bb5317d6\">&#9670;&nbsp;</a></span>quality_max_fts_drop</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int svo::BaseOptions::quality_max_fts_drop = 40</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>If from one frame to the other we suddenly track much less features, this can be an indication that something is wrong and we set the stage to STAGE_RELOCALIZING and the tracking quality to TRACKING_INSUFFICIENT. </p>\n\n</div>\n</div>\n<a id=\"a5b72719ca8505084ee641ee4de8738f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b72719ca8505084ee641ee4de8738f0\">&#9670;&nbsp;</a></span>quality_min_fts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::quality_min_fts = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Minimum number of features that should be tracked. If the number falls bellow then the stage is set to STAGE_RELOCALIZING and the tracking quality to TRACKING_INSUFFICIENT until we find more features again. </p>\n\n</div>\n</div>\n<a id=\"a511f735f4054da8e384ac142f61790fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a511f735f4054da8e384ac142f61790fe\">&#9670;&nbsp;</a></span>relocalization_max_trials</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::BaseOptions::relocalization_max_trials = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Once we are in relocalization mode, we allow a fixed number of images to try and relocalize before we reset() and set to STAGE_PAUSED. </p>\n\n</div>\n</div>\n<a id=\"a512051ee55420bcb60e6441dfed45225\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a512051ee55420bcb60e6441dfed45225\">&#9670;&nbsp;</a></span>structure_optimization_max_pts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int svo::BaseOptions::structure_optimization_max_pts = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>By default SVO does not do bundle adjustment but it optimizes the pose and the structure separately. This is not optimal but much faster. This parameters specifies how many 3D points should be randomly selected at every frame and be optimized. For speed reasons, we don't optimize all points at every iteration. Set to -1 if you want to do so anyway. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"frame__handler__base_8h_source.html\">frame_handler_base.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1BaseOptions__coll__graph.md5",
    "content": "48f52826236b4a0486cc62f2acc936ea"
  },
  {
    "path": "docs/structsvo_1_1Corner-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">Corner</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Corner Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">angle</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Corner</b>(int _x, int _y, float _score, int _level, float _angle) (defined in <a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">score</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">x</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">y</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">svo::Corner</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Corner.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Corner Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Corner.html\">Corner</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1Corner-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Corner Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Temporary container used for corner detection. Features are initialized from these.  \n <a href=\"structsvo_1_1Corner.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection__types_8h_source.html\">feature_detection_types.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a079b7eaadc4e9b3a5e37af6b6848c84e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a079b7eaadc4e9b3a5e37af6b6848c84e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Corner</b> (int _x, int _y, float _score, int _level, float _angle)</td></tr>\n<tr class=\"separator:a079b7eaadc4e9b3a5e37af6b6848c84e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a75fbd4204b8ecf066c6d6dd05190c750\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75fbd4204b8ecf066c6d6dd05190c750\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a75fbd4204b8ecf066c6d6dd05190c750\">x</a></td></tr>\n<tr class=\"memdesc:a75fbd4204b8ecf066c6d6dd05190c750\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">x-coordinate of corner in the image. <br /></td></tr>\n<tr class=\"separator:a75fbd4204b8ecf066c6d6dd05190c750\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57ac2e26bcc9c5158cf7b053a946feec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a57ac2e26bcc9c5158cf7b053a946feec\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a57ac2e26bcc9c5158cf7b053a946feec\">y</a></td></tr>\n<tr class=\"memdesc:a57ac2e26bcc9c5158cf7b053a946feec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">y-coordinate of corner in the image. <br /></td></tr>\n<tr class=\"separator:a57ac2e26bcc9c5158cf7b053a946feec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3613ebe6185f9b91a4fedac46e16f0a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3613ebe6185f9b91a4fedac46e16f0a4\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a3613ebe6185f9b91a4fedac46e16f0a4\">level</a></td></tr>\n<tr class=\"memdesc:a3613ebe6185f9b91a4fedac46e16f0a4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">pyramid level of the corner. <br /></td></tr>\n<tr class=\"separator:a3613ebe6185f9b91a4fedac46e16f0a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af63792f2b337df952c8b8bdea84cf12e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af63792f2b337df952c8b8bdea84cf12e\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html#af63792f2b337df952c8b8bdea84cf12e\">score</a></td></tr>\n<tr class=\"memdesc:af63792f2b337df952c8b8bdea84cf12e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">shi-tomasi score of the corner. <br /></td></tr>\n<tr class=\"separator:af63792f2b337df952c8b8bdea84cf12e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a75c8927268a974ceb7fb8438f4134eb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75c8927268a974ceb7fb8438f4134eb2\"></a>\nfloat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Corner.html#a75c8927268a974ceb7fb8438f4134eb2\">angle</a></td></tr>\n<tr class=\"memdesc:a75c8927268a974ceb7fb8438f4134eb2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">for gradient-features: dominant gradient angle. <br /></td></tr>\n<tr class=\"separator:a75c8927268a974ceb7fb8438f4134eb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Temporary container used for corner detection. Features are initialized from these. </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection__types_8h_source.html\">feature_detection_types.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DepthFilterOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilterOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>affine_est_gain</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">affine_est_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">max_n_seeds_per_frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">max_search_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">scan_epi_unit_sphere</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">seed_convergence_sigma2_thresh</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">update_3d_point</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">use_inverse_depth</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">use_threaded_depthfilter</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">verbose</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">svo::DepthFilterOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DepthFilterOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::DepthFilterOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html\">DepthFilterOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1DepthFilterOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilterOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Depth-filter config parameters.  \n <a href=\"structsvo_1_1DepthFilterOptions.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::DepthFilterOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1DepthFilterOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1DepthFilterOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a594f7085ecee05fdeaa42bcf85dec61c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a594f7085ecee05fdeaa42bcf85dec61c\">seed_convergence_sigma2_thresh</a> = 200.0</td></tr>\n<tr class=\"separator:a594f7085ecee05fdeaa42bcf85dec61c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc8be405bd4cfdcceb2440b43326def4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#afc8be405bd4cfdcceb2440b43326def4\">use_inverse_depth</a> = true</td></tr>\n<tr class=\"separator:afc8be405bd4cfdcceb2440b43326def4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51a0cbc8693e980d84264c6298570337\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a51a0cbc8693e980d84264c6298570337\">max_search_level</a> = 2</td></tr>\n<tr class=\"separator:a51a0cbc8693e980d84264c6298570337\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dea7a60bbe1a6aa589e15f127307df4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8dea7a60bbe1a6aa589e15f127307df4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a8dea7a60bbe1a6aa589e15f127307df4\">verbose</a> = false</td></tr>\n<tr class=\"memdesc:a8dea7a60bbe1a6aa589e15f127307df4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Show additional debug output. <br /></td></tr>\n<tr class=\"separator:a8dea7a60bbe1a6aa589e15f127307df4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2782b22ddf8c8bec2ca9c233f3a4b8ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2782b22ddf8c8bec2ca9c233f3a4b8ee\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a2782b22ddf8c8bec2ca9c233f3a4b8ee\">use_threaded_depthfilter</a> = true</td></tr>\n<tr class=\"memdesc:a2782b22ddf8c8bec2ca9c233f3a4b8ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Start separate thread for seed updates. <br /></td></tr>\n<tr class=\"separator:a2782b22ddf8c8bec2ca9c233f3a4b8ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae19ef1b91c4e38450f56890a5ecb0b3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae19ef1b91c4e38450f56890a5ecb0b3d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae19ef1b91c4e38450f56890a5ecb0b3d\">update_3d_point</a> = true</td></tr>\n<tr class=\"memdesc:ae19ef1b91c4e38450f56890a5ecb0b3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Update the 3D point linked by the feature in the seed (false for REMODE-CPU) <br /></td></tr>\n<tr class=\"separator:ae19ef1b91c4e38450f56890a5ecb0b3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7f876587424af58ecc1ea2d935f78d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae7f876587424af58ecc1ea2d935f78d9\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#ae7f876587424af58ecc1ea2d935f78d9\">scan_epi_unit_sphere</a> = false</td></tr>\n<tr class=\"memdesc:ae7f876587424af58ecc1ea2d935f78d9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Do epipolar search on unit sphere. <br /></td></tr>\n<tr class=\"separator:ae7f876587424af58ecc1ea2d935f78d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36f3376df5ebfc95465e68e3a1933143\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36f3376df5ebfc95465e68e3a1933143\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a36f3376df5ebfc95465e68e3a1933143\">max_n_seeds_per_frame</a> = 200</td></tr>\n<tr class=\"memdesc:a36f3376df5ebfc95465e68e3a1933143\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restrict number of features per frame. <br /></td></tr>\n<tr class=\"separator:a36f3376df5ebfc95465e68e3a1933143\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c1cf2b2b0a553f5ff749d009075ec78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9c1cf2b2b0a553f5ff749d009075ec78\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilterOptions.html#a9c1cf2b2b0a553f5ff749d009075ec78\">affine_est_offset</a> = true</td></tr>\n<tr class=\"memdesc:a9c1cf2b2b0a553f5ff749d009075ec78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">use affine model to compensate for brightness change <br /></td></tr>\n<tr class=\"separator:a9c1cf2b2b0a553f5ff749d009075ec78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add52bd3c0c91cd6df378cd48c257c4e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"add52bd3c0c91cd6df378cd48c257c4e6\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_est_gain</b> = false</td></tr>\n<tr class=\"separator:add52bd3c0c91cd6df378cd48c257c4e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Depth-filter config parameters. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a51a0cbc8693e980d84264c6298570337\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51a0cbc8693e980d84264c6298570337\">&#9670;&nbsp;</a></span>max_search_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::DepthFilterOptions::max_search_level = 2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Specify the max pyramid level for the matcher. Normally, you don't need to change this parameters. </p>\n\n</div>\n</div>\n<a id=\"a594f7085ecee05fdeaa42bcf85dec61c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a594f7085ecee05fdeaa42bcf85dec61c\">&#9670;&nbsp;</a></span>seed_convergence_sigma2_thresh</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::DepthFilterOptions::seed_convergence_sigma2_thresh = 200.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Threshold for the uncertainty of the seed. If seed's sigma2 is thresh smaller than the inital sigma, it is considered as converged. Default value is 200. If seeds should converge quicker, set it to 50 or if you want very precise 3d points, set it higher. </p>\n\n</div>\n</div>\n<a id=\"afc8be405bd4cfdcceb2440b43326def4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc8be405bd4cfdcceb2440b43326def4\">&#9670;&nbsp;</a></span>use_inverse_depth</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::DepthFilterOptions::use_inverse_depth = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Use inverse-depth parametrization for seeds. Default is true. Set to false if you are using the depth-filter to reconstruct small objects with fixed depth range. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DepthFilterOptions__coll__graph.md5",
    "content": "06402e5bf1119410825c16b8ca35aad0"
  },
  {
    "path": "docs/structsvo_1_1DepthFilter_1_1Job-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilter::Job Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>cur_frame</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6\">Job</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699\">Job</a>(const FramePtr &amp;_cur_frame, const FramePtr &amp;_ref_frame, const size_t _ref_index)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">Job</a>(const FramePtr &amp;f, double min_d, double max_d, double mean_d)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>max_depth</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mean_depth</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>min_depth</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ref_frame</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ref_frame_seed_index</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SEED_INIT</b> enum value (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>type</b> (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Type</b> enum name (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UPDATE</b> enum value (defined in <a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">svo::DepthFilter::Job</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DepthFilter_1_1Job.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::DepthFilter::Job Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1DepthFilter.html\">DepthFilter</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1DepthFilter_1_1Job-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DepthFilter::Job Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::DepthFilter::Job:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1DepthFilter_1_1Job__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1DepthFilter_1_1Job_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ab18725b7b0f6d15bd2eaad647a9c7296\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab18725b7b0f6d15bd2eaad647a9c7296\"></a>enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Type</b> { <b>UPDATE</b>, \n<b>SEED_INIT</b>\n }</td></tr>\n<tr class=\"separator:ab18725b7b0f6d15bd2eaad647a9c7296\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5902f79873da4ddf6a638fed7c34a9f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5902f79873da4ddf6a638fed7c34a9f6\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a5902f79873da4ddf6a638fed7c34a9f6\">Job</a> ()</td></tr>\n<tr class=\"memdesc:a5902f79873da4ddf6a638fed7c34a9f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default constructor. <br /></td></tr>\n<tr class=\"separator:a5902f79873da4ddf6a638fed7c34a9f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95f7afc832efee32c7111f9e8d057699\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a95f7afc832efee32c7111f9e8d057699\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a95f7afc832efee32c7111f9e8d057699\">Job</a> (const FramePtr &amp;_cur_frame, const FramePtr &amp;_ref_frame, const size_t _ref_index)</td></tr>\n<tr class=\"memdesc:a95f7afc832efee32c7111f9e8d057699\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor for seed update. <br /></td></tr>\n<tr class=\"separator:a95f7afc832efee32c7111f9e8d057699\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e542adbf7fec7df6af28988909217bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3e542adbf7fec7df6af28988909217bb\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html#a3e542adbf7fec7df6af28988909217bb\">Job</a> (const FramePtr &amp;f, double min_d, double max_d, double mean_d)</td></tr>\n<tr class=\"memdesc:a3e542adbf7fec7df6af28988909217bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor for seed initialization. <br /></td></tr>\n<tr class=\"separator:a3e542adbf7fec7df6af28988909217bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adca5eec6538eee6c03fc92a834fbab0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adca5eec6538eee6c03fc92a834fbab0b\"></a>\nenum svo::DepthFilter::Job::Type&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>type</b></td></tr>\n<tr class=\"separator:adca5eec6538eee6c03fc92a834fbab0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac770e716e66f032057d514e65fbf010\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aac770e716e66f032057d514e65fbf010\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>cur_frame</b></td></tr>\n<tr class=\"separator:aac770e716e66f032057d514e65fbf010\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa548d2e2fac06c24b870698c81713dc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa548d2e2fac06c24b870698c81713dc5\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ref_frame</b></td></tr>\n<tr class=\"separator:aa548d2e2fac06c24b870698c81713dc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a495d9946bc914f5fef97928bc1aa0b17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a495d9946bc914f5fef97928bc1aa0b17\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ref_frame_seed_index</b></td></tr>\n<tr class=\"separator:a495d9946bc914f5fef97928bc1aa0b17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60a26710dae0a4942c8b1181f8fdd7e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a60a26710dae0a4942c8b1181f8fdd7e9\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_depth</b></td></tr>\n<tr class=\"separator:a60a26710dae0a4942c8b1181f8fdd7e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15059535163106b66d1214efa6904fe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a15059535163106b66d1214efa6904fe7\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_depth</b></td></tr>\n<tr class=\"separator:a15059535163106b66d1214efa6904fe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43096cd5e0dfa16732987405f4af5d7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43096cd5e0dfa16732987405f4af5d7e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mean_depth</b></td></tr>\n<tr class=\"separator:a43096cd5e0dfa16732987405f4af5d7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"structsvo_1_1DepthFilter_1_1Job.html\">Job</a> for multi-threading. can either be to update a seed with the frame or to initialize new seeds in the frame </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"depth__filter_8h_source.html\">depth_filter.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DepthFilter_1_1Job__coll__graph.md5",
    "content": "8253a2e1763ddd5696812f4d8b196b95"
  },
  {
    "path": "docs/structsvo_1_1DetectorOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DetectorOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391\">border</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c\">cell_size</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20\">detector_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>level</b> (defined in <a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d\">max_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386\">min_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e\">sampling_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b\">threshold_primary</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89\">threshold_secondary</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">svo::DetectorOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DetectorOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::DetectorOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html\">DetectorOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1DetectorOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::DetectorOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Common options of all feature detectors.  \n <a href=\"structsvo_1_1DetectorOptions.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__detection__types_8h_source.html\">feature_detection_types.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::DetectorOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1DetectorOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1DetectorOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab069207f3c4c9c7f6e13a35b04dd1e8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab069207f3c4c9c7f6e13a35b04dd1e8c\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ab069207f3c4c9c7f6e13a35b04dd1e8c\">cell_size</a> = 30</td></tr>\n<tr class=\"memdesc:ab069207f3c4c9c7f6e13a35b04dd1e8c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Maximum one feature per bucked with cell_size width and height. <br /></td></tr>\n<tr class=\"separator:ab069207f3c4c9c7f6e13a35b04dd1e8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e9656ea6efc55e171198af7cabbb63d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4e9656ea6efc55e171198af7cabbb63d\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a4e9656ea6efc55e171198af7cabbb63d\">max_level</a> = 2</td></tr>\n<tr class=\"memdesc:a4e9656ea6efc55e171198af7cabbb63d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extract features on pyramid. <br /></td></tr>\n<tr class=\"separator:a4e9656ea6efc55e171198af7cabbb63d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48545bbc5192ced00dc5281c9125a386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a48545bbc5192ced00dc5281c9125a386\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a48545bbc5192ced00dc5281c9125a386\">min_level</a> = 0</td></tr>\n<tr class=\"memdesc:a48545bbc5192ced00dc5281c9125a386\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">minimum pyramid level at which features should be selected <br /></td></tr>\n<tr class=\"separator:a48545bbc5192ced00dc5281c9125a386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac236a5d06dd5daf8c3a5b81593679391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac236a5d06dd5daf8c3a5b81593679391\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#ac236a5d06dd5daf8c3a5b81593679391\">border</a> = 8</td></tr>\n<tr class=\"memdesc:ac236a5d06dd5daf8c3a5b81593679391\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">no feature should be within border. <br /></td></tr>\n<tr class=\"separator:ac236a5d06dd5daf8c3a5b81593679391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1f963eedbb07f97650268aba0d96e20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa1f963eedbb07f97650268aba0d96e20\"></a>\n<a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18\">DetectorType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#aa1f963eedbb07f97650268aba0d96e20\">detector_type</a> = <a class=\"el\" href=\"namespacesvo.html#a3c5c118b76aef39320e48bbc566eeb18ae250345d92c29e0a7d8d215ac3b67997\">DetectorType::kFast</a></td></tr>\n<tr class=\"memdesc:aa1f963eedbb07f97650268aba0d96e20\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Choose between {FAST, FAST_GRAD}, FAST_GRAD will use Edgelets. <br /></td></tr>\n<tr class=\"separator:aa1f963eedbb07f97650268aba0d96e20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63f453f695945529a6696e2f2c917a5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a63f453f695945529a6696e2f2c917a5b\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a63f453f695945529a6696e2f2c917a5b\">threshold_primary</a> = 10.0</td></tr>\n<tr class=\"memdesc:a63f453f695945529a6696e2f2c917a5b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Primary detector threshold. <br /></td></tr>\n<tr class=\"separator:a63f453f695945529a6696e2f2c917a5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a585f6218a38db5a3851646ae60a17a89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a585f6218a38db5a3851646ae60a17a89\">threshold_secondary</a> = 100.0</td></tr>\n<tr class=\"separator:a585f6218a38db5a3851646ae60a17a89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a885970f445b208ec6412d8244126ed7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1DetectorOptions.html#a885970f445b208ec6412d8244126ed7e\">sampling_level</a> = 0</td></tr>\n<tr class=\"separator:a885970f445b208ec6412d8244126ed7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5853d2df7a090195a8464da1b668548b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5853d2df7a090195a8464da1b668548b\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>level</b> = 0</td></tr>\n<tr class=\"separator:a5853d2df7a090195a8464da1b668548b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Common options of all feature detectors. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a885970f445b208ec6412d8244126ed7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a885970f445b208ec6412d8244126ed7e\">&#9670;&nbsp;</a></span>sampling_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int svo::DetectorOptions::sampling_level = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Level where features are initialized. Only for detectors supporting specific feature levels like the AllPixelDetector. </p>\n\n</div>\n</div>\n<a id=\"a585f6218a38db5a3851646ae60a17a89\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a585f6218a38db5a3851646ae60a17a89\">&#9670;&nbsp;</a></span>threshold_secondary</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::DetectorOptions::threshold_secondary = 100.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Secondary detector threshold. Used if the detector uses two different detectors. E.g. in the case of FAST_GRAD, it is the gradient detector threshold. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"feature__detection__types_8h_source.html\">feature_detection_types.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1DetectorOptions__coll__graph.md5",
    "content": "3754a94bb425e5dfdd1f3e4a8b7be304"
  },
  {
    "path": "docs/structsvo_1_1FeatureTrackerOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTrackerOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">klt_max_iter</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">klt_max_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">klt_min_level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">klt_min_update_squared</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">klt_patch_sizes</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">klt_template_is_first_observation</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">min_tracks_to_detect_new_features</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">reset_before_detection</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">svo::FeatureTrackerOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1FeatureTrackerOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FeatureTrackerOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html\">FeatureTrackerOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1FeatureTrackerOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureTrackerOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::FeatureTrackerOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1FeatureTrackerOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FeatureTrackerOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a79805a3be4221db5d7575043daf4c465\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a79805a3be4221db5d7575043daf4c465\">klt_max_level</a> = 4</td></tr>\n<tr class=\"separator:a79805a3be4221db5d7575043daf4c465\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d44e8785ba31e3fbfaf6da059c4a8bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a5d44e8785ba31e3fbfaf6da059c4a8bd\">klt_min_level</a> = 0</td></tr>\n<tr class=\"separator:a5d44e8785ba31e3fbfaf6da059c4a8bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13bbaf6d9d93e8996b4d73ce9216a8b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a13bbaf6d9d93e8996b4d73ce9216a8b3\"></a>\nstd::vector&lt; int &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a13bbaf6d9d93e8996b4d73ce9216a8b3\">klt_patch_sizes</a> = {16, 16, 16, 8, 8}</td></tr>\n<tr class=\"memdesc:a13bbaf6d9d93e8996b4d73ce9216a8b3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Patch-size to use on each pyramid level. <br /></td></tr>\n<tr class=\"separator:a13bbaf6d9d93e8996b4d73ce9216a8b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0cbff162578c6c56097262ad4961f0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0cbff162578c6c56097262ad4961f0e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#ad0cbff162578c6c56097262ad4961f0e\">klt_max_iter</a> = 30</td></tr>\n<tr class=\"memdesc:ad0cbff162578c6c56097262ad4961f0e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">KLT termination criterion. <br /></td></tr>\n<tr class=\"separator:ad0cbff162578c6c56097262ad4961f0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f7f926324418142129204504063c771\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9f7f926324418142129204504063c771\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a9f7f926324418142129204504063c771\">klt_min_update_squared</a> = 0.001</td></tr>\n<tr class=\"memdesc:a9f7f926324418142129204504063c771\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">KLT termination criterion. <br /></td></tr>\n<tr class=\"separator:a9f7f926324418142129204504063c771\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f5d4385fc969a057a22cd49f1f6af43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a2f5d4385fc969a057a22cd49f1f6af43\">klt_template_is_first_observation</a> = true</td></tr>\n<tr class=\"separator:a2f5d4385fc969a057a22cd49f1f6af43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0efb481768e639fe0b02bca2763c5a55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0efb481768e639fe0b02bca2763c5a55\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a0efb481768e639fe0b02bca2763c5a55\">min_tracks_to_detect_new_features</a> = 50</td></tr>\n<tr class=\"memdesc:a0efb481768e639fe0b02bca2763c5a55\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">If number of tracks falls below this threshold, detect new features. <br /></td></tr>\n<tr class=\"separator:a0efb481768e639fe0b02bca2763c5a55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6dba63a8f46d4241a911c52d8f9ed8fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureTrackerOptions.html#a6dba63a8f46d4241a911c52d8f9ed8fe\">reset_before_detection</a> = true</td></tr>\n<tr class=\"separator:a6dba63a8f46d4241a911c52d8f9ed8fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a79805a3be4221db5d7575043daf4c465\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79805a3be4221db5d7575043daf4c465\">&#9670;&nbsp;</a></span>klt_max_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int svo::FeatureTrackerOptions::klt_max_level = 4</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>We do the Lucas Kanade tracking in a pyramidal way. max_level specifies the coarsest pyramidal level to optimize. For an image resolution of (640x480) we set this variable to 4 if you have an image with double the resolution, increase this number by one. </p>\n\n</div>\n</div>\n<a id=\"a5d44e8785ba31e3fbfaf6da059c4a8bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d44e8785ba31e3fbfaf6da059c4a8bd\">&#9670;&nbsp;</a></span>klt_min_level</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int svo::FeatureTrackerOptions::klt_min_level = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Similar to klt_max_level, this is the coarsest level to search for. if you have a really high resolution image and you don't extract features down to the lowest level you can set this number larger than 0. </p>\n\n</div>\n</div>\n<a id=\"a2f5d4385fc969a057a22cd49f1f6af43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f5d4385fc969a057a22cd49f1f6af43\">&#9670;&nbsp;</a></span>klt_template_is_first_observation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::FeatureTrackerOptions::klt_template_is_first_observation = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Use the first observation as klt template. If set to false, then the last observation is used, which results in more feature drift. </p>\n\n</div>\n</div>\n<a id=\"a6dba63a8f46d4241a911c52d8f9ed8fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6dba63a8f46d4241a911c52d8f9ed8fe\">&#9670;&nbsp;</a></span>reset_before_detection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::FeatureTrackerOptions::reset_before_detection = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Reset tracker before detecting new features. This means that all active tracks are always the same age. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_tracker/include/svo/tracker/<a class=\"el\" href=\"feature__tracking__types_8h_source.html\">feature_tracking_types.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1FeatureTrackerOptions__coll__graph.md5",
    "content": "ef3aff83b0d2b2a7bb5c7214c0d15dd5"
  },
  {
    "path": "docs/structsvo_1_1FeatureWrapper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureWrapper Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">f</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FeatureWrapper</b>(FeatureType &amp;_type, Eigen::Ref&lt; Keypoint &gt; _px, Eigen::Ref&lt; BearingVector &gt; _f, Eigen::Ref&lt; GradientVector &gt; _grad, Score &amp;_score, Level &amp;_pyramid_level, PointPtr &amp;_landmark, SeedRef &amp;_seed_ref, int &amp;_track_id) (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureWrapper</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1\">FeatureWrapper</a>(const FeatureWrapper &amp;other)=default</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">grad</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>landmark</b> (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">level</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>operator=</b>(const FeatureWrapper &amp;other)=default (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">px</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>score</b> (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>seed_ref</b> (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>track_id</b> (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~FeatureWrapper</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1FeatureWrapper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::FeatureWrapper Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1FeatureWrapper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::FeatureWrapper Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"feature__wrapper_8h_source.html\">feature_wrapper.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::FeatureWrapper:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1FeatureWrapper__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1FeatureWrapper_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1FeatureWrapper_coll__map\" id=\"svo_1_1FeatureWrapper_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1SeedRef.html\" title=\"svo::SeedRef\" alt=\"\" coords=\"26,5,129,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a257d3bbd17807776b337230186890f85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a257d3bbd17807776b337230186890f85\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureWrapper</b> (FeatureType &amp;_type, Eigen::Ref&lt; Keypoint &gt; _px, Eigen::Ref&lt; BearingVector &gt; _f, Eigen::Ref&lt; GradientVector &gt; _grad, Score &amp;_score, Level &amp;_pyramid_level, PointPtr &amp;_landmark, <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a> &amp;_seed_ref, int &amp;_track_id)</td></tr>\n<tr class=\"separator:a257d3bbd17807776b337230186890f85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a816bb0c2faad71a65718c66ac4b667b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1\">FeatureWrapper</a> (const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;other)=default</td></tr>\n<tr class=\"separator:a816bb0c2faad71a65718c66ac4b667b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0cce7e02012253f70a1d8bed770e20d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0cce7e02012253f70a1d8bed770e20d4\"></a>\n<a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator=</b> (const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;other)=default</td></tr>\n<tr class=\"separator:a0cce7e02012253f70a1d8bed770e20d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2983823ece4f027bca02e7608dd0395b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2983823ece4f027bca02e7608dd0395b\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW FeatureType &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a2983823ece4f027bca02e7608dd0395b\">type</a></td></tr>\n<tr class=\"memdesc:a2983823ece4f027bca02e7608dd0395b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type can be corner or edgelet. <br /></td></tr>\n<tr class=\"separator:a2983823ece4f027bca02e7608dd0395b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1c1e7541a9df92b73bbef72df30a8f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab1c1e7541a9df92b73bbef72df30a8f8\"></a>\nEigen::Ref&lt; Keypoint &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#ab1c1e7541a9df92b73bbef72df30a8f8\">px</a></td></tr>\n<tr class=\"memdesc:ab1c1e7541a9df92b73bbef72df30a8f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Coordinates in pixels on pyramid level 0. <br /></td></tr>\n<tr class=\"separator:ab1c1e7541a9df92b73bbef72df30a8f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add33cb982469e5d9fbe15e7a1eded5f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"add33cb982469e5d9fbe15e7a1eded5f6\"></a>\nEigen::Ref&lt; BearingVector &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#add33cb982469e5d9fbe15e7a1eded5f6\">f</a></td></tr>\n<tr class=\"memdesc:add33cb982469e5d9fbe15e7a1eded5f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unit-bearing vector of the feature. <br /></td></tr>\n<tr class=\"separator:add33cb982469e5d9fbe15e7a1eded5f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a497b251326f62cc257840851a1d0412c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a497b251326f62cc257840851a1d0412c\"></a>\nEigen::Ref&lt; GradientVector &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a497b251326f62cc257840851a1d0412c\">grad</a></td></tr>\n<tr class=\"memdesc:a497b251326f62cc257840851a1d0412c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Dominant gradient direction for edglets, normalized. <br /></td></tr>\n<tr class=\"separator:a497b251326f62cc257840851a1d0412c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85271c97864df0ed3ac8817fcc9b5bd0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a85271c97864df0ed3ac8817fcc9b5bd0\"></a>\nScore &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>score</b></td></tr>\n<tr class=\"separator:a85271c97864df0ed3ac8817fcc9b5bd0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b6490a8cd4ff72e23c724d0ff8463db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1b6490a8cd4ff72e23c724d0ff8463db\"></a>\nLevel &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a1b6490a8cd4ff72e23c724d0ff8463db\">level</a></td></tr>\n<tr class=\"memdesc:a1b6490a8cd4ff72e23c724d0ff8463db\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Image pyramid level where feature was extracted. <br /></td></tr>\n<tr class=\"separator:a1b6490a8cd4ff72e23c724d0ff8463db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33c280f8aa372e3af7b68a7f9425648c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a33c280f8aa372e3af7b68a7f9425648c\"></a>\nPointPtr &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>landmark</b></td></tr>\n<tr class=\"separator:a33c280f8aa372e3af7b68a7f9425648c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa59ead94672137245769cbc557ca1dee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa59ead94672137245769cbc557ca1dee\"></a>\n<a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>seed_ref</b></td></tr>\n<tr class=\"separator:aa59ead94672137245769cbc557ca1dee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ce4ba3d191ff3c9c6983ce26c257d3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3ce4ba3d191ff3c9c6983ce26c257d3e\"></a>\nint &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>track_id</b></td></tr>\n<tr class=\"separator:a3ce4ba3d191ff3c9c6983ce26c257d3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000001\">Todo:</a></b></dt><dd>(MWE) </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a816bb0c2faad71a65718c66ac4b667b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a816bb0c2faad71a65718c66ac4b667b1\">&#9670;&nbsp;</a></span>FeatureWrapper()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">svo::FeatureWrapper::FeatureWrapper </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000002\">Todo:</a></b></dt><dd>(MWE) do copy and copy-asignment operators make sense? </dd></dl>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"feature__wrapper_8h_source.html\">feature_wrapper.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1FeatureWrapper__coll__graph.md5",
    "content": "6e05ac4f705cbcae5f227e4e77a58e52"
  },
  {
    "path": "docs/structsvo_1_1GraphManagerOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GraphManagerOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>init_pos_sigma</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>init_roll_pitch_sigma</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>init_yaw_sigma</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>min_parallax_thresh</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reproj_error_noise</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>smart_reproj_threshold</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_tracks</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>use_robust_px_noise</b> (defined in <a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">svo::GraphManagerOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1GraphManagerOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::GraphManagerOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1GraphManagerOptions.html\">GraphManagerOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1GraphManagerOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::GraphManagerOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a01eab2fac29c01f8474867e13f1a8bf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01eab2fac29c01f8474867e13f1a8bf1\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reproj_error_noise</b> = 1.0/370.0</td></tr>\n<tr class=\"separator:a01eab2fac29c01f8474867e13f1a8bf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08581211db98be8f58728d0a32dab140\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a08581211db98be8f58728d0a32dab140\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>smart_reproj_threshold</b> = 3.0/370.0</td></tr>\n<tr class=\"separator:a08581211db98be8f58728d0a32dab140\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab698d2384e51c227cc829ad15ddb656b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab698d2384e51c227cc829ad15ddb656b\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_parallax_thresh</b> = 5.0/180*M_PI</td></tr>\n<tr class=\"separator:ab698d2384e51c227cc829ad15ddb656b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b9c65ceedc37feab3945c3657a45238\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b9c65ceedc37feab3945c3657a45238\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_tracks</b> = false</td></tr>\n<tr class=\"separator:a9b9c65ceedc37feab3945c3657a45238\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64a7fe48758202b7f504d464dfc3ed31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a64a7fe48758202b7f504d464dfc3ed31\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>use_robust_px_noise</b> = false</td></tr>\n<tr class=\"separator:a64a7fe48758202b7f504d464dfc3ed31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d28af1f650c05bc30846536a0598430\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2d28af1f650c05bc30846536a0598430\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init_pos_sigma</b> = 0.001</td></tr>\n<tr class=\"separator:a2d28af1f650c05bc30846536a0598430\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a75a76c54e6fd87b1e921740555312c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2a75a76c54e6fd87b1e921740555312c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init_roll_pitch_sigma</b> = 0.03</td></tr>\n<tr class=\"separator:a2a75a76c54e6fd87b1e921740555312c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e8409546435c06c32b0495991f06cb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2e8409546435c06c32b0495991f06cb8\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init_yaw_sigma</b> = 0.78</td></tr>\n<tr class=\"separator:a2e8409546435c06c32b0495991f06cb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"graph__manager_8h_source.html\">graph_manager.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1HostCacheHandler-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::HostCacheHandler Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>capacity</b>() const (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>clear</b>() (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>first_ftr_index</b> (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>nbr_of_ftrs</b> (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>push_uv</b>(const float &amp;u, const float &amp;v) (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>push_uv</b>(const double &amp;u, const double &amp;v) (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>push_xyz</b>(const float &amp;x, const float &amp;y, const float &amp;z) (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>push_xyz</b>(const double &amp;x, const double &amp;y, const double &amp;z) (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reserve</b>(size_t feature_capacity) (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>total_nbr_of_ftrs</b> (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>uv_cache</b> (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>xyz_ref_cache</b> (defined in <a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">svo::HostCacheHandler</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1HostCacheHandler.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::HostCacheHandler Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1HostCacheHandler.html\">HostCacheHandler</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1HostCacheHandler-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::HostCacheHandler Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::HostCacheHandler:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1HostCacheHandler__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1HostCacheHandler_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a34bc64264b1bb6b35ec1a918a0ad350b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a34bc64264b1bb6b35ec1a918a0ad350b\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>clear</b> ()</td></tr>\n<tr class=\"separator:a34bc64264b1bb6b35ec1a918a0ad350b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1416b4d6872e78fcebccc658eb38f01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa1416b4d6872e78fcebccc658eb38f01\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reserve</b> (size_t feature_capacity)</td></tr>\n<tr class=\"separator:aa1416b4d6872e78fcebccc658eb38f01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6acea1522eabaa80a9b2218adb53223\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af6acea1522eabaa80a9b2218adb53223\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>capacity</b> () const</td></tr>\n<tr class=\"separator:af6acea1522eabaa80a9b2218adb53223\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ec6ee994ed0d0fb503dd8b66054b7ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4ec6ee994ed0d0fb503dd8b66054b7ef\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push_uv</b> (const float &amp;u, const float &amp;v)</td></tr>\n<tr class=\"separator:a4ec6ee994ed0d0fb503dd8b66054b7ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad05d095c676ef4903b66ab6b77e398dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad05d095c676ef4903b66ab6b77e398dd\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push_uv</b> (const double &amp;u, const double &amp;v)</td></tr>\n<tr class=\"separator:ad05d095c676ef4903b66ab6b77e398dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a909beb82e30df88b8101ed1a4f7a6107\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a909beb82e30df88b8101ed1a4f7a6107\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push_xyz</b> (const float &amp;x, const float &amp;y, const float &amp;z)</td></tr>\n<tr class=\"separator:a909beb82e30df88b8101ed1a4f7a6107\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36576e816cde8d404f67f9230270ba70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36576e816cde8d404f67f9230270ba70\"></a>\nvoid&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>push_xyz</b> (const double &amp;x, const double &amp;y, const double &amp;z)</td></tr>\n<tr class=\"separator:a36576e816cde8d404f67f9230270ba70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af997556e8bdebb0c02670038fd32a913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af997556e8bdebb0c02670038fd32a913\"></a>\nstd::vector&lt; Float2TypeGpu &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>uv_cache</b></td></tr>\n<tr class=\"separator:af997556e8bdebb0c02670038fd32a913\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d594dd0dbd1f52547d4906d5d5b26fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a1d594dd0dbd1f52547d4906d5d5b26fa\"></a>\nstd::vector&lt; Float3TypeGpu &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>xyz_ref_cache</b></td></tr>\n<tr class=\"separator:a1d594dd0dbd1f52547d4906d5d5b26fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77297708a8a3bbcd7628079199bdc315\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a77297708a8a3bbcd7628079199bdc315\"></a>\nstd::vector&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>first_ftr_index</b></td></tr>\n<tr class=\"separator:a77297708a8a3bbcd7628079199bdc315\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3e9abf2019bf5154102e96edb536c9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af3e9abf2019bf5154102e96edb536c9a\"></a>\nstd::vector&lt; size_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>nbr_of_ftrs</b></td></tr>\n<tr class=\"separator:af3e9abf2019bf5154102e96edb536c9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01b2c2d2169ba4f3a7397db66f1102ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a01b2c2d2169ba4f3a7397db66f1102ac\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>total_nbr_of_ftrs</b></td></tr>\n<tr class=\"separator:a01b2c2d2169ba4f3a7397db66f1102ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align__gpu_8h_source.html\">sparse_img_align_gpu.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1HostCacheHandler__coll__graph.md5",
    "content": "c6d259a3531d3e9989cdd09007b8d1dd"
  },
  {
    "path": "docs/structsvo_1_1ImuMeasurement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuMeasurement Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>angular_velocity_</b> (defined in <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ImuMeasurement</b>() (defined in <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ImuMeasurement</b>(const double timestamp, const Eigen::Vector3d &amp;angular_velocity, const Eigen::Vector3d &amp;linear_acceleration) (defined in <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>linear_acceleration_</b> (defined in <a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">timestamp_</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">svo::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1ImuMeasurement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ImuMeasurement Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html\">ImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1ImuMeasurement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ImuMeasurement Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::ImuMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1ImuMeasurement__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ImuMeasurement_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae3fe8193e0dcf5834cfbcb5c829e069b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae3fe8193e0dcf5834cfbcb5c829e069b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImuMeasurement</b> (const double timestamp, const Eigen::Vector3d &amp;angular_velocity, const Eigen::Vector3d &amp;linear_acceleration)</td></tr>\n<tr class=\"separator:ae3fe8193e0dcf5834cfbcb5c829e069b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4d0ebc1bf8a4bce20cebd3b7e5e2be53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4d0ebc1bf8a4bce20cebd3b7e5e2be53\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ImuMeasurement.html#a4d0ebc1bf8a4bce20cebd3b7e5e2be53\">timestamp_</a></td></tr>\n<tr class=\"memdesc:a4d0ebc1bf8a4bce20cebd3b7e5e2be53\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">In seconds. <br /></td></tr>\n<tr class=\"separator:a4d0ebc1bf8a4bce20cebd3b7e5e2be53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e00fd429ed47a38d1f7f2610fce4e0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9e00fd429ed47a38d1f7f2610fce4e0f\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>angular_velocity_</b></td></tr>\n<tr class=\"separator:a9e00fd429ed47a38d1f7f2610fce4e0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03201b92249f5be8ee8b450713c6dfc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a03201b92249f5be8ee8b450713c6dfc5\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>linear_acceleration_</b></td></tr>\n<tr class=\"separator:a03201b92249f5be8ee8b450713c6dfc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"imu__calibration_8h_source.html\">imu_calibration.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1ImuMeasurement__coll__graph.md5",
    "content": "f1466063aea17a4d3f8d7e2f4006dcb9"
  },
  {
    "path": "docs/structsvo_1_1InitializationOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::InitializationOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>expected_avg_depth</b> (defined in <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4\">init_disparity_pivot_ratio</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>init_min_depth_error</b> (defined in <a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a\">init_min_disparity</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36\">init_min_features</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace\">init_min_features_factor</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb\">init_min_inliers</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2\">init_min_tracked</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136\">init_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56\">reproj_error_thresh</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">svo::InitializationOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1InitializationOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::InitializationOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html\">InitializationOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1InitializationOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::InitializationOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::InitializationOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1InitializationOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1InitializationOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad5d23c976838ebaa65261abf80d85136\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad5d23c976838ebaa65261abf80d85136\"></a>\n<a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192\">InitializerType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ad5d23c976838ebaa65261abf80d85136\">init_type</a> = <a class=\"el\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab534ef6a50e60a7eefacd11cf49754b1\">InitializerType::kHomography</a></td></tr>\n<tr class=\"memdesc:ad5d23c976838ebaa65261abf80d85136\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializer method. See options above. <br /></td></tr>\n<tr class=\"separator:ad5d23c976838ebaa65261abf80d85136\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d36678cbd63867f6631087ef7aaf61a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a5d36678cbd63867f6631087ef7aaf61a\">init_min_disparity</a> = 50.0</td></tr>\n<tr class=\"separator:a5d36678cbd63867f6631087ef7aaf61a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95ee117fb8c17d546f994d71ba6785d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a95ee117fb8c17d546f994d71ba6785d4\">init_disparity_pivot_ratio</a> = 0.5</td></tr>\n<tr class=\"separator:a95ee117fb8c17d546f994d71ba6785d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a300e9adbaf168ff14e33885e54b8ab36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#a300e9adbaf168ff14e33885e54b8ab36\">init_min_features</a> = 100</td></tr>\n<tr class=\"separator:a300e9adbaf168ff14e33885e54b8ab36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3628b0b41250315f543847d4bb4aace\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac3628b0b41250315f543847d4bb4aace\">init_min_features_factor</a> = 2.5</td></tr>\n<tr class=\"separator:ac3628b0b41250315f543847d4bb4aace\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4143df4cd4882062f60a4a9fae369c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ac4143df4cd4882062f60a4a9fae369c2\">init_min_tracked</a> = 50</td></tr>\n<tr class=\"separator:ac4143df4cd4882062f60a4a9fae369c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af47a1bff5db91f0240c347a288216dcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#af47a1bff5db91f0240c347a288216dcb\">init_min_inliers</a> = 40</td></tr>\n<tr class=\"separator:af47a1bff5db91f0240c347a288216dcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab30047ee7bf4c8c42746d5fae86cef56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab30047ee7bf4c8c42746d5fae86cef56\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1InitializationOptions.html#ab30047ee7bf4c8c42746d5fae86cef56\">reproj_error_thresh</a> = 2.0</td></tr>\n<tr class=\"memdesc:ab30047ee7bf4c8c42746d5fae86cef56\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reprojection threshold in pixels. The same as we also use in pose optimizer. <br /></td></tr>\n<tr class=\"separator:ab30047ee7bf4c8c42746d5fae86cef56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adce5e487095699aaa330989355dd6f2e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adce5e487095699aaa330989355dd6f2e\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>expected_avg_depth</b> = 1.0</td></tr>\n<tr class=\"separator:adce5e487095699aaa330989355dd6f2e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cce9cdde427008e6d735d32e3302709\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6cce9cdde427008e6d735d32e3302709\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>init_min_depth_error</b> = 1.0</td></tr>\n<tr class=\"separator:a6cce9cdde427008e6d735d32e3302709\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Common options for all initializers Options marked with (!) are more important. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a95ee117fb8c17d546f994d71ba6785d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95ee117fb8c17d546f994d71ba6785d4\">&#9670;&nbsp;</a></span>init_disparity_pivot_ratio</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::InitializationOptions::init_disparity_pivot_ratio = 0.5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>When checking whether the disparity of the tracked features are large enough, we check that a certain percentage of tracked features have disparities large than init_min_disparity. The default percentage is 0.5, which means the median is checked. For example, if this parameter is set to 0.25, it means we go for realtive pose estimation only when at least 25% of the tracked features have disparities large than init_min_disparity </p>\n\n</div>\n</div>\n<a id=\"a5d36678cbd63867f6631087ef7aaf61a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d36678cbd63867f6631087ef7aaf61a\">&#9670;&nbsp;</a></span>init_min_disparity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::InitializationOptions::init_min_disparity = 50.0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) Minimum disparity (length of feature tracks) required to select the second frame. After that we triangulate the first pointcloud. For easy initialization you want to make this small (minimum 20px) but actually it is much better to have more disparity to ensure the initial pointcloud is good. </p>\n\n</div>\n</div>\n<a id=\"a300e9adbaf168ff14e33885e54b8ab36\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a300e9adbaf168ff14e33885e54b8ab36\">&#9670;&nbsp;</a></span>init_min_features</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::InitializationOptions::init_min_features = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) If less features than init_min_features can be extracted at the first frame, the first frame is not accepted and we check the next frame. </p>\n\n</div>\n</div>\n<a id=\"ac3628b0b41250315f543847d4bb4aace\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3628b0b41250315f543847d4bb4aace\">&#9670;&nbsp;</a></span>init_min_features_factor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double svo::InitializationOptions::init_min_features_factor = 2.5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) This threshold defines how many features should be tracked in the first place. Basically, the initializer tries to extract and track init_min_features*init_min_features_factor features. </p>\n\n</div>\n</div>\n<a id=\"af47a1bff5db91f0240c347a288216dcb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af47a1bff5db91f0240c347a288216dcb\">&#9670;&nbsp;</a></span>init_min_inliers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::InitializationOptions::init_min_inliers = 40</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) At the end of initialization, we triangulate the first pointcloud and check the quality of the triangulation by evaluating the reprojection errors. All points that have more reprojection error than reproj_error_thresh are considered outliers. Only return SUCCESS if we have more inliers than init_min_inliers. </p>\n\n</div>\n</div>\n<a id=\"ac4143df4cd4882062f60a4a9fae369c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4143df4cd4882062f60a4a9fae369c2\">&#9670;&nbsp;</a></span>init_min_tracked</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::InitializationOptions::init_min_tracked = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) If number of tracked features during initialization falls below this threshold than the initializer returns FAILURE. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"initialization_8h_source.html\">initialization.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1InitializationOptions__coll__graph.md5",
    "content": "19af7f21b0a8049e8d29d6934587b6b5"
  },
  {
    "path": "docs/structsvo_1_1KeypointIdentifier-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::KeypointIdentifier Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>frame</b> (defined in <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>frame_id</b> (defined in <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>keypoint_index_</b> (defined in <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>KeypointIdentifier</b>(const FramePtr &amp;_frame, const size_t _feature_index) (defined in <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>operator==</b>(const KeypointIdentifier &amp;other) const (defined in <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">svo::KeypointIdentifier</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1KeypointIdentifier.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::KeypointIdentifier Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1KeypointIdentifier-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::KeypointIdentifier Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::KeypointIdentifier:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1KeypointIdentifier__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1KeypointIdentifier_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a09d15f372643e9cf491ba34ea531d16b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a09d15f372643e9cf491ba34ea531d16b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>KeypointIdentifier</b> (const FramePtr &amp;_frame, const size_t _feature_index)</td></tr>\n<tr class=\"separator:a09d15f372643e9cf491ba34ea531d16b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa846460f23b3d31cbe3b2b0e8f9f312f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa846460f23b3d31cbe3b2b0e8f9f312f\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>operator==</b> (const <a class=\"el\" href=\"structsvo_1_1KeypointIdentifier.html\">KeypointIdentifier</a> &amp;other) const</td></tr>\n<tr class=\"separator:aa846460f23b3d31cbe3b2b0e8f9f312f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a24e44370e9d9e8a78baadd394144dbeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a24e44370e9d9e8a78baadd394144dbeb\"></a>\nFrameWeakPtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame</b></td></tr>\n<tr class=\"separator:a24e44370e9d9e8a78baadd394144dbeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87eb9bb0d0a5641f2cd1dedad45827ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87eb9bb0d0a5641f2cd1dedad45827ec\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>frame_id</b></td></tr>\n<tr class=\"separator:a87eb9bb0d0a5641f2cd1dedad45827ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40e364fe020711fbb52e448a116989ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a40e364fe020711fbb52e448a116989ee\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keypoint_index_</b></td></tr>\n<tr class=\"separator:a40e364fe020711fbb52e448a116989ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"point_8h_source.html\">point.h</a></li>\n<li>svo_common/src/point.cpp</li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1KeypointIdentifier__coll__graph.md5",
    "content": "d290cfe80463229478b7b84f56085489"
  },
  {
    "path": "docs/structsvo_1_1Matcher_1_1Options-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">Options</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Matcher::Options Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>affine_est_gain_</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>affine_est_offset_</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71\">align_1d</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e\">align_max_iter</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>epi_search_edgelet_filtering</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>epi_search_edgelet_max_angle</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81\">max_epi_length_optim</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b\">max_epi_search_steps</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>scan_on_unit_sphere</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb\">subpix_refinement</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>use_affine_warp_</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>verbose</b> (defined in <a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">svo::Matcher::Options</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Matcher_1_1Options.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Matcher::Options Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Matcher.html\">Matcher</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html\">Options</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1Matcher_1_1Options-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Matcher::Options Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::Matcher::Options:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1Matcher_1_1Options__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Matcher_1_1Options_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a162577038ffdb370a7f366ced6c15e71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a162577038ffdb370a7f366ced6c15e71\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a162577038ffdb370a7f366ced6c15e71\">align_1d</a> = false</td></tr>\n<tr class=\"memdesc:a162577038ffdb370a7f366ced6c15e71\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">in epipolar search: align patch 1D along epipolar line <br /></td></tr>\n<tr class=\"separator:a162577038ffdb370a7f366ced6c15e71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a209da4bf99c795453f20278efe16126e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a209da4bf99c795453f20278efe16126e\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a209da4bf99c795453f20278efe16126e\">align_max_iter</a> = 10</td></tr>\n<tr class=\"memdesc:a209da4bf99c795453f20278efe16126e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">number of iterations for aligning the feature patches in gauss newton <br /></td></tr>\n<tr class=\"separator:a209da4bf99c795453f20278efe16126e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73ab9ec912bd083c25e594f451208b81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a73ab9ec912bd083c25e594f451208b81\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a73ab9ec912bd083c25e594f451208b81\">max_epi_length_optim</a> = 2.0</td></tr>\n<tr class=\"memdesc:a73ab9ec912bd083c25e594f451208b81\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">max length of epipolar line to skip epipolar search and directly go to img align <br /></td></tr>\n<tr class=\"separator:a73ab9ec912bd083c25e594f451208b81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02d8425fefcbd1205027dbcca80cb22b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a02d8425fefcbd1205027dbcca80cb22b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a02d8425fefcbd1205027dbcca80cb22b\">max_epi_search_steps</a> = 100</td></tr>\n<tr class=\"memdesc:a02d8425fefcbd1205027dbcca80cb22b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">max number of evaluations along epipolar line <br /></td></tr>\n<tr class=\"separator:a02d8425fefcbd1205027dbcca80cb22b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28337eefd24e5ca13f42c234245090cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a28337eefd24e5ca13f42c234245090cb\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Matcher_1_1Options.html#a28337eefd24e5ca13f42c234245090cb\">subpix_refinement</a> = true</td></tr>\n<tr class=\"memdesc:a28337eefd24e5ca13f42c234245090cb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">do gauss newton feature patch alignment after epipolar search <br /></td></tr>\n<tr class=\"separator:a28337eefd24e5ca13f42c234245090cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fecd2773a09734cb404120ded74cd94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5fecd2773a09734cb404120ded74cd94\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>epi_search_edgelet_filtering</b> = true</td></tr>\n<tr class=\"separator:a5fecd2773a09734cb404120ded74cd94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5711ea16dae964eb617f93f9488b69e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab5711ea16dae964eb617f93f9488b69e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>scan_on_unit_sphere</b> = true</td></tr>\n<tr class=\"separator:ab5711ea16dae964eb617f93f9488b69e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd2d1ea6dd68a243bcc69751c3b7d71c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"acd2d1ea6dd68a243bcc69751c3b7d71c\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>epi_search_edgelet_max_angle</b> = 0.7</td></tr>\n<tr class=\"separator:acd2d1ea6dd68a243bcc69751c3b7d71c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adeb84c8f0dc24c0d211deb57516a4ace\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adeb84c8f0dc24c0d211deb57516a4ace\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>verbose</b> = false</td></tr>\n<tr class=\"separator:adeb84c8f0dc24c0d211deb57516a4ace\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a255536e5c0d15d12291627b11af1103d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a255536e5c0d15d12291627b11af1103d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>use_affine_warp_</b> = true</td></tr>\n<tr class=\"separator:a255536e5c0d15d12291627b11af1103d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d9d875defed6f05deb1b745ab306fca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5d9d875defed6f05deb1b745ab306fca\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_est_offset_</b> = true</td></tr>\n<tr class=\"separator:a5d9d875defed6f05deb1b745ab306fca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66a917bd8272cd97904017a5c1a5f2e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a66a917bd8272cd97904017a5c1a5f2e4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_est_gain_</b> = false</td></tr>\n<tr class=\"separator:a66a917bd8272cd97904017a5c1a5f2e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_direct/include/svo/direct/<a class=\"el\" href=\"matcher_8h_source.html\">matcher.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Matcher_1_1Options__coll__graph.md5",
    "content": "c36d10de955e71a40da0e9d157e39f92"
  },
  {
    "path": "docs/structsvo_1_1OptimizerBackendOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OptimizerBackendOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isam_detailed_results</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>isam_relinearize_skip</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>isam_relinearize_thresh</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>isam_wildfire_thresh</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>max_iterations_per_update</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>output_errors</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>trace_dir</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>verbose</b> (defined in <a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">svo::OptimizerBackendOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1OptimizerBackendOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::OptimizerBackendOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1OptimizerBackendOptions.html\">OptimizerBackendOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1OptimizerBackendOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::OptimizerBackendOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::OptimizerBackendOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1OptimizerBackendOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1OptimizerBackendOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9bdbfee8b9f264fdaae86a39fc8a793c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9bdbfee8b9f264fdaae86a39fc8a793c\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_iterations_per_update</b> = 10</td></tr>\n<tr class=\"separator:a9bdbfee8b9f264fdaae86a39fc8a793c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a648339ac8dfdf5f03fb8d0875f2fa885\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a648339ac8dfdf5f03fb8d0875f2fa885\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>verbose</b> = false</td></tr>\n<tr class=\"separator:a648339ac8dfdf5f03fb8d0875f2fa885\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac72b91dec676f37b7b872c0295993a44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac72b91dec676f37b7b872c0295993a44\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>output_errors</b> = false</td></tr>\n<tr class=\"separator:ac72b91dec676f37b7b872c0295993a44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a116dd5474ac30882c4ab3f91fe4ab989\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a116dd5474ac30882c4ab3f91fe4ab989\"></a>\nstd::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>trace_dir</b> = &quot;/tmp&quot;</td></tr>\n<tr class=\"separator:a116dd5474ac30882c4ab3f91fe4ab989\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a461ee26142c3fb27450d18e63c2d7cb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a461ee26142c3fb27450d18e63c2d7cb2\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isam_relinearize_thresh</b> = 0.1</td></tr>\n<tr class=\"separator:a461ee26142c3fb27450d18e63c2d7cb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a443af3d53f4bf73e32099810b9030e97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a443af3d53f4bf73e32099810b9030e97\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isam_relinearize_skip</b> = 10.0</td></tr>\n<tr class=\"separator:a443af3d53f4bf73e32099810b9030e97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5cf57c1b4794a424af63418d66b6a6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5cf57c1b4794a424af63418d66b6a6f\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isam_wildfire_thresh</b> = 0.001</td></tr>\n<tr class=\"separator:ae5cf57c1b4794a424af63418d66b6a6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa493977c59b7ca287d6ead8265421752\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa493977c59b7ca287d6ead8265421752\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>isam_detailed_results</b> = false</td></tr>\n<tr class=\"separator:aa493977c59b7ca287d6ead8265421752\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_backend/include/svo/backend/<a class=\"el\" href=\"backend__optimizer_8h_source.html\">backend_optimizer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1OptimizerBackendOptions__coll__graph.md5",
    "content": "b5deb3577768ee8f9fe6c2fd0b9ecbb4"
  },
  {
    "path": "docs/structsvo_1_1PoseOptimizer_1_1Statistics-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">Statistics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PoseOptimizer::Statistics Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>reproj_error_after</b> (defined in <a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>reproj_error_before</b> (defined in <a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Statistics</b>() (defined in <a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">svo::PoseOptimizer::Statistics</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1PoseOptimizer_1_1Statistics.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::PoseOptimizer::Statistics Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1PoseOptimizer.html\">PoseOptimizer</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1PoseOptimizer_1_1Statistics.html\">Statistics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1PoseOptimizer_1_1Statistics-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::PoseOptimizer::Statistics Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac365aba1ba333815426e7c371f304879\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ac365aba1ba333815426e7c371f304879\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reproj_error_after</b></td></tr>\n<tr class=\"separator:ac365aba1ba333815426e7c371f304879\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a290fceab24b8ede5aa07f06cc03e0816\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a290fceab24b8ede5aa07f06cc03e0816\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>reproj_error_before</b></td></tr>\n<tr class=\"separator:a290fceab24b8ede5aa07f06cc03e0816\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"pose__optimizer_8h_source.html\">pose_optimizer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1ReprojectorOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ReprojectorOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>affine_est_gain</b> (defined in <a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d\">affine_est_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9\">cell_size</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8\">max_n_features_per_frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3\">max_n_kfs</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8\">remove_unconstrained_points</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3\">reproject_unconverged_seeds</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">svo::ReprojectorOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1ReprojectorOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::ReprojectorOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html\">ReprojectorOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1ReprojectorOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::ReprojectorOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::ReprojectorOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1ReprojectorOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1ReprojectorOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abe5408782ea1132013ef35173584e3a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#abe5408782ea1132013ef35173584e3a8\">max_n_features_per_frame</a> = 120</td></tr>\n<tr class=\"separator:abe5408782ea1132013ef35173584e3a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31cae6c24c7800f4272a1152f6aa4de9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a31cae6c24c7800f4272a1152f6aa4de9\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a31cae6c24c7800f4272a1152f6aa4de9\">cell_size</a> = 30</td></tr>\n<tr class=\"memdesc:a31cae6c24c7800f4272a1152f6aa4de9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">(!) Cell width of a grid-cell. Controls the distribution of features. <br /></td></tr>\n<tr class=\"separator:a31cae6c24c7800f4272a1152f6aa4de9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ce58fb67cd8a4291aceae2dee0b9bb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a4ce58fb67cd8a4291aceae2dee0b9bb3\">max_n_kfs</a> = 5</td></tr>\n<tr class=\"separator:a4ce58fb67cd8a4291aceae2dee0b9bb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a733c5833f61674a170f3e70f79c479f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a733c5833f61674a170f3e70f79c479f3\">reproject_unconverged_seeds</a> = true</td></tr>\n<tr class=\"separator:a733c5833f61674a170f3e70f79c479f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb8e4221c1a0904f08b184f64f4b4ad8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#acb8e4221c1a0904f08b184f64f4b4ad8\">remove_unconstrained_points</a> = true</td></tr>\n<tr class=\"separator:acb8e4221c1a0904f08b184f64f4b4ad8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a200f450fb7125f43ff49b56e0d95fe0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a200f450fb7125f43ff49b56e0d95fe0d\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1ReprojectorOptions.html#a200f450fb7125f43ff49b56e0d95fe0d\">affine_est_offset</a> = true</td></tr>\n<tr class=\"memdesc:a200f450fb7125f43ff49b56e0d95fe0d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">use affine transformation to compensate for brightness change <br /></td></tr>\n<tr class=\"separator:a200f450fb7125f43ff49b56e0d95fe0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c86eca9ebb1a42b211dd4b839922d80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2c86eca9ebb1a42b211dd4b839922d80\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>affine_est_gain</b> = false</td></tr>\n<tr class=\"separator:a2c86eca9ebb1a42b211dd4b839922d80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a> config parameters Parameters marked with (!) are more important than the others. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abe5408782ea1132013ef35173584e3a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe5408782ea1132013ef35173584e3a8\">&#9670;&nbsp;</a></span>max_n_features_per_frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::ReprojectorOptions::max_n_features_per_frame = 120</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>(!) Maximum numbers of features to match. The image is divided in a grid and we try to find at maximum one feature per cell to assure that the features are well distributed in the image. (-1) means unlimited. </p>\n\n</div>\n</div>\n<a id=\"a4ce58fb67cd8a4291aceae2dee0b9bb3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ce58fb67cd8a4291aceae2dee0b9bb3\">&#9670;&nbsp;</a></span>max_n_kfs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t svo::ReprojectorOptions::max_n_kfs = 5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>We try to find the max_n_kfs closest keyframes that have overlapping field of view. </p>\n\n</div>\n</div>\n<a id=\"acb8e4221c1a0904f08b184f64f4b4ad8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb8e4221c1a0904f08b184f64f4b4ad8\">&#9670;&nbsp;</a></span>remove_unconstrained_points</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::ReprojectorOptions::remove_unconstrained_points = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Remove points that have less than two observations Disable this flag when initializing 3D points from the ground truth </p>\n\n</div>\n</div>\n<a id=\"a733c5833f61674a170f3e70f79c479f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a733c5833f61674a170f3e70f79c479f3\">&#9670;&nbsp;</a></span>reproject_unconverged_seeds</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool svo::ReprojectorOptions::reproject_unconverged_seeds = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>If we don't find enough 3d points or converged seeds, also try to match unconverged seeds. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1ReprojectorOptions__coll__graph.md5",
    "content": "d56eb28cc4a0b3d3459d5d1d45f593c3"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Candidate-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector::Candidate Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Candidate</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>Candidate</b>(const FramePtr _ref_frame, const size_t _ref_index, const Keypoint &amp;_cur_px, const size_t _n_reproj, const Score _score, const FeatureType &amp;_type) (defined in <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">cur_px</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc\">n_reproj</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">ref_frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">ref_index</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">score</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">svo::Reprojector::Candidate</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Candidate.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Reprojector::Candidate Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html\">Candidate</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1Reprojector_1_1Candidate-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector::Candidate Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nCollaboration diagram for svo::Reprojector::Candidate:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1Reprojector_1_1Candidate__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Reprojector_1_1Candidate_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a21959e3cfe177993f7ff708dd38eec3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a21959e3cfe177993f7ff708dd38eec3e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>Candidate</b> (const FramePtr _ref_frame, const size_t _ref_index, const Keypoint &amp;_cur_px, const size_t _n_reproj, const Score _score, const FeatureType &amp;_type)</td></tr>\n<tr class=\"separator:a21959e3cfe177993f7ff708dd38eec3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5df19d5001903e5c271c10813363518a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a5df19d5001903e5c271c10813363518a\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW FramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a5df19d5001903e5c271c10813363518a\">ref_frame</a></td></tr>\n<tr class=\"memdesc:a5df19d5001903e5c271c10813363518a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reference frame. <br /></td></tr>\n<tr class=\"separator:a5df19d5001903e5c271c10813363518a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47eeb3103e7aff240229251af4c27ea5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a47eeb3103e7aff240229251af4c27ea5\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a47eeb3103e7aff240229251af4c27ea5\">ref_index</a></td></tr>\n<tr class=\"memdesc:a47eeb3103e7aff240229251af4c27ea5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature index in reference frame. <br /></td></tr>\n<tr class=\"separator:a47eeb3103e7aff240229251af4c27ea5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd15a69c1719a940567e92f7c240ef2e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afd15a69c1719a940567e92f7c240ef2e\"></a>\nKeypoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#afd15a69c1719a940567e92f7c240ef2e\">cur_px</a></td></tr>\n<tr class=\"memdesc:afd15a69c1719a940567e92f7c240ef2e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projected 2D pixel location in current frame. <br /></td></tr>\n<tr class=\"separator:afd15a69c1719a940567e92f7c240ef2e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67d65bd0cdf394015263bbff9175a0dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a67d65bd0cdf394015263bbff9175a0dc\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a67d65bd0cdf394015263bbff9175a0dc\">n_reproj</a> = 0</td></tr>\n<tr class=\"memdesc:a67d65bd0cdf394015263bbff9175a0dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Number of previously successful projections for quality. <br /></td></tr>\n<tr class=\"separator:a67d65bd0cdf394015263bbff9175a0dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88f8dfa15b4cd42b1de12d3a22f2fdef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a88f8dfa15b4cd42b1de12d3a22f2fdef\"></a>\nScore&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a88f8dfa15b4cd42b1de12d3a22f2fdef\">score</a></td></tr>\n<tr class=\"memdesc:a88f8dfa15b4cd42b1de12d3a22f2fdef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Feature Detection Score. <br /></td></tr>\n<tr class=\"separator:a88f8dfa15b4cd42b1de12d3a22f2fdef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b4f2ef432dea3bc5b132a14f73a53b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7b4f2ef432dea3bc5b132a14f73a53b1\"></a>\nFeatureType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Candidate.html#a7b4f2ef432dea3bc5b132a14f73a53b1\">type</a></td></tr>\n<tr class=\"memdesc:a7b4f2ef432dea3bc5b132a14f73a53b1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type of feature to determine quality. <br /></td></tr>\n<tr class=\"separator:a7b4f2ef432dea3bc5b132a14f73a53b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>A candidate is a point that projects into the image plane and for which we will search a maching feature in the image. </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Candidate__coll__graph.md5",
    "content": "0964bc9bbca55cbf67d88c07f4127522"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Statistics-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Statistics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector::Statistics Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>n_matches</b> (defined in <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>n_trials</b> (defined in <a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">svo::Reprojector::Statistics</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Statistics.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::Reprojector::Statistics Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"classsvo_1_1Reprojector.html\">Reprojector</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1Reprojector_1_1Statistics.html\">Statistics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1Reprojector_1_1Statistics-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::Reprojector::Statistics Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::Reprojector::Statistics:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1Reprojector_1_1Statistics__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1Reprojector_1_1Statistics_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3fc6d0fd9a915ff2bee4a28099228f17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3fc6d0fd9a915ff2bee4a28099228f17\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_matches</b> = 0</td></tr>\n<tr class=\"separator:a3fc6d0fd9a915ff2bee4a28099228f17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e007c2a9d6591abc865040dd2c30a87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a0e007c2a9d6591abc865040dd2c30a87\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_trials</b> = 0</td></tr>\n<tr class=\"separator:a0e007c2a9d6591abc865040dd2c30a87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"reprojector_8h_source.html\">reprojector.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1Reprojector_1_1Statistics__coll__graph.md5",
    "content": "28b4e284fadf0a75177c989ae1be92d7"
  },
  {
    "path": "docs/structsvo_1_1SeedRef-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SeedRef Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>keyframe</b> (defined in <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>seed_id</b> (defined in <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>SeedRef</b>(const FramePtr &amp;_keyframe, const int _seed_id) (defined in <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>SeedRef</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~SeedRef</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">svo::SeedRef</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1SeedRef.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SeedRef Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SeedRef.html\">SeedRef</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1SeedRef-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SeedRef Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:afc26e8bf2d5a61fd2fe18a581c3dd9f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"afc26e8bf2d5a61fd2fe18a581c3dd9f9\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>SeedRef</b> (const FramePtr &amp;_keyframe, const int _seed_id)</td></tr>\n<tr class=\"separator:afc26e8bf2d5a61fd2fe18a581c3dd9f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a057d993bcea6003f872195843ec5a71a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a057d993bcea6003f872195843ec5a71a\"></a>\nFramePtr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keyframe</b></td></tr>\n<tr class=\"separator:a057d993bcea6003f872195843ec5a71a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a691d8008306ff045fd8f156890206272\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a691d8008306ff045fd8f156890206272\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>seed_id</b> = -1</td></tr>\n<tr class=\"separator:a691d8008306ff045fd8f156890206272\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_common/include/svo/common/<a class=\"el\" href=\"feature__wrapper_8h_source.html\">feature_wrapper.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1SparseImgAlignOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>estimate_illumination_gain</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>estimate_illumination_offset</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>max_level</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>min_level</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>robustification</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>use_distortion_jacobian</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>weight_scale</b> (defined in <a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">svo::SparseImgAlignOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1SparseImgAlignOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SparseImgAlignOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignOptions.html\">SparseImgAlignOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1SparseImgAlignOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Sparse Image Alignment Options.  \n <a href=\"structsvo_1_1SparseImgAlignOptions.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab89c203d52bc1ae09dc370d19b09ced6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab89c203d52bc1ae09dc370d19b09ced6\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_level</b> = 4</td></tr>\n<tr class=\"separator:ab89c203d52bc1ae09dc370d19b09ced6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8918907ed3ffd34ac1d33c0cb234ce54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8918907ed3ffd34ac1d33c0cb234ce54\"></a>\nint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_level</b> = 1</td></tr>\n<tr class=\"separator:a8918907ed3ffd34ac1d33c0cb234ce54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a196046dc211c7d1040b055513090611e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a196046dc211c7d1040b055513090611e\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimate_illumination_gain</b> = false</td></tr>\n<tr class=\"separator:a196046dc211c7d1040b055513090611e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab91c5e4cb5c93d84bc104c0827d2cee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ab91c5e4cb5c93d84bc104c0827d2cee4\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>estimate_illumination_offset</b> = false</td></tr>\n<tr class=\"separator:ab91c5e4cb5c93d84bc104c0827d2cee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9836fe8f6a6555850d9168c9093a306a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9836fe8f6a6555850d9168c9093a306a\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>use_distortion_jacobian</b> = false</td></tr>\n<tr class=\"separator:a9836fe8f6a6555850d9168c9093a306a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabbf8ecca48771abe92cf881768003fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aabbf8ecca48771abe92cf881768003fe\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>robustification</b> = false</td></tr>\n<tr class=\"separator:aabbf8ecca48771abe92cf881768003fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1affe7c8ffbfca425483e27dffb5ac0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad1affe7c8ffbfca425483e27dffb5ac0\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>weight_scale</b> = 10</td></tr>\n<tr class=\"separator:ad1affe7c8ffbfca425483e27dffb5ac0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>Sparse Image Alignment Options. </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1SparseImgAlignState-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignState Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf\">alpha</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81\">beta</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">T_icur_iref</a></td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">svo::SparseImgAlignState</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1SparseImgAlignState.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::SparseImgAlignState Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html\">SparseImgAlignState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1SparseImgAlignState-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::SparseImgAlignState Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>State to be estimated.  \n <a href=\"structsvo_1_1SparseImgAlignState.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a36f5ab3915ef3499843d733e615c73c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a36f5ab3915ef3499843d733e615c73c5\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW Transformation&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a36f5ab3915ef3499843d733e615c73c5\">T_icur_iref</a></td></tr>\n<tr class=\"memdesc:a36f5ab3915ef3499843d733e615c73c5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Relative transformation between last and current frame. <br /></td></tr>\n<tr class=\"separator:a36f5ab3915ef3499843d733e615c73c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea412f89d919a21e4f2316056a3ca4cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aea412f89d919a21e4f2316056a3ca4cf\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#aea412f89d919a21e4f2316056a3ca4cf\">alpha</a> = 0.0</td></tr>\n<tr class=\"memdesc:aea412f89d919a21e4f2316056a3ca4cf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Affine illumination model multiplicative parameter. <br /></td></tr>\n<tr class=\"separator:aea412f89d919a21e4f2316056a3ca4cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17d192305a14bae826afe77ac8a68d81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a17d192305a14bae826afe77ac8a68d81\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structsvo_1_1SparseImgAlignState.html#a17d192305a14bae826afe77ac8a68d81\">beta</a> = 0.0</td></tr>\n<tr class=\"memdesc:a17d192305a14bae826afe77ac8a68d81\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Affine illumination model additive parameter. <br /></td></tr>\n<tr class=\"separator:a17d192305a14bae826afe77ac8a68d81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>State to be estimated. </p>\n</div><hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_img_align/include/svo/img_align/<a class=\"el\" href=\"sparse__img__align__base_8h_source.html\">sparse_img_align_base.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1StereoTriangulationOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoTriangulationOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>max_depth_inv</b> (defined in <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>mean_depth_inv</b> (defined in <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>min_depth_inv</b> (defined in <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>triangulate_n_features</b> (defined in <a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">svo::StereoTriangulationOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1StereoTriangulationOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::StereoTriangulationOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1StereoTriangulationOptions.html\">StereoTriangulationOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1StereoTriangulationOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::StereoTriangulationOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for svo::StereoTriangulationOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1StereoTriangulationOptions__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1StereoTriangulationOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae94c0c1c28a26d779c9ee92ef664b92b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae94c0c1c28a26d779c9ee92ef664b92b\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>triangulate_n_features</b> = 120</td></tr>\n<tr class=\"separator:ae94c0c1c28a26d779c9ee92ef664b92b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af53d12b7b71335ec53f47409af92dc2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af53d12b7b71335ec53f47409af92dc2f\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>mean_depth_inv</b> = 1.0/3.0</td></tr>\n<tr class=\"separator:af53d12b7b71335ec53f47409af92dc2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcaed503939183d462982092e27bea57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"abcaed503939183d462982092e27bea57\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>min_depth_inv</b> = 1.0/1.0</td></tr>\n<tr class=\"separator:abcaed503939183d462982092e27bea57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2432fad3f95edebdfb5e1426fdfb1e96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a2432fad3f95edebdfb5e1426fdfb1e96\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>max_depth_inv</b> = 1.0/50.0</td></tr>\n<tr class=\"separator:a2432fad3f95edebdfb5e1426fdfb1e96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo/include/svo/<a class=\"el\" href=\"stereo__triangulation_8h_source.html\">stereo_triangulation.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1StereoTriangulationOptions__coll__graph.md5",
    "content": "681891a8988c3b06098b74a6cf0c8bae"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1CameraMeasurement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::CameraMeasurement Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(CameraMeasurement) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(MeasurementBase) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>camera_index</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>CameraMeasurement</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>CameraMeasurement</b>(int64_t timestamp_nanoseconds, size_t camera_index, const std::string &amp;image_path_filename) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>getImage</b>() const (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>image_path_filename</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>measurement_type</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MeasurementBase</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MeasurementBase</b>(int64_t timestamp_nanoseconds, MeasurementType type) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timestamp_nanoseconds</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~CameraMeasurement</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">svo::dataset::CameraMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~MeasurementBase</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1CameraMeasurement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::dataset::CameraMeasurement Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1dataset_1_1CameraMeasurement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::CameraMeasurement Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::dataset::CameraMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1CameraMeasurement__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1CameraMeasurement_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1dataset_1_1CameraMeasurement_inherit__map\" id=\"svo_1_1dataset_1_1CameraMeasurement_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"13,5,224,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::dataset::CameraMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1CameraMeasurement__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1CameraMeasurement_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1dataset_1_1CameraMeasurement_coll__map\" id=\"svo_1_1dataset_1_1CameraMeasurement_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"13,5,224,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a14b6c44161004d65ba4482cc951a139b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a14b6c44161004d65ba4482cc951a139b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\">CameraMeasurement</a>)</td></tr>\n<tr class=\"separator:a14b6c44161004d65ba4482cc951a139b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87309369b2a87bb99cdbc0d2eda5522f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a87309369b2a87bb99cdbc0d2eda5522f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>CameraMeasurement</b> (int64_t timestamp_nanoseconds, size_t camera_index, const std::string &amp;image_path_filename)</td></tr>\n<tr class=\"separator:a87309369b2a87bb99cdbc0d2eda5522f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba48ee05b34fec589a91a5875e26936e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aba48ee05b34fec589a91a5875e26936e\"></a>\ncv::Mat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>getImage</b> () const</td></tr>\n<tr class=\"separator:aba48ee05b34fec589a91a5875e26936e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a50568fb4a3b7c0b0fe70b59394f22e1f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>)</td></tr>\n<tr class=\"separator:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82c55c87593202290787bfeaf373af41\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MeasurementBase</b> (int64_t timestamp_nanoseconds, MeasurementType type)</td></tr>\n<tr class=\"separator:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a712d5783c1ff522b3ec21738538204a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a712d5783c1ff522b3ec21738538204a6\"></a>\nconst size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_index</b></td></tr>\n<tr class=\"separator:a712d5783c1ff522b3ec21738538204a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca0bd24af6e5d57d215f18dd6a9b8a1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aca0bd24af6e5d57d215f18dd6a9b8a1a\"></a>\nconst std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>image_path_filename</b></td></tr>\n<tr class=\"separator:aca0bd24af6e5d57d215f18dd6a9b8a1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b5f21cd0825393da25eccbcd4cd5ea4\"></a>\nconst int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_nanoseconds</b></td></tr>\n<tr class=\"separator:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9be8e703524ce7a332c3fc408466ffb5\"></a>\nconst MeasurementType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurement_type</b></td></tr>\n<tr class=\"separator:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"csv__dataset__reader_8h_source.html\">csv_dataset_reader.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1CameraMeasurement__coll__graph.md5",
    "content": "6e7cbb9828e00143a66c0506a9309233"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1CameraMeasurement__inherit__graph.md5",
    "content": "db6eca17795e054fc471792b801e02f0"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1FeatureTrackMeasurement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::FeatureTrackMeasurement Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(FeatureTrackMeasurement) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(MeasurementBase) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>camera_index</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>FeatureTrackMeasurement</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>FeatureTrackMeasurement</b>(int64_t timestamp_nanoseconds, size_t camera_index, int track_id, const Eigen::Vector2d &amp;keypoint_measurement, double keypoint_std_dev) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>keypoint_measurement</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>keypoint_std_dev</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>measurement_type</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MeasurementBase</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MeasurementBase</b>(int64_t timestamp_nanoseconds, MeasurementType type) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timestamp_nanoseconds</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>track_id</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~FeatureTrackMeasurement</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">svo::dataset::FeatureTrackMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MeasurementBase</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1FeatureTrackMeasurement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::dataset::FeatureTrackMeasurement Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::FeatureTrackMeasurement Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::dataset::FeatureTrackMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1FeatureTrackMeasurement_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1dataset_1_1FeatureTrackMeasurement_inherit__map\" id=\"svo_1_1dataset_1_1FeatureTrackMeasurement_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"5,5,216,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::dataset::FeatureTrackMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1FeatureTrackMeasurement_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1dataset_1_1FeatureTrackMeasurement_coll__map\" id=\"svo_1_1dataset_1_1FeatureTrackMeasurement_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"5,5,216,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae29a0a0da47f82b00934e49a0ea0501b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae29a0a0da47f82b00934e49a0ea0501b\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\">FeatureTrackMeasurement</a>)</td></tr>\n<tr class=\"separator:ae29a0a0da47f82b00934e49a0ea0501b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dd0977ee58b23be6a9cc3cfaa643abd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7dd0977ee58b23be6a9cc3cfaa643abd\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>FeatureTrackMeasurement</b> (int64_t timestamp_nanoseconds, size_t camera_index, int track_id, const Eigen::Vector2d &amp;keypoint_measurement, double keypoint_std_dev)</td></tr>\n<tr class=\"separator:a7dd0977ee58b23be6a9cc3cfaa643abd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a50568fb4a3b7c0b0fe70b59394f22e1f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>)</td></tr>\n<tr class=\"separator:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82c55c87593202290787bfeaf373af41\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MeasurementBase</b> (int64_t timestamp_nanoseconds, MeasurementType type)</td></tr>\n<tr class=\"separator:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aae11616c5a71a9191837bd5dbbd76442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aae11616c5a71a9191837bd5dbbd76442\"></a>\nconst size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>camera_index</b></td></tr>\n<tr class=\"separator:aae11616c5a71a9191837bd5dbbd76442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a056f307d8064b57eac71b3b17d763c34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a056f307d8064b57eac71b3b17d763c34\"></a>\nconst int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>track_id</b></td></tr>\n<tr class=\"separator:a056f307d8064b57eac71b3b17d763c34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4aaa91f06d9d265366e3f56d7b57af06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4aaa91f06d9d265366e3f56d7b57af06\"></a>\nconst Eigen::Vector2d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keypoint_measurement</b></td></tr>\n<tr class=\"separator:a4aaa91f06d9d265366e3f56d7b57af06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99bca2c5ca167195e3bf16d2400a6859\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a99bca2c5ca167195e3bf16d2400a6859\"></a>\nconst double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>keypoint_std_dev</b></td></tr>\n<tr class=\"separator:a99bca2c5ca167195e3bf16d2400a6859\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b5f21cd0825393da25eccbcd4cd5ea4\"></a>\nconst int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_nanoseconds</b></td></tr>\n<tr class=\"separator:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9be8e703524ce7a332c3fc408466ffb5\"></a>\nconst MeasurementType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurement_type</b></td></tr>\n<tr class=\"separator:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"csv__dataset__reader_8h_source.html\">csv_dataset_reader.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1FeatureTrackMeasurement__coll__graph.md5",
    "content": "ca93fe5cfb24350e9535bbee6545a49e"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1FeatureTrackMeasurement__inherit__graph.md5",
    "content": "5bd81e8fbc6ac76b4f9652626160758e"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1ImuMeasurement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::ImuMeasurement Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>acc_gyro_measurement</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(ImuMeasurement) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(MeasurementBase) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ImuMeasurement</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ImuMeasurement</b>(int64_t timestamp_nanoseconds, const Eigen::Matrix&lt; double, 6, 1 &gt; &amp;acc_gyro_measurement) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>measurement_type</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MeasurementBase</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MeasurementBase</b>(int64_t timestamp_nanoseconds, MeasurementType type) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timestamp_nanoseconds</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~ImuMeasurement</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">svo::dataset::ImuMeasurement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>~MeasurementBase</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1ImuMeasurement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::dataset::ImuMeasurement Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1dataset_1_1ImuMeasurement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::ImuMeasurement Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::dataset::ImuMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1ImuMeasurement__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1ImuMeasurement_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1dataset_1_1ImuMeasurement_inherit__map\" id=\"svo_1_1dataset_1_1ImuMeasurement_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"5,5,216,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<div class=\"dynheader\">\nCollaboration diagram for svo::dataset::ImuMeasurement:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1ImuMeasurement__coll__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1ImuMeasurement_coll__map\" alt=\"Collaboration graph\"/></div>\n<map name=\"svo_1_1dataset_1_1ImuMeasurement_coll__map\" id=\"svo_1_1dataset_1_1ImuMeasurement_coll__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\" title=\"svo::dataset::MeasurementBase\" alt=\"\" coords=\"5,5,216,32\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adb3f8a05fdbfb3b390d52444884a547e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adb3f8a05fdbfb3b390d52444884a547e\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\">ImuMeasurement</a>)</td></tr>\n<tr class=\"separator:adb3f8a05fdbfb3b390d52444884a547e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12278f4e62ac2603fa1cd9ab4e608e18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a12278f4e62ac2603fa1cd9ab4e608e18\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ImuMeasurement</b> (int64_t timestamp_nanoseconds, const Eigen::Matrix&lt; double, 6, 1 &gt; &amp;acc_gyro_measurement)</td></tr>\n<tr class=\"separator:a12278f4e62ac2603fa1cd9ab4e608e18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a50568fb4a3b7c0b0fe70b59394f22e1f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>)</td></tr>\n<tr class=\"separator:a50568fb4a3b7c0b0fe70b59394f22e1f inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82c55c87593202290787bfeaf373af41\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MeasurementBase</b> (int64_t timestamp_nanoseconds, MeasurementType type)</td></tr>\n<tr class=\"separator:a82c55c87593202290787bfeaf373af41 inherit pub_methods_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad0aa2c039fd2713331d4b2a678d0e474\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0aa2c039fd2713331d4b2a678d0e474\"></a>\nconst Eigen::Matrix&lt; double, 6, 1 &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>acc_gyro_measurement</b></td></tr>\n<tr class=\"separator:ad0aa2c039fd2713331d4b2a678d0e474\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structsvo_1_1dataset_1_1MeasurementBase')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td></tr>\n<tr class=\"memitem:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b5f21cd0825393da25eccbcd4cd5ea4\"></a>\nconst int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_nanoseconds</b></td></tr>\n<tr class=\"separator:a9b5f21cd0825393da25eccbcd4cd5ea4 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9be8e703524ce7a332c3fc408466ffb5\"></a>\nconst MeasurementType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurement_type</b></td></tr>\n<tr class=\"separator:a9be8e703524ce7a332c3fc408466ffb5 inherit pub_attribs_structsvo_1_1dataset_1_1MeasurementBase\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"csv__dataset__reader_8h_source.html\">csv_dataset_reader.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1ImuMeasurement__coll__graph.md5",
    "content": "dc0a673556879a1e63cf16a98e2b0d51"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1ImuMeasurement__inherit__graph.md5",
    "content": "dcdb54b746513877a4ad5b10e29cc8e5"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1MeasurementBase-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::MeasurementBase Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ASLAM_POINTER_TYPEDEFS</b>(MeasurementBase) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>measurement_type</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>MeasurementBase</b>()=delete (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>MeasurementBase</b>(int64_t timestamp_nanoseconds, MeasurementType type) (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>timestamp_nanoseconds</b> (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>~MeasurementBase</b>()=default (defined in <a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">svo::dataset::MeasurementBase</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1MeasurementBase.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo::dataset::MeasurementBase Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacesvo.html\">svo</a></li><li class=\"navelem\"><b>dataset</b></li><li class=\"navelem\"><a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structsvo_1_1dataset_1_1MeasurementBase-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">svo::dataset::MeasurementBase Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for svo::dataset::MeasurementBase:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structsvo_1_1dataset_1_1MeasurementBase__inherit__graph.png\" border=\"0\" usemap=\"#svo_1_1dataset_1_1MeasurementBase_inherit__map\" alt=\"Inheritance graph\"/></div>\n<map name=\"svo_1_1dataset_1_1MeasurementBase_inherit__map\" id=\"svo_1_1dataset_1_1MeasurementBase_inherit__map\">\n<area shape=\"rect\" id=\"node2\" href=\"structsvo_1_1dataset_1_1CameraMeasurement.html\" title=\"svo::dataset::CameraMeasurement\" alt=\"\" coords=\"264,5,491,32\"/>\n<area shape=\"rect\" id=\"node3\" href=\"structsvo_1_1dataset_1_1FeatureTrackMeasurement.html\" title=\"svo::dataset::FeatureTrack\\lMeasurement\" alt=\"\" coords=\"288,57,467,98\"/>\n<area shape=\"rect\" id=\"node4\" href=\"structsvo_1_1dataset_1_1ImuMeasurement.html\" title=\"svo::dataset::ImuMeasurement\" alt=\"\" coords=\"276,123,479,149\"/>\n</map>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a50568fb4a3b7c0b0fe70b59394f22e1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a50568fb4a3b7c0b0fe70b59394f22e1f\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ASLAM_POINTER_TYPEDEFS</b> (<a class=\"el\" href=\"structsvo_1_1dataset_1_1MeasurementBase.html\">MeasurementBase</a>)</td></tr>\n<tr class=\"separator:a50568fb4a3b7c0b0fe70b59394f22e1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82c55c87593202290787bfeaf373af41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a82c55c87593202290787bfeaf373af41\"></a>\n&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>MeasurementBase</b> (int64_t timestamp_nanoseconds, MeasurementType type)</td></tr>\n<tr class=\"separator:a82c55c87593202290787bfeaf373af41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9b5f21cd0825393da25eccbcd4cd5ea4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9b5f21cd0825393da25eccbcd4cd5ea4\"></a>\nconst int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>timestamp_nanoseconds</b></td></tr>\n<tr class=\"separator:a9b5f21cd0825393da25eccbcd4cd5ea4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8e703524ce7a332c3fc408466ffb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9be8e703524ce7a332c3fc408466ffb5\"></a>\nconst MeasurementType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>measurement_type</b></td></tr>\n<tr class=\"separator:a9be8e703524ce7a332c3fc408466ffb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_ros/include/svo_ros/<a class=\"el\" href=\"csv__dataset__reader_8h_source.html\">csv_dataset_reader.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structsvo_1_1dataset_1_1MeasurementBase__inherit__graph.md5",
    "content": "ba66ecd96b97fb5584ecb1290f82c931"
  },
  {
    "path": "docs/structvk_1_1Homography-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1Homography.html\">Homography</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Homography Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>Homography</b>() (defined in <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>n_cur</b> (defined in <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>R_cur_ref</b> (defined in <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>score</b> (defined in <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>t_cur_ref</b> (defined in <a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1Homography.html\">vk::Homography</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1Homography.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::Homography Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1Homography.html\">Homography</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structvk_1_1Homography-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::Homography Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for vk::Homography:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structvk_1_1Homography__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1Homography_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a278a38b71a7951f1057945164e579f69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a278a38b71a7951f1057945164e579f69\"></a>\nEIGEN_MAKE_ALIGNED_OPERATOR_NEW Eigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>t_cur_ref</b></td></tr>\n<tr class=\"separator:a278a38b71a7951f1057945164e579f69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fc8132a86957b58a0ec04c3eee6d3c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a6fc8132a86957b58a0ec04c3eee6d3c8\"></a>\nEigen::Matrix3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>R_cur_ref</b></td></tr>\n<tr class=\"separator:a6fc8132a86957b58a0ec04c3eee6d3c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa000eca357bf1839b1ae0bf484e8161d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"aa000eca357bf1839b1ae0bf484e8161d\"></a>\nEigen::Vector3d&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>n_cur</b></td></tr>\n<tr class=\"separator:aa000eca357bf1839b1ae0bf484e8161d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f9d5ab67249347e6762dd5ac74c9d26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f9d5ab67249347e6762dd5ac74c9d26\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>score</b></td></tr>\n<tr class=\"separator:a7f9d5ab67249347e6762dd5ac74c9d26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"homography_8h_source.html\">homography.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1Homography__coll__graph.md5",
    "content": "cfc1bcd0f9fe12443a271207d5841502"
  },
  {
    "path": "docs/structvk_1_1LogItem-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1LogItem.html\">LogItem</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::LogItem Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structvk_1_1LogItem.html\">vk::LogItem</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>data</b> (defined in <a class=\"el\" href=\"structvk_1_1LogItem.html\">vk::LogItem</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1LogItem.html\">vk::LogItem</a></td><td class=\"entry\"></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>set</b> (defined in <a class=\"el\" href=\"structvk_1_1LogItem.html\">vk::LogItem</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1LogItem.html\">vk::LogItem</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1LogItem.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::LogItem Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1LogItem.html\">LogItem</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structvk_1_1LogItem-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::LogItem Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ace88e847bc52e5668a313e60b79ed4ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ace88e847bc52e5668a313e60b79ed4ab\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>data</b></td></tr>\n<tr class=\"separator:ace88e847bc52e5668a313e60b79ed4ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c857b3650766a71414ceaee32556347\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a4c857b3650766a71414ceaee32556347\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>set</b></td></tr>\n<tr class=\"separator:a4c857b3650766a71414ceaee32556347\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_common/include/vikit/<a class=\"el\" href=\"performance__monitor_8h_source.html\">performance_monitor.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1cameras_1_1ProjectionResult-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::ProjectionResult Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">getDetailedStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">isKeypointVisible</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>KEYPOINT_OUTSIDE_IMAGE_BOX</b> (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>KEYPOINT_VISIBLE</b> (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02\">operator bool</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">operator&lt;&lt;</a>(std::ostream &amp;out, const ProjectionResult &amp;state)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">operator==</a>(const ProjectionResult &amp;other) const</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">operator==</a>(const ProjectionResult::Status &amp;other) const</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>POINT_BEHIND_CAMERA</b> (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>PROJECTION_INVALID</b> (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>ProjectionResult</b>() (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\"><td class=\"entry\"><b>ProjectionResult</b>(Status status) (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">private</span></td></tr>\n  <tr bgcolor=\"#f0f0f0\" class=\"even\"><td class=\"entry\"><b>UNINITIALIZED</b> (defined in <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a>)</td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">vk::cameras::ProjectionResult</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1cameras_1_1ProjectionResult.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::cameras::ProjectionResult Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>cameras</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-attribs\">Static Public Attributes</a> &#124;\n<a href=\"#pri-attribs\">Private Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"structvk_1_1cameras_1_1ProjectionResult-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::cameras::ProjectionResult Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This struct is returned by the camera projection methods and holds the result state of the projection operation.  \n <a href=\"structvk_1_1cameras_1_1ProjectionResult.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"camera__geometry__base_8h_source.html\">camera_geometry_base.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a5524943bd5801bd11fb9c07e75edd312\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\">Status::KEYPOINT_VISIBLE</a>, \n<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\">Status::KEYPOINT_OUTSIDE_IMAGE_BOX</a>, \n<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\">Status::POINT_BEHIND_CAMERA</a>, \n<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\">Status::PROJECTION_INVALID</a>, \n<br />\n&#160;&#160;<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\">Status::UNINITIALIZED</a>\n<br />\n }<tr class=\"memdesc:a5524943bd5801bd11fb9c07e75edd312\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Possible projection state.  <a href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">More...</a><br /></td></tr>\n</td></tr>\n<tr class=\"separator:a5524943bd5801bd11fb9c07e75edd312\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af2e3d7d57351c878e43c976a02e785af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af2e3d7d57351c878e43c976a02e785af\"></a>\nconstexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>ProjectionResult</b> (<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> status)</td></tr>\n<tr class=\"separator:af2e3d7d57351c878e43c976a02e785af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6403afbbcff79d1492ba017930bec02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ac6403afbbcff79d1492ba017930bec02\">operator bool</a> () const</td></tr>\n<tr class=\"memdesc:ac6403afbbcff79d1492ba017930bec02\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\" title=\"This struct is returned by the camera projection methods and holds the result state of the projection...\">ProjectionResult</a> can be typecasted to bool and is true if the projected keypoint is visible. Simplifies the check for a successful projection. Example usage:  <a href=\"#ac6403afbbcff79d1492ba017930bec02\">More...</a><br /></td></tr>\n<tr class=\"separator:ac6403afbbcff79d1492ba017930bec02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9e1945724a8e58cbf7fda05aaed6092\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad9e1945724a8e58cbf7fda05aaed6092\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#ad9e1945724a8e58cbf7fda05aaed6092\">operator==</a> (const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> &amp;other) const</td></tr>\n<tr class=\"memdesc:ad9e1945724a8e58cbf7fda05aaed6092\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Compare objects. <br /></td></tr>\n<tr class=\"separator:ad9e1945724a8e58cbf7fda05aaed6092\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a670e85cb801a1091350ed9fb3245f793\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a670e85cb801a1091350ed9fb3245f793\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a670e85cb801a1091350ed9fb3245f793\">operator==</a> (const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">ProjectionResult::Status</a> &amp;other) const</td></tr>\n<tr class=\"memdesc:a670e85cb801a1091350ed9fb3245f793\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Compare projection status. <br /></td></tr>\n<tr class=\"separator:a670e85cb801a1091350ed9fb3245f793\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43716762b048c569e1d1bf9429e9cebb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a43716762b048c569e1d1bf9429e9cebb\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a43716762b048c569e1d1bf9429e9cebb\">isKeypointVisible</a> () const</td></tr>\n<tr class=\"memdesc:a43716762b048c569e1d1bf9429e9cebb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether the projection was successful and the point is visible in the image. <br /></td></tr>\n<tr class=\"separator:a43716762b048c569e1d1bf9429e9cebb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef4707e30cf124bbe9bd5b3c52132968\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#aef4707e30cf124bbe9bd5b3c52132968\">getDetailedStatus</a> () const</td></tr>\n<tr class=\"memdesc:aef4707e30cf124bbe9bd5b3c52132968\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the exact state of the projection operation. Example usage:  <a href=\"#aef4707e30cf124bbe9bd5b3c52132968\">More...</a><br /></td></tr>\n<tr class=\"separator:aef4707e30cf124bbe9bd5b3c52132968\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-static-attribs\"></a>\nStatic Public Attributes</h2></td></tr>\n<tr class=\"memitem:a9ea989e897fd95da5f1ca937e3367185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9ea989e897fd95da5f1ca937e3367185\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>KEYPOINT_VISIBLE</b></td></tr>\n<tr class=\"separator:a9ea989e897fd95da5f1ca937e3367185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af283fca7cb85cb5c6333c0a8cf179663\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"af283fca7cb85cb5c6333c0a8cf179663\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>KEYPOINT_OUTSIDE_IMAGE_BOX</b></td></tr>\n<tr class=\"separator:af283fca7cb85cb5c6333c0a8cf179663\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5e729a5362c1aa09f45001bf70cab84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae5e729a5362c1aa09f45001bf70cab84\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>POINT_BEHIND_CAMERA</b></td></tr>\n<tr class=\"separator:ae5e729a5362c1aa09f45001bf70cab84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9683fad5dceb478cbf5cbe8e63444b1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a9683fad5dceb478cbf5cbe8e63444b1e\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>PROJECTION_INVALID</b></td></tr>\n<tr class=\"separator:a9683fad5dceb478cbf5cbe8e63444b1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f3cd5504feee448f59ca550a91636eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a7f3cd5504feee448f59ca550a91636eb\"></a>\nstatic <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><b>UNINITIALIZED</b></td></tr>\n<tr class=\"separator:a7f3cd5504feee448f59ca550a91636eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pri-attribs\"></a>\nPrivate Attributes</h2></td></tr>\n<tr class=\"memitem:adcf5d28419673b529bf333ecb99d4706\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adcf5d28419673b529bf333ecb99d4706\"></a>\n<a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#adcf5d28419673b529bf333ecb99d4706\">status_</a></td></tr>\n<tr class=\"memdesc:adcf5d28419673b529bf333ecb99d4706\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stores the projection state. <br /></td></tr>\n<tr class=\"separator:adcf5d28419673b529bf333ecb99d4706\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a8d446188ba2fc29a1098b669f3a11274\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a8d446188ba2fc29a1098b669f3a11274\"></a>\nstd::ostream &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a8d446188ba2fc29a1098b669f3a11274\">operator&lt;&lt;</a> (std::ostream &amp;out, const <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\">ProjectionResult</a> &amp;state)</td></tr>\n<tr class=\"memdesc:a8d446188ba2fc29a1098b669f3a11274\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Convenience function to print the state using streams. <br /></td></tr>\n<tr class=\"separator:a8d446188ba2fc29a1098b669f3a11274\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p>This struct is returned by the camera projection methods and holds the result state of the projection operation. </p>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a5524943bd5801bd11fb9c07e75edd312\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5524943bd5801bd11fb9c07e75edd312\">&#9670;&nbsp;</a></span>Status</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">vk::cameras::ProjectionResult::Status</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Possible projection state. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a5524943bd5801bd11fb9c07e75edd312a51242cfcdbceaf8ca0f8b66ce0b69ca0\"></a>KEYPOINT_VISIBLE&#160;</td><td class=\"fielddoc\"><p>Keypoint is visible and projection was successful. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5524943bd5801bd11fb9c07e75edd312aec9a67f1d919e4f2351119194485fa5a\"></a>KEYPOINT_OUTSIDE_IMAGE_BOX&#160;</td><td class=\"fielddoc\"><p>Keypoint is NOT visible but projection was successful. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5524943bd5801bd11fb9c07e75edd312a5f89bbc94d95c41f4740bd22ba2843f5\"></a>POINT_BEHIND_CAMERA&#160;</td><td class=\"fielddoc\"><p>The projected point lies behind the camera plane. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5524943bd5801bd11fb9c07e75edd312afb2c921334dc4650c7cc815f8f0dae52\"></a>PROJECTION_INVALID&#160;</td><td class=\"fielddoc\"><p>The projection was unsuccessful. </p>\n</td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5524943bd5801bd11fb9c07e75edd312add652546039b18970b8dcf2cff824268\"></a>UNINITIALIZED&#160;</td><td class=\"fielddoc\"><p>Default value after construction. </p>\n</td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aef4707e30cf124bbe9bd5b3c52132968\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef4707e30cf124bbe9bd5b3c52132968\">&#9670;&nbsp;</a></span>getDetailedStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html#a5524943bd5801bd11fb9c07e75edd312\">Status</a> vk::cameras::ProjectionResult::getDetailedStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the exact state of the projection operation. Example usage: </p>\n<div class=\"fragment\"><div class=\"line\">aslam::ProjectionResult ret = camera_-&gt;project3(Eigen::Vector3d(0, 0, -1), &amp;keypoint);</div><div class=\"line\"><span class=\"keywordflow\">if</span>(ret.getDetailedStatus() == aslam::ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX)</div><div class=\"line\">  std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Point behind camera! Lets do something...\\n&quot;</span>;</div></div><!-- fragment --> \n</div>\n</div>\n<a id=\"ac6403afbbcff79d1492ba017930bec02\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6403afbbcff79d1492ba017930bec02\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">vk::cameras::ProjectionResult::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p><a class=\"el\" href=\"structvk_1_1cameras_1_1ProjectionResult.html\" title=\"This struct is returned by the camera projection methods and holds the result state of the projection...\">ProjectionResult</a> can be typecasted to bool and is true if the projected keypoint is visible. Simplifies the check for a successful projection. Example usage: </p>\n<div class=\"fragment\"><div class=\"line\">aslam::ProjectionResult ret = camera_-&gt;project3(Eigen::Vector3d(0, 0, -10), &amp;keypoint);</div><div class=\"line\"><span class=\"keywordflow\">if</span>(ret) std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Projection was successful!\\n&quot;</span>;</div></div><!-- fragment --> \n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_cameras/include/vikit/cameras/<a class=\"el\" href=\"camera__geometry__base_8h_source.html\">camera_geometry_base.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1solver_1_1MiniLeastSquaresSolverOptions-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MiniLeastSquaresSolverOptions Member List</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635\">eps</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912\">max_iter</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66\">max_trials</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">mu_init</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561\">nu_init</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b\">stop_when_error_increases</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464\">strategy</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n  <tr><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6\">verbose</a></td><td class=\"entry\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">vk::solver::MiniLeastSquaresSolverOptions</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: vk::solver::MiniLeastSquaresSolverOptions Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><b>vk</b></li><li class=\"navelem\"><b>solver</b></li><li class=\"navelem\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html\">MiniLeastSquaresSolverOptions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\">\n<div class=\"title\">vk::solver::MiniLeastSquaresSolverOptions Struct Reference</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nCollaboration diagram for vk::solver::MiniLeastSquaresSolverOptions:</div>\n<div class=\"dyncontent\">\n<div class=\"center\"><img src=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions__coll__graph.png\" border=\"0\" usemap=\"#vk_1_1solver_1_1MiniLeastSquaresSolverOptions_coll__map\" alt=\"Collaboration graph\"/></div>\n<center><span class=\"legend\">[<a href=\"graph_legend.html\">legend</a>]</span></center></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adb29120cb696f83a2a1efa95feca3464\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adb29120cb696f83a2a1efa95feca3464\"></a>\nStrategy&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adb29120cb696f83a2a1efa95feca3464\">strategy</a> = Strategy::GaussNewton</td></tr>\n<tr class=\"memdesc:adb29120cb696f83a2a1efa95feca3464\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Solver strategy. <br /></td></tr>\n<tr class=\"separator:adb29120cb696f83a2a1efa95feca3464\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a209bc7c8ff0ac7375dc5cbd0eaea70c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">mu_init</a> = 0.01f</td></tr>\n<tr class=\"separator:a209bc7c8ff0ac7375dc5cbd0eaea70c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a570a695b42edc5b42b6b94c8f5614561\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a570a695b42edc5b42b6b94c8f5614561\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a570a695b42edc5b42b6b94c8f5614561\">nu_init</a> = 2.0</td></tr>\n<tr class=\"memdesc:a570a695b42edc5b42b6b94c8f5614561\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Increase factor of mu after fail. <br /></td></tr>\n<tr class=\"separator:a570a695b42edc5b42b6b94c8f5614561\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a75b41a8e659d97b91c4129a3edbcf912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a75b41a8e659d97b91c4129a3edbcf912\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a75b41a8e659d97b91c4129a3edbcf912\">max_iter</a> = 15</td></tr>\n<tr class=\"memdesc:a75b41a8e659d97b91c4129a3edbcf912\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Max number of iterations. <br /></td></tr>\n<tr class=\"separator:a75b41a8e659d97b91c4129a3edbcf912\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0672a17ea3dd055ff952c00640dca66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ad0672a17ea3dd055ff952c00640dca66\"></a>\nsize_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ad0672a17ea3dd055ff952c00640dca66\">max_trials</a> = 5</td></tr>\n<tr class=\"memdesc:ad0672a17ea3dd055ff952c00640dca66\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Max number of trials (used in LevenbergMarquardt) <br /></td></tr>\n<tr class=\"separator:ad0672a17ea3dd055ff952c00640dca66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9fa71721aabd7c61a7aa12c3016c10b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"ae9fa71721aabd7c61a7aa12c3016c10b\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#ae9fa71721aabd7c61a7aa12c3016c10b\">stop_when_error_increases</a> = false</td></tr>\n<tr class=\"memdesc:ae9fa71721aabd7c61a7aa12c3016c10b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop when error increases. <br /></td></tr>\n<tr class=\"separator:ae9fa71721aabd7c61a7aa12c3016c10b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b8ca54736febb00ea890d27da660ba6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"a3b8ca54736febb00ea890d27da660ba6\"></a>\nbool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#a3b8ca54736febb00ea890d27da660ba6\">verbose</a> = false</td></tr>\n<tr class=\"memdesc:a3b8ca54736febb00ea890d27da660ba6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Output Statistics. <br /></td></tr>\n<tr class=\"separator:a3b8ca54736febb00ea890d27da660ba6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc69d6f66cb004ed497696836fc38635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a id=\"adc69d6f66cb004ed497696836fc38635\"></a>\ndouble&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structvk_1_1solver_1_1MiniLeastSquaresSolverOptions.html#adc69d6f66cb004ed497696836fc38635\">eps</a> = 0.0000000001</td></tr>\n<tr class=\"memdesc:adc69d6f66cb004ed497696836fc38635\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stop if update norm is smaller than eps. <br /></td></tr>\n<tr class=\"separator:adc69d6f66cb004ed497696836fc38635\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a209bc7c8ff0ac7375dc5cbd0eaea70c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a209bc7c8ff0ac7375dc5cbd0eaea70c7\">&#9670;&nbsp;</a></span>mu_init</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double vk::solver::MiniLeastSquaresSolverOptions::mu_init = 0.01f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<p>Damping parameter. If mu &gt; 0, coefficient matrix is positive definite, this ensures that x is a descent direction. If mu is large, x is a short step in the steepest direction. This is good if the current iterate is far from the solution. If mu is small, LM approximates gauss newton iteration and we have (almost) quadratic convergence in the final stages. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>svo_vikit/vikit_solver/include/vikit/solver/<a class=\"el\" href=\"mini__least__squares__solver_8h_source.html\">mini_least_squares_solver.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/structvk_1_1solver_1_1MiniLeastSquaresSolverOptions__coll__graph.md5",
    "content": "dd5877b85cfb39aa9b291f9391265720"
  },
  {
    "path": "docs/svo_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/svo/svo.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_acbe4d1a2cc998b711b62a692f7e8428.html\">svo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// This file is subject to the terms and conditions defined in the file</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"comment\">// &#39;LICENSE&#39;, which is part of this source code package.</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;svo/direct/depth_filter.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;svo/direct/feature_detection.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/tracker/feature_tracker.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/frame.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_mono.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_stereo.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;svo/frame_handler_array.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;svo/imu_handler.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;svo/initialization.h&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;svo/map.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;svo/reprojector.h&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#include &lt;svo/stereo_triangulation.h&gt;</span></div></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/svo__factory_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/svo_factory.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_factory.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">class </span>ImuHandler;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"keyword\">class </span>LoopClosing;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">class </span>FrameHandlerMono;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">class </span>FrameHandlerStereo;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">class </span>FrameHandlerArray;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">class </span>FrameHandlerDenseMono;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"keyword\">namespace </span>factory {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;std::shared_ptr&lt;ImuHandler&gt; getImuHandler(</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#ifdef SVO_LOOP_CLOSING</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;std::unique_ptr&lt;LoopClosing&gt; getLoopClosingModule(</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;    <span class=\"keyword\">const</span> CameraBundlePtr&amp; cam=<span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;std::shared_ptr&lt;FrameHandlerMono&gt; makeMono(</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh,</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keyword\">const</span> CameraBundlePtr&amp; cam = <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;std::shared_ptr&lt;FrameHandlerStereo&gt; makeStereo(</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh,</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;    <span class=\"keyword\">const</span> CameraBundlePtr&amp; cam = <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;std::shared_ptr&lt;FrameHandlerArray&gt; makeArray(</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh,</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> CameraBundlePtr&amp; cam = <span class=\"keyword\">nullptr</span>);</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;std::shared_ptr&lt;FrameHandlerDenseMono&gt; makeDenseMono(</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    <span class=\"keyword\">const</span> ros::NodeHandle&amp; pnh);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;} <span class=\"comment\">// namespace factory</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;} <span class=\"comment\">// namespace mono</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/svo__interface_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/svo_interface.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_interface.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/String.h&gt;</span>    <span class=\"comment\">// user-input</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/Image.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/Imu.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/camera_fwd.h&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">class </span>FrameHandlerBase;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">class </span>Visualizer;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">class </span>ImuHandler;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">class </span>BackendInterface;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">class </span>BackendVisualizer;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">enum class</span> PipelineType {</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  kMono,</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  <a class=\"code\" href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\">kStereo</a>,</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  kArray</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;};</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SvoInterface.html\">   31</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a></div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;{</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"comment\">// ROS subscription and publishing.</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  ros::NodeHandle nh_;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  ros::NodeHandle pnh_;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  PipelineType pipeline_type_;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  ros::Subscriber sub_remote_key_;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  std::string remote_input_;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  std::unique_ptr&lt;std::thread&gt; imu_thread_;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  std::unique_ptr&lt;std::thread&gt; image_thread_;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"comment\">// SVO modules.</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  std::shared_ptr&lt;FrameHandlerBase&gt; svo_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  std::shared_ptr&lt;Visualizer&gt; visualizer_;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  std::shared_ptr&lt;ImuHandler&gt; imu_handler_;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  std::shared_ptr&lt;BackendInterface&gt; backend_interface_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  std::shared_ptr&lt;BackendVisualizer&gt; backend_visualizer_;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  CameraBundlePtr ncam_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  <span class=\"comment\">// Parameters</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  <span class=\"keywordtype\">bool</span> set_initial_attitude_from_gravity_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  <span class=\"comment\">// System state.</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  <span class=\"keywordtype\">bool</span> quit_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keywordtype\">bool</span> idle_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keywordtype\">bool</span> automatic_reinitialization_ = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <a class=\"code\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a>(<span class=\"keyword\">const</span> PipelineType&amp; pipeline_type,</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;          <span class=\"keyword\">const</span> ros::NodeHandle&amp; nh,</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;          <span class=\"keyword\">const</span> ros::NodeHandle&amp; private_nh);</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1SvoInterface.html\">SvoInterface</a>();</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"comment\">// Processing</span></div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keywordtype\">void</span> processImageBundle(</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; images,</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;      int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <span class=\"keywordtype\">bool</span> setImuPrior(<span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;  <span class=\"keywordtype\">void</span> publishResults(</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; images,</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"comment\">// Subscription and callbacks</span></div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;  <span class=\"keywordtype\">void</span> monoCallback(<span class=\"keyword\">const</span> sensor_msgs::ImageConstPtr&amp; msg);</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <span class=\"keywordtype\">void</span> stereoCallback(</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      <span class=\"keyword\">const</span> sensor_msgs::ImageConstPtr&amp; msg0,</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      <span class=\"keyword\">const</span> sensor_msgs::ImageConstPtr&amp; msg1);</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keywordtype\">void</span> imuCallback(<span class=\"keyword\">const</span> sensor_msgs::ImuConstPtr&amp; imu_msg);</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  <span class=\"keywordtype\">void</span> inputKeyCallback(<span class=\"keyword\">const</span> std_msgs::StringConstPtr&amp; key_input);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"comment\">// These functions are called before and after monoCallback or stereoCallback.</span></div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;  <span class=\"comment\">// a derived class can implement some additional logic here.</span></div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> imageCallbackPreprocessing(int64_t timestamp_nanoseconds) {}</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> imageCallbackPostprocessing() {}</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;  <span class=\"keywordtype\">void</span> subscribeImu();</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;  <span class=\"keywordtype\">void</span> subscribeImage();</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;  <span class=\"keywordtype\">void</span> subscribeRemoteKey();</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;  <span class=\"keywordtype\">void</span> imuLoop();</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;  <span class=\"keywordtype\">void</span> monoLoop();</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  <span class=\"keywordtype\">void</span> stereoLoop();</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;};</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html_aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\"><div class=\"ttname\"><a href=\"namespacesvo.html#aab74b27eaa142b8cdf1ddd3ab9f8f192ab84e579fcdf6f1465223f2258a80f794\">svo::InitializerType::kStereo</a></div><div class=\"ttdoc\">Triangulate from two views with known pose. </div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SvoInterface_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></div><div class=\"ttdoc\">SVO Interface. </div><div class=\"ttdef\"><b>Definition:</b> svo_interface.h:31</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/svo__node__base_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/svo_node_base.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_node_base.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &quot;svo_ros/svo_interface.h&quot;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo__ros.html\">svo_ros</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo__ros_1_1SvoNodeBase.html\">    7</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo__ros_1_1SvoNodeBase.html\">SvoNodeBase</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;  <span class=\"comment\">// Initializes glog, gflags and ROS.</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> initThirdParty(<span class=\"keywordtype\">int</span> argc, <span class=\"keywordtype\">char</span> **argv);</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  <a class=\"code\" href=\"classsvo__ros_1_1SvoNodeBase.html\">SvoNodeBase</a>();</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"keywordtype\">void</span> run();</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  ros::NodeHandle node_handle_;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  ros::NodeHandle private_node_handle_;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  svo::PipelineType type_;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;   <a class=\"code\" href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a> svo_interface_;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;};</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;}  <span class=\"comment\">// namespace svo_ros</span></div><div class=\"ttc\" id=\"classsvo__ros_1_1SvoNodeBase_html\"><div class=\"ttname\"><a href=\"classsvo__ros_1_1SvoNodeBase.html\">svo_ros::SvoNodeBase</a></div><div class=\"ttdef\"><b>Definition:</b> svo_node_base.h:7</div></div>\n<div class=\"ttc\" id=\"namespacesvo__ros_html\"><div class=\"ttname\"><a href=\"namespacesvo__ros.html\">svo_ros</a></div><div class=\"ttdef\"><b>Definition:</b> svo_node_base.h:5</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1SvoInterface_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SvoInterface.html\">svo::SvoInterface</a></div><div class=\"ttdoc\">SVO Interface. </div><div class=\"ttdef\"><b>Definition:</b> svo_interface.h:31</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/svo__nodelet_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/svo_nodelet.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">svo_nodelet.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;nodelet/nodelet.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">class </span>SvoInterface;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1SvoNodelet.html\">   11</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a> : <span class=\"keyword\">public</span> nodelet::Nodelet</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <a class=\"code\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classsvo_1_1SvoNodelet.html\">SvoNodelet</a>();</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> onInit();</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;  std::unique_ptr&lt;SvoInterface&gt; svo_interface_;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;};</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"classsvo_1_1SvoNodelet_html\"><div class=\"ttname\"><a href=\"classsvo_1_1SvoNodelet.html\">svo::SvoNodelet</a></div><div class=\"ttdef\"><b>Definition:</b> svo_nodelet.h:11</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/tabs.css",
    "content": ".sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:\"\\00a0\";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url(\"tab_b.png\")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:\"Lucida Grande\",\"Geneva\",\"Helvetica\",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url(\"tab_b.png\");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url(\"tab_s.png\");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url(\"tab_b.png\")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}\n"
  },
  {
    "path": "docs/threadsafe__queue_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common/threadsafe_queue.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">threadsafe_queue.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;condition_variable&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;queue&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a> {</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DataType&gt;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">   13</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160; <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <a class=\"code\" href=\"classrpg__common_1_1ThreadSafeQueue.html\">ThreadSafeQueue</a>() : warn_if_has_backlog_(<span class=\"keyword\">false</span>), shutdown_(<span class=\"keyword\">false</span>) {}</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keywordtype\">void</span> push(<span class=\"keyword\">const</span> DataType&amp; item)</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  {</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    {</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;      std::lock_guard&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;      data_.push(item);</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    }</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    cv_push_.notify_all();</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;  }</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordtype\">bool</span> tryPopNow(DataType* item)</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;    CHECK_NOTNULL(item);</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    std::lock_guard&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keywordflow\">if</span> (data_.empty())</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    {</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;    }</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;    {</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      *item = data_.front();</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;      data_.pop();</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      cv_pop_.notify_all();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    }</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  }</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"comment\">// Returns false if queue has been shut down.</span></div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">bool</span> waitAndPop(DataType* item)</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  {</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;    CHECK_NOTNULL(item);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    std::unique_lock&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;    <span class=\"keywordflow\">if</span> (!wait(&amp;lock))</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    {</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    }</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    {</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      *item = data_.front();</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      data_.pop();</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;      cv_pop_.notify_all();</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    }</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  }</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"comment\">// Returns false if queue has been shut down.</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keywordtype\">bool</span> skipToLatest(DataType* item)</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  {</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    CHECK_NOTNULL(item);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;    std::unique_lock&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;    <span class=\"keywordflow\">if</span> (!wait(&amp;lock))</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    {</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    {</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;      *item = data_.back();</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;      <span class=\"keywordflow\">while</span> (!data_.empty()) {</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;        data_.pop();</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;      }</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;      cv_pop_.notify_all();</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    }</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  }</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"comment\">// Returns false if queue has been shut down.</span></div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keywordtype\">bool</span> waitAndPopAvailable(std::vector&lt;DataType&gt;* items)</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;  {</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    CHECK_NOTNULL(items)-&gt;clear();</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    std::unique_lock&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    <span class=\"keywordflow\">if</span> (!wait(&amp;lock))</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    {</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    }</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    <span class=\"keywordflow\">else</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;    {</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      items-&gt;reserve(data_.size());</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;      <span class=\"keywordflow\">while</span> (!data_.empty()) {</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;        items-&gt;push_back(data_.front());</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;        data_.pop();</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      }</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      cv_pop_.notify_all();</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    }</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  }</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keywordtype\">void</span> shutdown()</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    {</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      std::lock_guard&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      shutdown_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    }</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    cv_push_.notify_all();</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    cv_pop_.notify_all();</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;  }</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordtype\">void</span> printBacklogWarningsWithTag(<span class=\"keyword\">const</span> std::string&amp; tag)</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;  {</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;    warn_if_has_backlog_ = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    backlog_warn_tag_ = tag;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  }</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  <span class=\"comment\">// Returns false if shutdown has been requested.</span></div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;  <span class=\"keywordtype\">bool</span> waitUntilEmpty()</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  {</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;    std::unique_lock&lt;std::mutex&gt; lock(mutex_);</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;    cv_pop_.wait(</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;        lock, [<span class=\"keyword\">this</span>] { <span class=\"keywordflow\">return</span> data_.empty() || shutdown_; });</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;    <span class=\"keywordflow\">if</span> (shutdown_)</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    {</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;    }</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  }</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160; <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;  <span class=\"comment\">// Returns false if shutdown has been requested.</span></div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  <span class=\"keywordtype\">bool</span> wait(std::unique_lock&lt;std::mutex&gt;* lock)</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;  {</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    CHECK_NOTNULL(lock);</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    <span class=\"keywordflow\">if</span> (warn_if_has_backlog_ &amp;&amp; !data_.empty())</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    {</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      LOG(WARNING) &lt;&lt; <span class=\"stringliteral\">&quot;Backlog in queue \\&quot;&quot;</span> &lt;&lt; backlog_warn_tag_ &lt;&lt; <span class=\"stringliteral\">&quot;\\&quot;&quot;</span>;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    }</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;    cv_push_.wait(</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;        *lock, [<span class=\"keyword\">this</span>] { <span class=\"keywordflow\">return</span> !data_.empty() || shutdown_; });</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keywordflow\">if</span> (shutdown_)</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    {</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;    }</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;  }</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;  std::queue&lt;DataType&gt; data_;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;  std::mutex mutex_;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  std::condition_variable cv_push_;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;  std::condition_variable cv_pop_;</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;  <span class=\"keywordtype\">bool</span> warn_if_has_backlog_;</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;  std::string backlog_warn_tag_;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keyword\">volatile</span> <span class=\"keywordtype\">bool</span> shutdown_;</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;};</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;}  <span class=\"comment\">// namespace rpg_common</span></div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg</a> = <a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a>;</div><div class=\"ttc\" id=\"namespacerpg__common_html\"><div class=\"ttname\"><a href=\"namespacerpg__common.html\">rpg_common</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:11</div></div>\n<div class=\"ttc\" id=\"classrpg__common_1_1ThreadSafeQueue_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1ThreadSafeQueue.html\">rpg_common::ThreadSafeQueue</a></div><div class=\"ttdef\"><b>Definition:</b> threadsafe_queue.h:13</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/timer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/timer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">timer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_TIMER_H</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define VIKIT_TIMER_H</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;chrono&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;sstream&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;iomanip&gt;</span> <span class=\"comment\">// std::setw</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;ctime&gt;</span>   <span class=\"comment\">// std::localtime,</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;{</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html\">   13</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1Timer.html\">Timer</a></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;{</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">typedef</span> std::chrono::high_resolution_clock Clock;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">typedef</span> std::chrono::time_point&lt;Clock&gt; TimePoint;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">typedef</span> std::chrono::nanoseconds Nanoseconds;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keyword\">typedef</span> std::chrono::seconds Seconds;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">   22</a></span>&#160;  <a class=\"code\" href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">Timer</a>()</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    : start_time_(Clock::now())</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    , duration_(Nanoseconds::zero())</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    , accumulated_(Nanoseconds::zero())</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;  {}</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">   29</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">start</a>()</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  {</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    start_time_ = Clock::now();</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">   35</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">resume</a>()</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  {</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    start_time_ = Clock::now();</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  }</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">   41</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">stop</a>()</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  {</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    <span class=\"keyword\">const</span> TimePoint end_time(Clock::now());</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    duration_ = std::chrono::duration_cast&lt;Nanoseconds&gt;(end_time - start_time_);</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;    accumulated_ += duration_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(duration_.count())*1e-9;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  }</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">   50</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">getTime</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(duration_.count())*1e-9;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  }</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">   56</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">getMilliseconds</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(duration_.count())*1e-6;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  }</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">   62</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">getAccumulated</a>()<span class=\"keyword\"> const</span></div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;<span class=\"keyword\">  </span>{</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(accumulated_.count())*1e-9;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  }</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">   68</a></span>&#160;  <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">reset</a>()</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  {</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    start_time_ = TimePoint();</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    duration_ = Nanoseconds::zero();</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;    accumulated_ = Nanoseconds::zero();</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;  }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">   76</a></span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">double</span> <a class=\"code\" href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">getCurrentTime</a>()</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  {</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">double</span><span class=\"keyword\">&gt;</span>(</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;          std::chrono::duration_cast&lt;Nanoseconds&gt;(Clock::now()-TimePoint())</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;          .count())*1e-9;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  }</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">   84</a></span>&#160;  <span class=\"keyword\">static</span> std::string <a class=\"code\" href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">getCurrentTimeStr</a>()</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;  {</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    std::time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    std::tm* t = std::localtime(&amp;now);</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    <span class=\"keywordflow\">if</span>(t == NULL)</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;      <span class=\"keywordflow\">return</span> std::string(<span class=\"stringliteral\">&quot;ERROR&quot;</span>);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    std::ostringstream ss;</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;    ss &lt;&lt; t-&gt;tm_year-100 &lt;&lt; <span class=\"stringliteral\">&quot;-&quot;</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;       &lt;&lt; std::setw(2) &lt;&lt; std::setfill(<span class=\"charliteral\">&#39;0&#39;</span>) &lt;&lt; t-&gt;tm_mon+1 &lt;&lt; <span class=\"stringliteral\">&quot;-&quot;</span></div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;       &lt;&lt; std::setw(2) &lt;&lt; std::setfill(<span class=\"charliteral\">&#39;0&#39;</span>) &lt;&lt; t-&gt;tm_mday &lt;&lt; <span class=\"stringliteral\">&quot;_&quot;</span></div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;       &lt;&lt; std::setw(2) &lt;&lt; std::setfill(<span class=\"charliteral\">&#39;0&#39;</span>) &lt;&lt; t-&gt;tm_hour &lt;&lt; <span class=\"stringliteral\">&quot;-&quot;</span></div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;       &lt;&lt; std::setw(2) &lt;&lt; std::setfill(<span class=\"charliteral\">&#39;0&#39;</span>) &lt;&lt; t-&gt;tm_min &lt;&lt; <span class=\"stringliteral\">&quot;-&quot;</span></div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;       &lt;&lt; std::setw(2) &lt;&lt; std::setfill(<span class=\"charliteral\">&#39;0&#39;</span>) &lt;&lt; t-&gt;tm_sec;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    <span class=\"keywordflow\">return</span> ss.str();</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;  }</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  TimePoint start_time_;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;  Nanoseconds duration_;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  Nanoseconds accumulated_;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;};</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;} <span class=\"comment\">// end namespace vk</span></div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_TIMER_H</span></div><div class=\"ttc\" id=\"classvk_1_1Timer_html_a937f7ba7ee23d9c6681a2f8f4b13aeb0\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a937f7ba7ee23d9c6681a2f8f4b13aeb0\">vk::Timer::resume</a></div><div class=\"ttdeci\">void resume()</div><div class=\"ttdoc\">Resumes the timer. Total time can be obtained with getAccumulated(). </div><div class=\"ttdef\"><b>Definition:</b> timer.h:35</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_a65e03ae5233d2416a6e05bbb0043acb1\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a65e03ae5233d2416a6e05bbb0043acb1\">vk::Timer::getTime</a></div><div class=\"ttdeci\">double getTime() const</div><div class=\"ttdoc\">Returns duration of last measurement in seconds. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:50</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_a18a64946c4dd5ac2cc022cf87b1dc8c4\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a18a64946c4dd5ac2cc022cf87b1dc8c4\">vk::Timer::stop</a></div><div class=\"ttdeci\">double stop()</div><div class=\"ttdoc\">Returns duration in seconds. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:41</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_ad99d3f70d31126b6df92efc606510d7a\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#ad99d3f70d31126b6df92efc606510d7a\">vk::Timer::getAccumulated</a></div><div class=\"ttdeci\">double getAccumulated() const</div><div class=\"ttdoc\">Returns duration since the last reset or construction of the timer. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:62</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_a0abae2bd9dce865021b7f4d842fce3cf\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a0abae2bd9dce865021b7f4d842fce3cf\">vk::Timer::start</a></div><div class=\"ttdeci\">void start()</div><div class=\"ttdoc\">Starts the timer. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:29</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_ac4731123877be5bf29b884318124b3d5\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#ac4731123877be5bf29b884318124b3d5\">vk::Timer::Timer</a></div><div class=\"ttdeci\">Timer()</div><div class=\"ttdoc\">The constructor directly starts the timer. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:22</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html\">vk::Timer</a></div><div class=\"ttdef\"><b>Definition:</b> timer.h:13</div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_abdb0f48be68ce003252fc6f75ed9de94\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#abdb0f48be68ce003252fc6f75ed9de94\">vk::Timer::getCurrentTimeStr</a></div><div class=\"ttdeci\">static std::string getCurrentTimeStr()</div><div class=\"ttdoc\">Get a formated string of the current time, hour, minute and second. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:84</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_a164e023e2c064a4a34198c6514062499\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a164e023e2c064a4a34198c6514062499\">vk::Timer::getCurrentTime</a></div><div class=\"ttdeci\">static double getCurrentTime()</div><div class=\"ttdoc\">Get seconds since 1.1.1970. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:76</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_a4726df50d1bf639e3a388f4384ef859e\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#a4726df50d1bf639e3a388f4384ef859e\">vk::Timer::getMilliseconds</a></div><div class=\"ttdeci\">double getMilliseconds() const</div><div class=\"ttdoc\">Returns duration of last measurement in milliseconds. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:56</div></div>\n<div class=\"ttc\" id=\"classvk_1_1Timer_html_af67efe108481802c25c2f5bf582b6b4e\"><div class=\"ttname\"><a href=\"classvk_1_1Timer.html#af67efe108481802c25c2f5bf582b6b4e\">vk::Timer::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdoc\">Reset the current timer and the accumulated. </div><div class=\"ttdef\"><b>Definition:</b> timer.h:68</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/todo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: Todo List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">Todo List </div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><dl class=\"reflist\">\n<dt><a class=\"anchor\" id=\"_todo000006\"></a>Namespace <a class=\"el\" href=\"namespacesvo.html\">svo</a>  </dt>\n<dd>move to <a class=\"el\" href=\"camera_8h_source.html\">camera.h</a> ?  </dd>\n<dt><a class=\"anchor\" id=\"_todo000005\"></a>Member <a class=\"el\" href=\"classsvo_1_1AllPixelsDetector.html#a73fee1dd4d76e3f0885c9bbaa2cd73fc\">svo::AllPixelsDetector::detect</a>  (const ImgPyr &amp;img_pyr, const cv::Mat &amp;mask, const size_t max_n_features, Keypoints &amp;px_vec, Scores &amp;score_vec, Levels &amp;level_vec, Gradients &amp;grad_vec, FeatureTypes &amp;types_vec) override</dt>\n<dd>(MWE) kept the old version around as there might be changes still and we want to have the same structure and workflow within the detectors.  </dd>\n<dt><a class=\"anchor\" id=\"_todo000003\"></a>Class <a class=\"el\" href=\"classsvo_1_1FastGradDetector.html\">svo::FastGradDetector</a>  </dt>\n<dd></dd>\n<dt><a class=\"anchor\" id=\"_todo000001\"></a>Class <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">svo::FeatureWrapper</a>  </dt>\n<dd>(MWE)  </dd>\n<dt><a class=\"anchor\" id=\"_todo000002\"></a>Member <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html#a816bb0c2faad71a65718c66ac4b667b1\">svo::FeatureWrapper::FeatureWrapper</a>  (const <a class=\"el\" href=\"structsvo_1_1FeatureWrapper.html\">FeatureWrapper</a> &amp;other)=default</dt>\n<dd>(MWE) do copy and copy-asignment operators make sense? </dd>\n</dl>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/tracker_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include/dvs_tracking/tracker.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">tracker.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef TRACKER_H</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define TRACKER_H</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;dvs_msgs/EventArray.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;image_geometry/pinhole_camera_model.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/PointCloud2.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/String.h&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;tf/tf.h&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_broadcaster.h&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"preprocessor\">#include &lt;mutex&gt;</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &quot;dvs_tracking/lk_se3.hpp&quot;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#define TRACKER_EVENT_HISTORY_SIZE \\</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">    500000  // size of the history of events (already processed) to keep</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"comment\">// #define TRACKING_LOST_RESET \\</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"comment\">//     2000  // if defined, reset tracking when keypoints_.size() &lt; 5000</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">#define TRACKER_DEBUG_REFERENCE_IMAGE  // define this to start overlap thread</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"comment\">// #define TRACKING_PERF  // define this to evaluate also the performances</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html\">   28</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classTracker.html\">Tracker</a> : <span class=\"keyword\">public</span> <a class=\"code\" href=\"classLKSE3.html\">LKSE3</a> {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;   <span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;    <a class=\"code\" href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker</a>(ros::NodeHandle&amp; nh, ros::NodeHandle nh_private);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;   <span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;    ros::NodeHandle nh_, nhp_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    image_transport::ImageTransport it_;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    tf::Transformer tf_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    tf::TransformBroadcaster tf_pub_;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">   56</a></span>&#160;    ros::Subscriber <a class=\"code\" href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">event_sub_</a>;        </div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">map_sub_</a>;          </div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classTracker.html#ade9360c0b7392539943229150027677a\">remote_sub_</a>;       </div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">tf_sub_</a>;           </div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    ros::Subscriber <a class=\"code\" href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">camera_info_sub_</a>;  </div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">   67</a></span>&#160;    ros::Publisher <a class=\"code\" href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">poses_pub_</a>;  </div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;    std::string frame_id_;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;    std::string world_frame_id_;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">   73</a></span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">idle_</a>;  </div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">   75</a></span>&#160;    EventQueue <a class=\"code\" href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">events_</a>;  </div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keywordtype\">size_t</span> cur_ev_, kf_ev_, noise_rate_, frame_size_, step_size_, event_rate_;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    std::vector&lt;tf::StampedTransform&gt; poses_;           <span class=\"comment\">// estimated poses</span></div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    std::vector&lt;tf::StampedTransform&gt; poses_filtered_;  <span class=\"comment\">// median filtered poses</span></div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">   82</a></span>&#160;    std::mutex <a class=\"code\" href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">data_mutex_</a>;  </div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    <span class=\"keywordtype\">bool</span> auto_trigger_;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">eventCallback</a>(<span class=\"keyword\">const</span> dvs_msgs::EventArray::ConstPtr&amp; msg);</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">mapCallback</a>(<span class=\"keyword\">const</span> sensor_msgs::PointCloud2::ConstPtr&amp; msg);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">remoteCallback</a>(<span class=\"keyword\">const</span> std_msgs::String::ConstPtr&amp; msg);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">tfCallback</a>(<span class=\"keyword\">const</span> tf::tfMessagePtr&amp; msgs);</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">cameraInfoCallback</a>(<span class=\"keyword\">const</span> sensor_msgs::CameraInfo::ConstPtr&amp; msg);</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">initialize</a>(<span class=\"keyword\">const</span> ros::Time&amp; ts);</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">reset</a>();</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">estimateTrajectory</a>();</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">updateMap</a>();</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    <span class=\"keywordtype\">bool</span> <a class=\"code\" href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">getFilteredPose</a>(tf::StampedTransform&amp; pose);</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">trackingThread</a>();</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">publishMapOverlapThread</a>();</div><div class=\"line\"><a name=\"l00215\"></a><span class=\"lineno\">  215</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">publishTF</a>();</div><div class=\"line\"><a name=\"l00216\"></a><span class=\"lineno\">  216</span>&#160;</div><div class=\"line\"><a name=\"l00224\"></a><span class=\"lineno\">  224</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">publishPose</a>();</div><div class=\"line\"><a name=\"l00225\"></a><span class=\"lineno\">  225</span>&#160;</div><div class=\"line\"><a name=\"l00230\"></a><span class=\"lineno\">  230</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">clearEventQueue</a>();</div><div class=\"line\"><a name=\"l00231\"></a><span class=\"lineno\">  231</span>&#160;</div><div class=\"line\"><a name=\"l00240\"></a><span class=\"lineno\">  240</span>&#160;    <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">postCameraLoaded</a>();</div><div class=\"line\"><a name=\"l00241\"></a><span class=\"lineno\">  241</span>&#160;};</div><div class=\"line\"><a name=\"l00242\"></a><span class=\"lineno\">  242</span>&#160;</div><div class=\"line\"><a name=\"l00243\"></a><span class=\"lineno\">  243</span>&#160;<span class=\"preprocessor\">#endif  // TRACKER_H</span></div><div class=\"ttc\" id=\"classTracker_html_acb05d74ae2ff6fa10272668fba396516\"><div class=\"ttname\"><a href=\"classTracker.html#acb05d74ae2ff6fa10272668fba396516\">Tracker::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:203</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ade9360c0b7392539943229150027677a\"><div class=\"ttname\"><a href=\"classTracker.html#ade9360c0b7392539943229150027677a\">Tracker::remote_sub_</a></div><div class=\"ttdeci\">ros::Subscriber remote_sub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:60</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a5a4accfc84b455232a1fe11ad7d34658\"><div class=\"ttname\"><a href=\"classTracker.html#a5a4accfc84b455232a1fe11ad7d34658\">Tracker::camera_info_sub_</a></div><div class=\"ttdeci\">ros::Subscriber camera_info_sub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:64</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ae701ed9604790939eeefd0dcd4024a6a\"><div class=\"ttname\"><a href=\"classTracker.html#ae701ed9604790939eeefd0dcd4024a6a\">Tracker::trackingThread</a></div><div class=\"ttdeci\">void trackingThread()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:147</div></div>\n<div class=\"ttc\" id=\"classTracker_html_af25a49bbecabdad9baf35ae7d5fdbcf6\"><div class=\"ttname\"><a href=\"classTracker.html#af25a49bbecabdad9baf35ae7d5fdbcf6\">Tracker::updateMap</a></div><div class=\"ttdeci\">void updateMap()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:244</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a24fe7008c32f3edc748b2acae8dbe7e6\"><div class=\"ttname\"><a href=\"classTracker.html#a24fe7008c32f3edc748b2acae8dbe7e6\">Tracker::cameraInfoCallback</a></div><div class=\"ttdeci\">void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:35</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a6f79c6e96b703e1e979439d9345fa5f6\"><div class=\"ttname\"><a href=\"classTracker.html#a6f79c6e96b703e1e979439d9345fa5f6\">Tracker::map_sub_</a></div><div class=\"ttdeci\">ros::Subscriber map_sub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:58</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ab4357f4055315cb02f22a646f73b42fb\"><div class=\"ttname\"><a href=\"classTracker.html#ab4357f4055315cb02f22a646f73b42fb\">Tracker::events_</a></div><div class=\"ttdeci\">EventQueue events_</div><div class=\"ttdoc\">already processed and to process events </div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:75</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a3aa7f4bc38d80b5d90e53f8b30915ca9\"><div class=\"ttname\"><a href=\"classTracker.html#a3aa7f4bc38d80b5d90e53f8b30915ca9\">Tracker::postCameraLoaded</a></div><div class=\"ttdeci\">void postCameraLoaded()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:48</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a3477d93ca1724ed9696c12c7ec005be0\"><div class=\"ttname\"><a href=\"classTracker.html#a3477d93ca1724ed9696c12c7ec005be0\">Tracker::remoteCallback</a></div><div class=\"ttdeci\">void remoteCallback(const std_msgs::String::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:161</div></div>\n<div class=\"ttc\" id=\"classTracker_html_af34bb1f5e11bd2fef1130fc3ef80d61f\"><div class=\"ttname\"><a href=\"classTracker.html#af34bb1f5e11bd2fef1130fc3ef80d61f\">Tracker::publishPose</a></div><div class=\"ttdeci\">void publishPose()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:361</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a2279b2b5f7be0fde95c54820fba976fd\"><div class=\"ttname\"><a href=\"classTracker.html#a2279b2b5f7be0fde95c54820fba976fd\">Tracker::publishMapOverlapThread</a></div><div class=\"ttdeci\">void publishMapOverlapThread()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:285</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ae3e255d370f7ad0381f9683ef2dfdbe7\"><div class=\"ttname\"><a href=\"classTracker.html#ae3e255d370f7ad0381f9683ef2dfdbe7\">Tracker::poses_pub_</a></div><div class=\"ttdeci\">ros::Publisher poses_pub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:67</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a2a5d3f77e102c6414c56948fbdf635df\"><div class=\"ttname\"><a href=\"classTracker.html#a2a5d3f77e102c6414c56948fbdf635df\">Tracker::data_mutex_</a></div><div class=\"ttdeci\">std::mutex data_mutex_</div><div class=\"ttdoc\">mutex to own when accessing data </div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:82</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a7909d4888dcb35f254a4e6ad9d7d0f0b\"><div class=\"ttname\"><a href=\"classTracker.html#a7909d4888dcb35f254a4e6ad9d7d0f0b\">Tracker::getFilteredPose</a></div><div class=\"ttdeci\">bool getFilteredPose(tf::StampedTransform &amp;pose)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:379</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a701c875240036fde1bf0df16665859ed\"><div class=\"ttname\"><a href=\"classTracker.html#a701c875240036fde1bf0df16665859ed\">Tracker::estimateTrajectory</a></div><div class=\"ttdeci\">void estimateTrajectory()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:436</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ab39a3563aa35ce596b1ef84b5353e7ee\"><div class=\"ttname\"><a href=\"classTracker.html#ab39a3563aa35ce596b1ef84b5353e7ee\">Tracker::tf_sub_</a></div><div class=\"ttdeci\">ros::Subscriber tf_sub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:62</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a03e620f13a98ac9895069762c00cc3a0\"><div class=\"ttname\"><a href=\"classTracker.html#a03e620f13a98ac9895069762c00cc3a0\">Tracker::event_sub_</a></div><div class=\"ttdeci\">ros::Subscriber event_sub_</div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:56</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a34dc8c60ff0710bf5c131379fcbf8e7c\"><div class=\"ttname\"><a href=\"classTracker.html#a34dc8c60ff0710bf5c131379fcbf8e7c\">Tracker::publishTF</a></div><div class=\"ttdeci\">void publishTF()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:341</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a269a1f966b13dd619a7b06ff96b07e84\"><div class=\"ttname\"><a href=\"classTracker.html#a269a1f966b13dd619a7b06ff96b07e84\">Tracker::clearEventQueue</a></div><div class=\"ttdeci\">void clearEventQueue()</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:267</div></div>\n<div class=\"ttc\" id=\"classTracker_html_acdba100d3ccfcb260d1843f7dd7815d4\"><div class=\"ttname\"><a href=\"classTracker.html#acdba100d3ccfcb260d1843f7dd7815d4\">Tracker::initialize</a></div><div class=\"ttdeci\">void initialize(const ros::Time &amp;ts)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:182</div></div>\n<div class=\"ttc\" id=\"classLKSE3_html\"><div class=\"ttname\"><a href=\"classLKSE3.html\">LKSE3</a></div><div class=\"ttdef\"><b>Definition:</b> lk_se3.hpp:16</div></div>\n<div class=\"ttc\" id=\"classTracker_html_aad0ee6051f26b875f9b9fe7462e59d65\"><div class=\"ttname\"><a href=\"classTracker.html#aad0ee6051f26b875f9b9fe7462e59d65\">Tracker::eventCallback</a></div><div class=\"ttdeci\">void eventCallback(const dvs_msgs::EventArray::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:212</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ae9dc66adb4d765082edfd481bab4b8bb\"><div class=\"ttname\"><a href=\"classTracker.html#ae9dc66adb4d765082edfd481bab4b8bb\">Tracker::Tracker</a></div><div class=\"ttdeci\">Tracker(ros::NodeHandle &amp;nh, ros::NodeHandle nh_private)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:82</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a58bf1175127d9fedbc07fa94a7d02937\"><div class=\"ttname\"><a href=\"classTracker.html#a58bf1175127d9fedbc07fa94a7d02937\">Tracker::idle_</a></div><div class=\"ttdeci\">bool idle_</div><div class=\"ttdoc\">whether the tracking is idle or active </div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:73</div></div>\n<div class=\"ttc\" id=\"classTracker_html_a1029bfd35553535ccba3159101cd70b9\"><div class=\"ttname\"><a href=\"classTracker.html#a1029bfd35553535ccba3159101cd70b9\">Tracker::tfCallback</a></div><div class=\"ttdeci\">void tfCallback(const tf::tfMessagePtr &amp;msgs)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:172</div></div>\n<div class=\"ttc\" id=\"classTracker_html_ae71f93339e51c3b24927ace0b2d2cc92\"><div class=\"ttname\"><a href=\"classTracker.html#ae71f93339e51c3b24927ace0b2d2cc92\">Tracker::mapCallback</a></div><div class=\"ttdeci\">void mapCallback(const sensor_msgs::PointCloud2::ConstPtr &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> tracker.cpp:223</div></div>\n<div class=\"ttc\" id=\"classTracker_html\"><div class=\"ttname\"><a href=\"classTracker.html\">Tracker</a></div><div class=\"ttdef\"><b>Definition:</b> tracker.hpp:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/transformation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/transformation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">transformation.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;kindr/minimal/quat-transformation.h&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">using</span> Transformation = kindr::minimal::QuatTransformation;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">using</span> Quaternion = kindr::minimal::RotationQuaternion;</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/types_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_common/include/svo/common/types.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_23210b07bafb6842e50e879bc7dbe909.html\">svo_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4cb6f11201fe59b5f8b217064e02e7bb.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_dde38ef9573bb931f8f0cd681e345b93.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7ff8565bef8b7c8538e2983a187f6202.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">types.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"preprocessor\">#include &lt;memory&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// Scalars and fp precision.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"keyword\">using</span> <span class=\"keywordtype\">size_t</span> = std::size_t;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">using</span> uint8_t = std::uint8_t;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">using</span> uint64_t = std::uint64_t;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">using</span> FloatType = double;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"comment\">// Feature containers.</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">using</span> Keypoint = Eigen::Matrix&lt;FloatType, 2, 1&gt;;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"keyword\">using</span> BearingVector = Eigen::Matrix&lt;FloatType, 3, 1&gt;;</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"keyword\">using</span> Position = Eigen::Matrix&lt;FloatType, 3, 1&gt;;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"keyword\">using</span> GradientVector = Eigen::Matrix&lt;FloatType, 2, 1&gt;;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">using</span> SeedState = Eigen::Matrix&lt;FloatType, 4, 1&gt;;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">using</span> Level = int;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">using</span> Score = FloatType;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keyword\">using</span> Keypoints = Eigen::Matrix&lt;FloatType, 2, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;<span class=\"keyword\">using</span> Bearings = Eigen::Matrix&lt;FloatType, 3, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">using</span> Positions = Eigen::Matrix&lt;FloatType, 3, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;<span class=\"keyword\">using</span> Gradients = Eigen::Matrix&lt;FloatType, 2, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keyword\">using</span> Scores = Eigen::Matrix&lt;FloatType, Eigen::Dynamic, 1, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">using</span> Levels = Eigen::Matrix&lt;Level, Eigen::Dynamic, 1, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">using</span> InlierMask = Eigen::Matrix&lt;bool, Eigen::Dynamic, 1, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;<span class=\"keyword\">using</span> SeedStates = Eigen::Matrix&lt;FloatType, 4, Eigen::Dynamic, Eigen::ColMajor&gt;;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;<span class=\"keyword\">using</span> TrackIds = Eigen::VectorXi;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;<span class=\"comment\">// Forward declarations and common types for simplicity.</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;<span class=\"keyword\">struct </span>Feature;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"keyword\">using</span> FeaturePtr = std::shared_ptr&lt;Feature&gt;;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;<span class=\"keyword\">class </span>Frame;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;<span class=\"keyword\">using</span> FramePtr = std::shared_ptr&lt;Frame&gt;;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;<span class=\"keyword\">using</span> FrameWeakPtr = std::weak_ptr&lt;Frame&gt;;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;<span class=\"keyword\">class </span>FrameBundle;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;<span class=\"keyword\">using</span> FrameBundlePtr = std::shared_ptr&lt;FrameBundle&gt;;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;<span class=\"keyword\">using</span> BundleId = int;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;<span class=\"keyword\">using</span> ImgPyr = std::vector&lt;cv::Mat&gt;;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;<span class=\"comment\">//------------------------------------------------------------------------------</span></div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"comment\">// Feature Type.</span></div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;<span class=\"keyword\">enum class</span> FeatureType : uint8_t</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;{</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  kEdgeletSeed = 0,</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  kCornerSeed = 1,</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  kEdgeletSeedConverged = 2,</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  kCornerSeedConverged = 3,</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  kEdgelet = 4,</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  kCorner = 5,</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  kOutlier = 6,</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;};</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;<span class=\"keyword\">using</span> FeatureTypes = std::vector&lt;FeatureType&gt;;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isSeed(<span class=\"keyword\">const</span> FeatureType&amp; t)</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;{</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span>uint8_t<span class=\"keyword\">&gt;</span>(t) &lt; 4;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;}</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isConvergedSeed(<span class=\"keyword\">const</span> FeatureType&amp; t)</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;{</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordflow\">return</span> (t == FeatureType::kEdgeletSeedConverged</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;          || t == FeatureType::kCornerSeedConverged);</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;}</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isUnconvergedSeed(<span class=\"keyword\">const</span> FeatureType&amp; t)</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;{</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span>uint8_t<span class=\"keyword\">&gt;</span>(t) &lt; 2;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;}</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isEdgelet(<span class=\"keyword\">const</span> FeatureType&amp; t)</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;{</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;  <span class=\"keywordflow\">return</span> (t == FeatureType::kEdgelet</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;          || t == FeatureType::kEdgeletSeed</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;          || t == FeatureType::kEdgeletSeedConverged);</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;}</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> isCorner(<span class=\"keyword\">const</span> FeatureType&amp; t)</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;{</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;  <span class=\"keywordflow\">return</span> (t == FeatureType::kCorner</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;          || t == FeatureType::kCornerSeed</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;          || t == FeatureType::kCornerSeedConverged);</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;}</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;} <span class=\"comment\">// namespace svo</span></div><div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/user__input__thread_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/user_input_thread.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">user_input_thread.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef USER_INPUT_THREAD_H</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define USER_INPUT_THREAD_H</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;termios.h&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;thread&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;</div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a> {</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classvk_1_1UserInputThread.html\">   11</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;{</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <a class=\"code\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a>();</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  ~<a class=\"code\" href=\"classvk_1_1UserInputThread.html\">UserInputThread</a>();</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keywordtype\">char</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">getInput</a>();</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">stop</a>();</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"keyword\">private</span>:</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">acquireUserInput</a>();</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">initTermios</a>(<span class=\"keywordtype\">int</span> echo);</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;  <span class=\"keywordtype\">void</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">resetTermios</a>();</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">getch_</a>(<span class=\"keywordtype\">int</span> echo);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">getch</a>();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">int</span> <a class=\"code\" href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">getche</a>();</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordtype\">bool</span> stop_;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  std::thread * user_input_thread_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"keywordtype\">char</span> input_;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keyword\">struct </span>termios original_terminal_settings_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keyword\">struct </span>termios old_terminal_settings_, new_terminal_settings_;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;};</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;} <span class=\"comment\">// end namespace vk</span></div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"preprocessor\">#endif </span><span class=\"comment\">/* USER_INPUT_THREAD_H */</span><span class=\"preprocessor\"></span></div><div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_acd22f9756e8e36fa950b6983580a24a0\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#acd22f9756e8e36fa950b6983580a24a0\">vk::UserInputThread::acquireUserInput</a></div><div class=\"ttdeci\">void acquireUserInput()</div><div class=\"ttdoc\">Main loop that waits for new user input. </div><div class=\"ttdef\"><b>Definition:</b> user_input_thread.cpp:47</div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html\">vk::UserInputThread</a></div><div class=\"ttdef\"><b>Definition:</b> user_input_thread.h:11</div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_a0f5b29025621c1ad30d6de2a64aad67d\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#a0f5b29025621c1ad30d6de2a64aad67d\">vk::UserInputThread::getche</a></div><div class=\"ttdeci\">int getche()</div><div class=\"ttdoc\">Read 1 character with echo. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_a2055b14945c756b3b5dd31f7d06cbb99\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#a2055b14945c756b3b5dd31f7d06cbb99\">vk::UserInputThread::getch_</a></div><div class=\"ttdeci\">int getch_(int echo)</div><div class=\"ttdoc\">Read 1 character - echo defines echo mode. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_a6fae4286fe70e621c565fb337b41c61f\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#a6fae4286fe70e621c565fb337b41c61f\">vk::UserInputThread::getInput</a></div><div class=\"ttdeci\">char getInput()</div><div class=\"ttdef\"><b>Definition:</b> user_input_thread.cpp:35</div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_a4e169ae06877a84e56e5229261cc29d3\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#a4e169ae06877a84e56e5229261cc29d3\">vk::UserInputThread::stop</a></div><div class=\"ttdeci\">void stop()</div><div class=\"ttdoc\">Stop the thread. </div><div class=\"ttdef\"><b>Definition:</b> user_input_thread.cpp:42</div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_a9605d12c6b8ea4602d1649512d69a08b\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#a9605d12c6b8ea4602d1649512d69a08b\">vk::UserInputThread::resetTermios</a></div><div class=\"ttdeci\">void resetTermios()</div><div class=\"ttdoc\">Restore old terminal i/o settings. </div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_ad0cc1c9c095c70514f4357647401e10e\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#ad0cc1c9c095c70514f4357647401e10e\">vk::UserInputThread::getch</a></div><div class=\"ttdeci\">int getch()</div><div class=\"ttdoc\">Read 1 character without echo. </div></div>\n<div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n<div class=\"ttc\" id=\"classvk_1_1UserInputThread_html_aae76c187a3513b0e72c7c24b55e14f2d\"><div class=\"ttname\"><a href=\"classvk_1_1UserInputThread.html#aae76c187a3513b0e72c7c24b55e14f2d\">vk::UserInputThread::initTermios</a></div><div class=\"ttdeci\">void initTermios(int echo)</div><div class=\"ttdoc\">Initialize new terminal i/o settings. </div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/vision_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/vikit/vision.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_ebe0fced1784d1ab9a6de846e2b4455d.html\">vikit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">vision.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">/*</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\"> * vision.h</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\"> *</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\"> *  Created on: May 14, 2013</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\"> *      Author: cforster</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\"> */</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#ifndef VIKIT_VISION_H_</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#define VIKIT_VISION_H_</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;opencv2/core/core.hpp&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacevk.html\">vk</a></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;{</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> is_aligned8(<span class=\"keyword\">const</span> <span class=\"keywordtype\">void</span>* ptr)</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;{</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;  <span class=\"keywordflow\">return</span> ((reinterpret_cast&lt;size_t&gt;(ptr)) &amp; 0x7) == 0;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;}</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> is_aligned16(<span class=\"keyword\">const</span> <span class=\"keywordtype\">void</span>* ptr)</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;{</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  <span class=\"keywordflow\">return</span> ((reinterpret_cast&lt;size_t&gt;(ptr)) &amp; 0xF) == 0;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;}</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;interpolateMat_32f(<span class=\"keyword\">const</span> cv::Mat&amp; mat, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v)</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;{</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  assert(mat.type()==CV_32F);</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;  <span class=\"keywordtype\">float</span> x = floor(u);</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keywordtype\">float</span> y = floor(v);</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keywordtype\">float</span> subpix_x = u-x;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keywordtype\">float</span> subpix_y = v-y;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;  <span class=\"keywordtype\">float</span> wx0 = 1.0-subpix_x;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keywordtype\">float</span> wx1 =  subpix_x;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;  <span class=\"keywordtype\">float</span> wy0 = 1.0-subpix_y;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  <span class=\"keywordtype\">float</span> wy1 =  subpix_y;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordtype\">float</span> val00 = mat.at&lt;<span class=\"keywordtype\">float</span>&gt;(y,x);</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"keywordtype\">float</span> val10 = mat.at&lt;<span class=\"keywordtype\">float</span>&gt;(y,x+1);</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">float</span> val01 = mat.at&lt;<span class=\"keywordtype\">float</span>&gt;(y+1,x);</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordtype\">float</span> val11 = mat.at&lt;<span class=\"keywordtype\">float</span>&gt;(y+1,x+1);</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  <span class=\"keywordflow\">return</span> (wx0*wy0)*val00 + (wx1*wy0)*val10 + (wx0*wy1)*val01 + (wx1*wy1)*val11;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;}</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;<span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;interpolateMat_8u(<span class=\"keyword\">const</span> cv::Mat&amp; mat, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v)</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;{</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  assert(mat.type()==CV_8U);</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  <span class=\"keywordtype\">int</span> x = floor(u);</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  <span class=\"keywordtype\">int</span> y = floor(v);</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;  <span class=\"keywordtype\">float</span> subpix_x = u-x;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  <span class=\"keywordtype\">float</span> subpix_y = v-y;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keywordtype\">float</span> w00 = (1.0f-subpix_x)*(1.0f-subpix_y);</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  <span class=\"keywordtype\">float</span> w01 = (1.0f-subpix_x)*subpix_y;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordtype\">float</span> w10 = subpix_x*(1.0f-subpix_y);</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">float</span> w11 = 1.0f - w00 - w01 - w10;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> stride = mat.step.p[0];</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span>* ptr = mat.data + y*stride + x;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  <span class=\"keywordflow\">return</span> w00*ptr[0] + w01*ptr[stride] + w10*ptr[1] + w11*ptr[stride+1];</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;}</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keywordtype\">void</span> halfSample(<span class=\"keyword\">const</span> cv::Mat&amp; in, cv::Mat&amp; out);</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;<span class=\"keywordtype\">void</span> calcSharrDeriv(<span class=\"keyword\">const</span> cv::Mat&amp; src, cv::Mat&amp; dst);</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;<span class=\"preprocessor\">#ifdef __SSE2__</span></div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;<span class=\"keywordtype\">void</span> convertRawDepthImageSse_16u_to_32f(cv::Mat&amp; depth_16u, cv::Mat&amp; depth_32f, <span class=\"keywordtype\">float</span> scale);</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;<span class=\"preprocessor\">#endif</span></div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;} <span class=\"comment\">// namespace vk</span></div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;<span class=\"preprocessor\">#endif // VIKIT_VISION_H_</span></div><div class=\"ttc\" id=\"namespacevk_html\"><div class=\"ttname\"><a href=\"namespacevk.html\">vk</a></div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:23</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/visualizer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_ros/include/svo_ros/visualizer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_e0a052dcd0ac477d85c7eb4498e5864c.html\">svo_ros</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7c14fa4ee89d00dfd52aec81c0d799b7.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_be791e848177ba57ad909d6369eab067.html\">svo_ros</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">visualizer.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"comment\">// This file is part of SVO - Semi-direct Visual Odometry.</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"comment\">//</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"comment\">// Copyright (C) 2014 Christian Forster &lt;forster at ifi dot uzh dot ch&gt;</span></div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"comment\">// (Robotics and Perception Group, University of Zurich, Switzerland).</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;utility&gt;</span> <span class=\"comment\">// std::pair</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;iostream&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;boost/shared_ptr.hpp&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">// ros</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;ros/ros.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;<span class=\"preprocessor\">#include &lt;visualization_msgs/Marker.h&gt;</span></div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &lt;visualization_msgs/MarkerArray.h&gt;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/Image.h&gt;</span></div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"preprocessor\">#include &lt;sensor_msgs/CameraInfo.h&gt;</span></div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;<span class=\"preprocessor\">#include &lt;nav_msgs/Odometry.h&gt;</span></div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;<span class=\"preprocessor\">#include &lt;std_msgs/ColorRGBA.h&gt;</span></div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;<span class=\"preprocessor\">#include &lt;tf/transform_broadcaster.h&gt;</span></div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;<span class=\"preprocessor\">#include &lt;image_transport/image_transport.h&gt;</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#include &lt;pcl_ros/point_cloud.h&gt;</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;<span class=\"preprocessor\">#include &lt;pcl/point_types.h&gt;</span></div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"preprocessor\">#include &lt;svo/global.h&gt;</span></div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"preprocessor\">#include &lt;svo/common/types.h&gt;</span></div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacesvo.html\">svo</a> {</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"comment\">// forward declarations</span></div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;<span class=\"keyword\">class </span>FrameHandlerBase;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classsvo_1_1Visualizer.html\">   34</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a></div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;{</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;  <span class=\"keyword\">typedef</span> std::shared_ptr&lt;Visualizer&gt; Ptr;</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;  <span class=\"keyword\">typedef</span> pcl::PointXYZI PointType;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;  <span class=\"keyword\">typedef</span> pcl::PointCloud&lt;PointType&gt; PointCloud;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;  <span class=\"keyword\">const</span> std::string kWorldFrame = <span class=\"stringliteral\">&quot;world&quot;</span>;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;  ros::NodeHandle pnh_;</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  <span class=\"keywordtype\">size_t</span> trace_id_ = 0;</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  std::string trace_dir_;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;  <span class=\"keywordtype\">size_t</span> img_pub_level_;</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;  <span class=\"keywordtype\">size_t</span> img_pub_nth_;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;  <span class=\"keywordtype\">size_t</span> dense_pub_nth_;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;  ros::Publisher pub_frames_;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;  ros::Publisher pub_points_;</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  ros::Publisher pub_imu_pose_;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;  ros::Publisher pub_info_;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;  ros::Publisher pub_markers_;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;  ros::Publisher pub_pc_;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;  PointCloud::Ptr pc_;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;  std::vector&lt;ros::Publisher&gt; pub_cam_poses_;</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;  std::vector&lt;ros::Publisher&gt; pub_dense_;</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;  std::vector&lt;image_transport::Publisher&gt; pub_images_;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;  ros::Publisher pub_loop_closure_;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  tf::TransformBroadcaster br_;</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;  <span class=\"keywordtype\">bool</span> publish_world_in_cam_frame_;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keywordtype\">bool</span> publish_map_every_frame_;</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;  ros::Duration publish_points_display_time_;</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;  <span class=\"keywordtype\">bool</span> publish_seeds_;</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;  <span class=\"keywordtype\">bool</span> publish_seeds_uncertainty_;</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;  <span class=\"keywordtype\">bool</span> trace_pointcloud_;</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;  <span class=\"keywordtype\">double</span> vis_scale_;</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;  std::ofstream ofs_states_;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  std::ofstream ofs_pointcloud_;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;  <a class=\"code\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a>(<span class=\"keyword\">const</span> std::string&amp; trace_dir,</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;             <span class=\"keyword\">const</span> ros::NodeHandle&amp; nh_private,</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;             <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> num_cameras);</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;  ~<a class=\"code\" href=\"classsvo_1_1Visualizer.html\">Visualizer</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keywordtype\">void</span> publishSvoInfo(</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a>* <span class=\"keyword\">const</span> <a class=\"code\" href=\"namespacesvo.html\">svo</a>,</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;  <span class=\"keywordtype\">void</span> publishImages(</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;cv::Mat&gt;&amp; images,</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;  <span class=\"keywordtype\">void</span> publishImagesWithFeatures(</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle,</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp);</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  <span class=\"keywordtype\">void</span> publishImuPose(</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_world_imu,</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;      <span class=\"keyword\">const</span> Eigen::Matrix&lt;double, 6, 6&gt; Covariance,</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keywordtype\">void</span> publishCameraPoses(</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle,</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;      <span class=\"keyword\">const</span> int64_t timestamp_nanoseconds);</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;  <span class=\"keywordtype\">void</span> publishBundleFeatureTracks(</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr frames_ref,</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr frames_cur,</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;      int64_t timestamp);</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;  <span class=\"keywordtype\">void</span> publishFeatureTracks(</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;      <span class=\"keyword\">const</span> Keypoints&amp; px_ref,</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keyword\">const</span> Keypoints&amp; px_cur,</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;std::pair&lt;size_t, size_t&gt;&gt;&amp; matches_ref_cur,</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;      <span class=\"keyword\">const</span> ImgPyr&amp; img_pyr,</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;      <span class=\"keyword\">const</span> Level&amp; level,</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp,</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> frame_index);</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;  <span class=\"keywordtype\">void</span> visualizeHexacopter(</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_frame_world,</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  <span class=\"keywordtype\">void</span> visualizeQuadrocopter(</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_frame_world,</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  <span class=\"keywordtype\">void</span> visualizeMarkers(</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;      <span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle,</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; close_kfs,</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;      <span class=\"keyword\">const</span> MapPtr&amp; map);</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;  <span class=\"keywordtype\">void</span> publishTrajectoryPoint(</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; pos_in_vision,</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp,</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> <span class=\"keywordtype\">id</span>);</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  <span class=\"keywordtype\">void</span> visualizeMarkersWithUncertainty(</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;      <span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; close_kfs,</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;      <span class=\"keyword\">const</span> MapPtr&amp; map,</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> sigma_threshold);</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;  <span class=\"keywordtype\">void</span> publishSeedsBinary(<span class=\"keyword\">const</span> MapPtr&amp; map,<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> sigma_threshold);</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;  <span class=\"keywordtype\">void</span> publishSeeds(<span class=\"keyword\">const</span> MapPtr&amp; map);</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordtype\">void</span> publishSeedsAsPointcloud(</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;      <span class=\"keyword\">const</span> <a class=\"code\" href=\"classsvo_1_1Frame.html\">Frame</a>&amp; frame,</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;      <span class=\"keywordtype\">bool</span> only_converged_seeds,</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;      <span class=\"keywordtype\">bool</span> reset_pc_before_publishing = <span class=\"keyword\">true</span>);</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;  <span class=\"keywordtype\">void</span> publishVelocity(</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      <span class=\"keyword\">const</span> Eigen::Vector3d&amp; velocity_imu,</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp);</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;  <span class=\"keywordtype\">void</span> publishMapRegion(<span class=\"keyword\">const</span> std::vector&lt;FramePtr&gt;&amp; frames);</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;  <span class=\"keywordtype\">void</span> publishKeyframeWithPoints(</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; frame,</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;      <span class=\"keyword\">const</span> uint64_t timestamp,</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;      <span class=\"keyword\">const</span> <span class=\"keywordtype\">double</span> marker_scale = 0.05);</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;  <span class=\"keywordtype\">void</span> publishLoopClosure(</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;      <span class=\"keyword\">const</span> FramePtr&amp; query, <span class=\"keyword\">const</span> FramePtr&amp; match,</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;      <span class=\"keyword\">const</span> Transformation&amp; T_match_query);</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;  <span class=\"keywordtype\">void</span> exportToDense(<span class=\"keyword\">const</span> FrameBundlePtr&amp; frame_bundle);</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;  <span class=\"keywordtype\">void</span> publishSeedsUncertainty(<span class=\"keyword\">const</span> MapPtr &amp;map);</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;  <span class=\"keywordtype\">void</span> visualizeCoordinateFrames(<span class=\"keyword\">const</span> Transformation&amp; T_world_cam);</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;  <span class=\"keywordtype\">void</span> publishLoopClosureInfo(<span class=\"keyword\">const</span> std::vector&lt;Eigen::Matrix&lt;float, 1, 6 &gt;,</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;  Eigen::aligned_allocator&lt;Eigen::Matrix&lt;float, 1, 6&gt; &gt; &gt;&amp; loop_closure_data);</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;};</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;} <span class=\"comment\">// end namespace svo</span></div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;</div><div class=\"ttc\" id=\"classsvo_1_1FrameHandlerBase_html\"><div class=\"ttname\"><a href=\"classsvo_1_1FrameHandlerBase.html\">svo::FrameHandlerBase</a></div><div class=\"ttdoc\">Base class for various VO pipelines. Manages the map and the state machine. </div><div class=\"ttdef\"><b>Definition:</b> frame_handler_base.h:213</div></div>\n<div class=\"ttc\" id=\"namespacesvo_html\"><div class=\"ttname\"><a href=\"namespacesvo.html\">svo</a></div><div class=\"ttdoc\">&lt; for FloatTypeGpu </div><div class=\"ttdef\"><b>Definition:</b> abstract_bundle_adjustment.h:14</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Visualizer_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Visualizer.html\">svo::Visualizer</a></div><div class=\"ttdoc\">Publish visualisation messages to ROS. </div><div class=\"ttdef\"><b>Definition:</b> visualizer.h:34</div></div>\n<div class=\"ttc\" id=\"classsvo_1_1Frame_html\"><div class=\"ttname\"><a href=\"classsvo_1_1Frame.html\">svo::Frame</a></div><div class=\"ttdoc\">A frame saves the image, the associated features and the estimated pose. </div><div class=\"ttdef\"><b>Definition:</b> frame.h:28</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/weight__functions_8hpp_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: dvs_tracking/include/dvs_tracking/weight_functions.hpp Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_b81a846affbde9dec926dff04880a132.html\">dvs_tracking</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6c587c20a3a519c188b3d1694c38db1f.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_76c80e76d40115c0ad9ee95ad75bb811.html\">dvs_tracking</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">weight_functions.hpp</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef WEIGHT_FUNCTIONS_HPP</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define WEIGHT_FUNCTIONS_HPP</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceweight__functions.html\">weight_functions</a> {</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;</div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#define WEIGHT_FUNCTIONS_TUKEY_B_SQUARE 21.95016201  // b = 4.6851</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"keywordtype\">float</span> Tukey(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> error) {</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> x_square = error * error;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;    <span class=\"keywordflow\">if</span> (x_square &lt;= WEIGHT_FUNCTIONS_TUKEY_B_SQUARE) {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> tmp = 1.0f - x_square / WEIGHT_FUNCTIONS_TUKEY_B_SQUARE;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;        <span class=\"keywordflow\">return</span> tmp * tmp;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;        <span class=\"keywordflow\">return</span> 0.0f;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    }</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;}</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"preprocessor\">#define WEIGHT_FUNCTIONS_HUBER_K 1.345</span></div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;<span class=\"keywordtype\">float</span> Huber(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> error) {</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> abs_error = std::fabs(error);</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keywordflow\">return</span> (abs_error &lt; WEIGHT_FUNCTIONS_HUBER_K)</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;               ? 1.0f</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;               : WEIGHT_FUNCTIONS_HUBER_K / abs_error;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;}</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;}  <span class=\"comment\">// namespace weight_functions</span></div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;<span class=\"preprocessor\">#endif  // WEIGHT_FUNCTIONS_HPP</span></div><div class=\"ttc\" id=\"namespaceweight__functions_html\"><div class=\"ttname\"><a href=\"namespaceweight__functions.html\">weight_functions</a></div><div class=\"ttdef\"><b>Definition:</b> weight_functions.hpp:4</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/worker__base_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo/include/rpg_common/worker_base.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_3d53fb9a3e6f8c48e5f28e8c847910bb.html\">svo</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bc48aea3166a38dedd5eb54f9bd953e2.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8cdd923d87a6be48658e7bd05d68f366.html\">rpg_common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">worker_base.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#pragma once</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;</div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a> {</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;</div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"comment\">// Template-free interface to worker features that do not depend on the queue</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"comment\">// data type.</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\"><a class=\"line\" href=\"classrpg__common_1_1WorkerBase.html\">    7</a></span>&#160;<span class=\"keyword\">class </span><a class=\"code\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;{</div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"keyword\">public</span>:</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;  <span class=\"keyword\">virtual</span> ~<a class=\"code\" href=\"classrpg__common_1_1WorkerBase.html\">WorkerBase</a>() = <span class=\"keywordflow\">default</span>;</div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;</div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;  <span class=\"comment\">// Shuts down once the current loop is finished.</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> shutdown() = 0;</div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;  <span class=\"comment\">// Shuts down once the queue is empty.</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> softShutdown() = 0;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> pause() = 0;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> isPaused() <span class=\"keyword\">const</span> = 0;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;  <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> resume() = 0;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;};</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;}  <span class=\"comment\">// namespace rpg_common</span></div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespacerpg__common.html\">rpg</a> = <a class=\"code\" href=\"namespacerpg__common.html\">rpg_common</a>;</div><div class=\"ttc\" id=\"classrpg__common_1_1WorkerBase_html\"><div class=\"ttname\"><a href=\"classrpg__common_1_1WorkerBase.html\">rpg_common::WorkerBase</a></div><div class=\"ttdef\"><b>Definition:</b> worker_base.h:7</div></div>\n<div class=\"ttc\" id=\"namespacerpg__common_html\"><div class=\"ttname\"><a href=\"namespacerpg__common.html\">rpg_common</a></div><div class=\"ttdef\"><b>Definition:</b> batch_worker.h:11</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/yaml-serialization-eigen_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/yaml-serialization-eigen.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">yaml-serialization-eigen.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;Eigen/Core&gt;</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#pragma GCC diagnostic ignored &quot;-Wdeprecated-declarations&quot;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;yaml-cpp/yaml.h&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#pragma diagnostic pop</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;</div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceYAML.html\">YAML</a> {  <span class=\"comment\">// This has to be in the same namespace as the Emitter.</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"comment\">// yaml serialization helper function for the Eigen3 Matrix object.</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;<span class=\"comment\">// The matrix is a base class for dense matrices.</span></div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"comment\">// http://eigen.tuxfamily.org/dox-devel/TutorialMatrixClass.html</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar_, <span class=\"keywordtype\">int</span> A_, <span class=\"keywordtype\">int</span> B_, <span class=\"keywordtype\">int</span> C_, <span class=\"keywordtype\">int</span> D_, <span class=\"keywordtype\">int</span> E_&gt;</div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01Eigen_1_1Matrix_3_01Scalar___00_01A___00_01B___00_01C___00_01D___00_01E___01_4_01_4.html\">   15</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespaceEigen.html\">Eigen</a>::Matrix&lt;Scalar_, A_, B_, C_, D_, E_&gt; &gt; {</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;  <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar, <span class=\"keywordtype\">int</span> A, <span class=\"keywordtype\">int</span> B, <span class=\"keywordtype\">int</span> C, <span class=\"keywordtype\">int</span> D, <span class=\"keywordtype\">int</span> E&gt;</div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> Eigen::Matrix&lt;Scalar, A, B, C, D, E&gt;&amp; M) {</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;    Node node;</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Eigen::Matrix&lt;Scalar, A, B, C, D, E&gt;::Index IndexType;</div><div class=\"line\"><a name=\"l00020\"></a><span class=\"lineno\">   20</span>&#160;    IndexType rows = M.rows();</div><div class=\"line\"><a name=\"l00021\"></a><span class=\"lineno\">   21</span>&#160;    IndexType cols = M.cols();</div><div class=\"line\"><a name=\"l00022\"></a><span class=\"lineno\">   22</span>&#160;    node[<span class=\"stringliteral\">&quot;rows&quot;</span>] = rows;</div><div class=\"line\"><a name=\"l00023\"></a><span class=\"lineno\">   23</span>&#160;    node[<span class=\"stringliteral\">&quot;cols&quot;</span>] = cols;</div><div class=\"line\"><a name=\"l00024\"></a><span class=\"lineno\">   24</span>&#160;    CHECK_GT(rows, 0);</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;    CHECK_GT(cols, 0);</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;    <span class=\"keywordflow\">for</span> (IndexType i = 0; i &lt; rows; ++i) {</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;      <span class=\"keywordflow\">for</span> (IndexType j = 0; j &lt; cols; ++j) {</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;        node[<span class=\"stringliteral\">&quot;data&quot;</span>].push_back(M(i, j));</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;      }</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    }</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;    <span class=\"keywordflow\">return</span> node;</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;  }</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;  <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar, <span class=\"keywordtype\">int</span> A, <span class=\"keywordtype\">int</span> B, <span class=\"keywordtype\">int</span> C, <span class=\"keywordtype\">int</span> D, <span class=\"keywordtype\">int</span> E&gt;</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node,</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;                     Eigen::Matrix&lt;Scalar, A, B, C, D, E&gt;&amp; M) {</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;    <span class=\"keywordflow\">if</span>(!node.IsMap()) {</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Unable to get parse the matrix because the node is not a map.&quot;</span>;</div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;    }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Eigen::Matrix&lt;Scalar, A, B, C, D, E&gt;::Index IndexType;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    IndexType rows = node[<span class=\"stringliteral\">&quot;rows&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;    IndexType cols = node[<span class=\"stringliteral\">&quot;cols&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;    <span class=\"keywordflow\">if</span>(rows != A || cols != B) {</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix is the wrong size (rows, cols). Wanted: (&quot;</span> &lt;&lt; A &lt;&lt; <span class=\"stringliteral\">&quot;,&quot;</span></div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;          &lt;&lt; B &lt;&lt; <span class=\"stringliteral\">&quot;), got (&quot;</span> &lt;&lt; rows &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; cols &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span>;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\">   50</span>&#160;    }</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    <span class=\"keywordtype\">size_t</span> expected_size = M.rows() * M.cols();</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keywordflow\">if</span> (!node[<span class=\"stringliteral\">&quot;data&quot;</span>].IsSequence()) {</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix data is not a sequence.&quot;</span>;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;    }</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;    <span class=\"keywordflow\">if</span>(node[<span class=\"stringliteral\">&quot;data&quot;</span>].size() != expected_size) {</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The data sequence is the wrong size. Wanted: &quot;</span> &lt;&lt; expected_size &lt;&lt;</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;          <span class=\"stringliteral\">&quot;, got: &quot;</span> &lt;&lt; node[<span class=\"stringliteral\">&quot;data&quot;</span>].size();</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;    }</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;    YAML::const_iterator it = node[<span class=\"stringliteral\">&quot;data&quot;</span>].begin();</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    YAML::const_iterator it_end = node[<span class=\"stringliteral\">&quot;data&quot;</span>].end();</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keywordflow\">if</span> (rows &gt; 0 &amp;&amp; cols &gt; 0) {</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      <span class=\"keywordflow\">for</span> (IndexType i = 0; i &lt; rows; ++i) {</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;        <span class=\"keywordflow\">for</span> (IndexType j = 0; j &lt; cols; ++j) {</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;          CHECK(it != it_end);</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;          M(i, j) = it-&gt;as&lt;Scalar&gt;();</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;          ++it;</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;        }</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;      }</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;    }</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\">   74</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  }</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;  <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar, <span class=\"keywordtype\">int</span> B, <span class=\"keywordtype\">int</span> C, <span class=\"keywordtype\">int</span> D, <span class=\"keywordtype\">int</span> E&gt;</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node,</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;                     Eigen::Matrix&lt;Scalar, Eigen::Dynamic, B, C, D, E&gt;&amp; M) {</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordflow\">if</span>(!node.IsMap()) {</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Unable to get parse the matrix because the node is not a map.&quot;</span>;</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;    }</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Eigen::Matrix&lt;Scalar, Eigen::Dynamic, B, C, D, E&gt;::Index</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;        IndexType;</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;    IndexType rows = node[<span class=\"stringliteral\">&quot;rows&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    IndexType cols = node[<span class=\"stringliteral\">&quot;cols&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;    <span class=\"keywordflow\">if</span>(cols != B) {</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix is the wrong size (rows, cols). Wanted: (&quot;</span> &lt;&lt; rows &lt;&lt; <span class=\"stringliteral\">&quot;,&quot;</span></div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;          &lt;&lt; B &lt;&lt; <span class=\"stringliteral\">&quot;), got (&quot;</span> &lt;&lt; rows &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; cols &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span>;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\">   94</span>&#160;    }</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    M.resize(rows, Eigen::NoChange);</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;    <span class=\"keywordtype\">size_t</span> expected_size = M.rows() * M.cols();</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    <span class=\"keywordflow\">if</span> (!node[<span class=\"stringliteral\">&quot;data&quot;</span>].IsSequence()) {</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix data is not a sequence.&quot;</span>;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;    }</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;    <span class=\"keywordflow\">if</span>(node[<span class=\"stringliteral\">&quot;data&quot;</span>].size() != expected_size) {</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The data sequence is the wrong size. Wanted: &quot;</span> &lt;&lt; expected_size &lt;&lt;</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;          <span class=\"stringliteral\">&quot;, got: &quot;</span> &lt;&lt; node[<span class=\"stringliteral\">&quot;data&quot;</span>].size();</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;    }</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    YAML::const_iterator it = node[<span class=\"stringliteral\">&quot;data&quot;</span>].begin();</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;    YAML::const_iterator it_end = node[<span class=\"stringliteral\">&quot;data&quot;</span>].end();</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;    <span class=\"keywordflow\">if</span> (rows &gt; 0 &amp;&amp; cols &gt; 0) {</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;      <span class=\"keywordflow\">for</span> (IndexType i = 0; i &lt; rows; ++i) {</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;        <span class=\"keywordflow\">for</span> (IndexType j = 0; j &lt; cols; ++j) {</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;          CHECK(it != it_end);</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;          M(i, j) = it-&gt;as&lt;Scalar&gt;();</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;          ++it;</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;        }</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;      }</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;    }</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;  }</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;  <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar, <span class=\"keywordtype\">int</span> A, <span class=\"keywordtype\">int</span> C, <span class=\"keywordtype\">int</span> D, <span class=\"keywordtype\">int</span> E&gt;</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node,</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;                     Eigen::Matrix&lt;Scalar, A, Eigen::Dynamic, C, D, E&gt;&amp; M) {</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;    <span class=\"keywordflow\">if</span>(!node.IsMap()) {</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Unable to get parse the matrix because the node is not a map.&quot;</span>;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;    }</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Eigen::Matrix&lt;Scalar, A, Eigen::Dynamic, C, D, E&gt;::Index</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;        IndexType;</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    IndexType rows = node[<span class=\"stringliteral\">&quot;rows&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;    IndexType cols = node[<span class=\"stringliteral\">&quot;cols&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;    <span class=\"keywordflow\">if</span>(rows != A) {</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix is the wrong size (rows, cols). Wanted: (&quot;</span> &lt;&lt; A &lt;&lt; <span class=\"stringliteral\">&quot;,&quot;</span></div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;          &lt;&lt; cols &lt;&lt; <span class=\"stringliteral\">&quot;), got (&quot;</span> &lt;&lt; rows &lt;&lt; <span class=\"stringliteral\">&quot;, &quot;</span> &lt;&lt; cols &lt;&lt; <span class=\"stringliteral\">&quot;)&quot;</span>;</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;    }</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;</div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    M.resize(Eigen::NoChange, cols);</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;    <span class=\"keywordtype\">size_t</span> expected_size = M.rows() * M.cols();</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;    <span class=\"keywordflow\">if</span> (!node[<span class=\"stringliteral\">&quot;data&quot;</span>].IsSequence()) {</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix data is not a sequence.&quot;</span>;</div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00148\"></a><span class=\"lineno\">  148</span>&#160;    }</div><div class=\"line\"><a name=\"l00149\"></a><span class=\"lineno\">  149</span>&#160;    <span class=\"keywordflow\">if</span>(node[<span class=\"stringliteral\">&quot;data&quot;</span>].size() != expected_size) {</div><div class=\"line\"><a name=\"l00150\"></a><span class=\"lineno\">  150</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The data sequence is the wrong size. Wanted: &quot;</span> &lt;&lt; expected_size &lt;&lt;</div><div class=\"line\"><a name=\"l00151\"></a><span class=\"lineno\">  151</span>&#160;          <span class=\"stringliteral\">&quot;, got: &quot;</span> &lt;&lt; node[<span class=\"stringliteral\">&quot;data&quot;</span>].size();</div><div class=\"line\"><a name=\"l00152\"></a><span class=\"lineno\">  152</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00153\"></a><span class=\"lineno\">  153</span>&#160;    }</div><div class=\"line\"><a name=\"l00154\"></a><span class=\"lineno\">  154</span>&#160;</div><div class=\"line\"><a name=\"l00155\"></a><span class=\"lineno\">  155</span>&#160;    YAML::const_iterator it = node[<span class=\"stringliteral\">&quot;data&quot;</span>].begin();</div><div class=\"line\"><a name=\"l00156\"></a><span class=\"lineno\">  156</span>&#160;    YAML::const_iterator it_end = node[<span class=\"stringliteral\">&quot;data&quot;</span>].end();</div><div class=\"line\"><a name=\"l00157\"></a><span class=\"lineno\">  157</span>&#160;    <span class=\"keywordflow\">if</span> (rows &gt; 0 &amp;&amp; cols &gt; 0) {</div><div class=\"line\"><a name=\"l00158\"></a><span class=\"lineno\">  158</span>&#160;      <span class=\"keywordflow\">for</span> (IndexType i = 0; i &lt; rows; ++i) {</div><div class=\"line\"><a name=\"l00159\"></a><span class=\"lineno\">  159</span>&#160;        <span class=\"keywordflow\">for</span> (IndexType j = 0; j &lt; cols; ++j) {</div><div class=\"line\"><a name=\"l00160\"></a><span class=\"lineno\">  160</span>&#160;          CHECK(it != it_end);</div><div class=\"line\"><a name=\"l00161\"></a><span class=\"lineno\">  161</span>&#160;          M(i, j) = it-&gt;as&lt;Scalar&gt;();</div><div class=\"line\"><a name=\"l00162\"></a><span class=\"lineno\">  162</span>&#160;          ++it;</div><div class=\"line\"><a name=\"l00163\"></a><span class=\"lineno\">  163</span>&#160;        }</div><div class=\"line\"><a name=\"l00164\"></a><span class=\"lineno\">  164</span>&#160;      }</div><div class=\"line\"><a name=\"l00165\"></a><span class=\"lineno\">  165</span>&#160;    }</div><div class=\"line\"><a name=\"l00166\"></a><span class=\"lineno\">  166</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00167\"></a><span class=\"lineno\">  167</span>&#160;  }</div><div class=\"line\"><a name=\"l00168\"></a><span class=\"lineno\">  168</span>&#160;</div><div class=\"line\"><a name=\"l00169\"></a><span class=\"lineno\">  169</span>&#160;  <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> Scalar, <span class=\"keywordtype\">int</span> C, <span class=\"keywordtype\">int</span> D, <span class=\"keywordtype\">int</span> E&gt;</div><div class=\"line\"><a name=\"l00170\"></a><span class=\"lineno\">  170</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(</div><div class=\"line\"><a name=\"l00171\"></a><span class=\"lineno\">  171</span>&#160;      <span class=\"keyword\">const</span> Node&amp; node,</div><div class=\"line\"><a name=\"l00172\"></a><span class=\"lineno\">  172</span>&#160;      Eigen::Matrix&lt;Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D, E&gt;&amp; M) {</div><div class=\"line\"><a name=\"l00173\"></a><span class=\"lineno\">  173</span>&#160;    <span class=\"keywordflow\">if</span>(!node.IsMap()) {</div><div class=\"line\"><a name=\"l00174\"></a><span class=\"lineno\">  174</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Unable to get parse the matrix because the node is not a map.&quot;</span>;</div><div class=\"line\"><a name=\"l00175\"></a><span class=\"lineno\">  175</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00176\"></a><span class=\"lineno\">  176</span>&#160;    }</div><div class=\"line\"><a name=\"l00177\"></a><span class=\"lineno\">  177</span>&#160;</div><div class=\"line\"><a name=\"l00178\"></a><span class=\"lineno\">  178</span>&#160;    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> Eigen::Matrix&lt;Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D,</div><div class=\"line\"><a name=\"l00179\"></a><span class=\"lineno\">  179</span>&#160;                                   E&gt;::Index IndexType;</div><div class=\"line\"><a name=\"l00180\"></a><span class=\"lineno\">  180</span>&#160;    IndexType rows = node[<span class=\"stringliteral\">&quot;rows&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00181\"></a><span class=\"lineno\">  181</span>&#160;    IndexType cols = node[<span class=\"stringliteral\">&quot;cols&quot;</span>].as&lt;IndexType&gt;();</div><div class=\"line\"><a name=\"l00182\"></a><span class=\"lineno\">  182</span>&#160;</div><div class=\"line\"><a name=\"l00183\"></a><span class=\"lineno\">  183</span>&#160;    M.resize(rows, cols);</div><div class=\"line\"><a name=\"l00184\"></a><span class=\"lineno\">  184</span>&#160;</div><div class=\"line\"><a name=\"l00185\"></a><span class=\"lineno\">  185</span>&#160;    <span class=\"keywordtype\">size_t</span> expected_size = M.rows() * M.cols();</div><div class=\"line\"><a name=\"l00186\"></a><span class=\"lineno\">  186</span>&#160;    <span class=\"keywordflow\">if</span> (!node[<span class=\"stringliteral\">&quot;data&quot;</span>].IsSequence()) {</div><div class=\"line\"><a name=\"l00187\"></a><span class=\"lineno\">  187</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The matrix data is not a sequence.&quot;</span>;</div><div class=\"line\"><a name=\"l00188\"></a><span class=\"lineno\">  188</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00189\"></a><span class=\"lineno\">  189</span>&#160;    }</div><div class=\"line\"><a name=\"l00190\"></a><span class=\"lineno\">  190</span>&#160;    <span class=\"keywordflow\">if</span>(node[<span class=\"stringliteral\">&quot;data&quot;</span>].size() != expected_size) {</div><div class=\"line\"><a name=\"l00191\"></a><span class=\"lineno\">  191</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;The data sequence is the wrong size. Wanted: &quot;</span> &lt;&lt; expected_size &lt;&lt;</div><div class=\"line\"><a name=\"l00192\"></a><span class=\"lineno\">  192</span>&#160;          <span class=\"stringliteral\">&quot;, got: &quot;</span> &lt;&lt; node[<span class=\"stringliteral\">&quot;data&quot;</span>].size();</div><div class=\"line\"><a name=\"l00193\"></a><span class=\"lineno\">  193</span>&#160;      <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00194\"></a><span class=\"lineno\">  194</span>&#160;    }</div><div class=\"line\"><a name=\"l00195\"></a><span class=\"lineno\">  195</span>&#160;    YAML::const_iterator it = node[<span class=\"stringliteral\">&quot;data&quot;</span>].begin();</div><div class=\"line\"><a name=\"l00196\"></a><span class=\"lineno\">  196</span>&#160;    YAML::const_iterator it_end = node[<span class=\"stringliteral\">&quot;data&quot;</span>].end();</div><div class=\"line\"><a name=\"l00197\"></a><span class=\"lineno\">  197</span>&#160;    <span class=\"keywordflow\">if</span> (rows &gt; 0 &amp;&amp; cols &gt; 0) {</div><div class=\"line\"><a name=\"l00198\"></a><span class=\"lineno\">  198</span>&#160;      <span class=\"keywordflow\">for</span> (IndexType i = 0; i &lt; rows; ++i) {</div><div class=\"line\"><a name=\"l00199\"></a><span class=\"lineno\">  199</span>&#160;        <span class=\"keywordflow\">for</span> (IndexType j = 0; j &lt; cols; ++j) {</div><div class=\"line\"><a name=\"l00200\"></a><span class=\"lineno\">  200</span>&#160;          CHECK(it != it_end);</div><div class=\"line\"><a name=\"l00201\"></a><span class=\"lineno\">  201</span>&#160;          M(i, j) = it-&gt;as&lt;Scalar&gt;();</div><div class=\"line\"><a name=\"l00202\"></a><span class=\"lineno\">  202</span>&#160;          ++it;</div><div class=\"line\"><a name=\"l00203\"></a><span class=\"lineno\">  203</span>&#160;        }</div><div class=\"line\"><a name=\"l00204\"></a><span class=\"lineno\">  204</span>&#160;      }</div><div class=\"line\"><a name=\"l00205\"></a><span class=\"lineno\">  205</span>&#160;    }</div><div class=\"line\"><a name=\"l00206\"></a><span class=\"lineno\">  206</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00207\"></a><span class=\"lineno\">  207</span>&#160;  }</div><div class=\"line\"><a name=\"l00208\"></a><span class=\"lineno\">  208</span>&#160;};</div><div class=\"line\"><a name=\"l00209\"></a><span class=\"lineno\">  209</span>&#160;}  <span class=\"comment\">// namespace YAML</span></div><div class=\"line\"><a name=\"l00210\"></a><span class=\"lineno\">  210</span>&#160;</div><div class=\"line\"><a name=\"l00211\"></a><span class=\"lineno\">  211</span>&#160;<span class=\"preprocessor\">#endif  // ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_</span></div><div class=\"ttc\" id=\"namespaceEigen_html\"><div class=\"ttname\"><a href=\"namespaceEigen.html\">Eigen</a></div></div>\n<div class=\"ttc\" id=\"namespaceYAML_html\"><div class=\"ttname\"><a href=\"namespaceYAML.html\">YAML</a></div><div class=\"ttdef\"><b>Definition:</b> camera-yaml-serialization.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/yaml-serialization_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>\n<meta name=\"generator\" content=\"Doxygen 1.8.13\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>EVO: Event based Visual Odometry: svo_vikit/vikit_common/include/aslam/common/yaml-serialization.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">EVO: Event based Visual Odometry\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.8.13 -->\n<script type=\"text/javascript\">\nvar searchBox = new SearchBox(\"searchBox\", \"search\",false,'Search');\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_58945af6a59344c178157a5fc5bc4e91.html\">svo_vikit</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b1fc6689c0c87725dabec16410c0aa59.html\">vikit_common</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_44460e86fcc33327db83e6af68aa23dd.html\">include</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_b598d949dc25b12c5aec33e1cc17b644.html\">aslam</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cb8abb0607e575903425528419f1c044.html\">common</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\">\n<div class=\"title\">yaml-serialization.h</div>  </div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"fragment\"><div class=\"line\"><a name=\"l00001\"></a><span class=\"lineno\">    1</span>&#160;<span class=\"preprocessor\">#ifndef ASLAM_CV_COMMON_YAML_SERIALIZATION_H_</span></div><div class=\"line\"><a name=\"l00002\"></a><span class=\"lineno\">    2</span>&#160;<span class=\"preprocessor\">#define ASLAM_CV_COMMON_YAML_SERIALIZATION_H_</span></div><div class=\"line\"><a name=\"l00003\"></a><span class=\"lineno\">    3</span>&#160;</div><div class=\"line\"><a name=\"l00004\"></a><span class=\"lineno\">    4</span>&#160;<span class=\"preprocessor\">#include &lt;fstream&gt;</span>  <span class=\"comment\">// NOLINT</span></div><div class=\"line\"><a name=\"l00005\"></a><span class=\"lineno\">    5</span>&#160;<span class=\"preprocessor\">#include &lt;list&gt;</span></div><div class=\"line\"><a name=\"l00006\"></a><span class=\"lineno\">    6</span>&#160;<span class=\"preprocessor\">#include &lt;queue&gt;</span></div><div class=\"line\"><a name=\"l00007\"></a><span class=\"lineno\">    7</span>&#160;<span class=\"preprocessor\">#include &lt;string&gt;</span></div><div class=\"line\"><a name=\"l00008\"></a><span class=\"lineno\">    8</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div><div class=\"line\"><a name=\"l00009\"></a><span class=\"lineno\">    9</span>&#160;<span class=\"preprocessor\">#include &lt;unordered_set&gt;</span></div><div class=\"line\"><a name=\"l00010\"></a><span class=\"lineno\">   10</span>&#160;<span class=\"preprocessor\">#include &lt;utility&gt;</span></div><div class=\"line\"><a name=\"l00011\"></a><span class=\"lineno\">   11</span>&#160;<span class=\"preprocessor\">#include &lt;vector&gt;</span></div><div class=\"line\"><a name=\"l00012\"></a><span class=\"lineno\">   12</span>&#160;</div><div class=\"line\"><a name=\"l00013\"></a><span class=\"lineno\">   13</span>&#160;<span class=\"preprocessor\">#include &lt;aslam/common/memory.h&gt;</span></div><div class=\"line\"><a name=\"l00014\"></a><span class=\"lineno\">   14</span>&#160;<span class=\"preprocessor\">#include &lt;glog/logging.h&gt;</span></div><div class=\"line\"><a name=\"l00015\"></a><span class=\"lineno\">   15</span>&#160;</div><div class=\"line\"><a name=\"l00016\"></a><span class=\"lineno\">   16</span>&#160;<span class=\"preprocessor\">#include &quot;yaml-serialization-eigen.h&quot;</span></div><div class=\"line\"><a name=\"l00017\"></a><span class=\"lineno\">   17</span>&#160;</div><div class=\"line\"><a name=\"l00018\"></a><span class=\"lineno\">   18</span>&#160;<span class=\"keyword\">namespace </span><a class=\"code\" href=\"namespaceYAML.html\">YAML</a> {</div><div class=\"line\"><a name=\"l00019\"></a><span class=\"lineno\">   19</span>&#160;</div><div class=\"line\"><a name=\"l00025\"></a><span class=\"lineno\">   25</span>&#160;<span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> ValueType&gt;</div><div class=\"line\"><a name=\"l00026\"></a><span class=\"lineno\">   26</span>&#160;<span class=\"keywordtype\">bool</span> safeGet(<span class=\"keyword\">const</span> YAML::Node&amp; node, <span class=\"keyword\">const</span> std::string&amp; key, ValueType* value) {</div><div class=\"line\"><a name=\"l00027\"></a><span class=\"lineno\">   27</span>&#160;  CHECK_NOTNULL(value);</div><div class=\"line\"><a name=\"l00028\"></a><span class=\"lineno\">   28</span>&#160;  <span class=\"keywordtype\">bool</span> success = <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00029\"></a><span class=\"lineno\">   29</span>&#160;  <span class=\"keywordflow\">if</span>(!node.IsMap()) {</div><div class=\"line\"><a name=\"l00030\"></a><span class=\"lineno\">   30</span>&#160;    LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Unable to get Node[\\&quot;&quot;</span> &lt;&lt; key &lt;&lt; <span class=\"stringliteral\">&quot;\\&quot;] because the node is not a map&quot;</span>;</div><div class=\"line\"><a name=\"l00031\"></a><span class=\"lineno\">   31</span>&#160;  } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00032\"></a><span class=\"lineno\">   32</span>&#160;    <span class=\"keyword\">const</span> YAML::Node sub_node = node[key];</div><div class=\"line\"><a name=\"l00033\"></a><span class=\"lineno\">   33</span>&#160;    <span class=\"keywordflow\">if</span>(sub_node) {</div><div class=\"line\"><a name=\"l00034\"></a><span class=\"lineno\">   34</span>&#160;      <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00035\"></a><span class=\"lineno\">   35</span>&#160;        *value = sub_node.as&lt;ValueType&gt;();</div><div class=\"line\"><a name=\"l00036\"></a><span class=\"lineno\">   36</span>&#160;        success = <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00037\"></a><span class=\"lineno\">   37</span>&#160;      } <span class=\"keywordflow\">catch</span>(<span class=\"keyword\">const</span> YAML::Exception&amp; e) {</div><div class=\"line\"><a name=\"l00038\"></a><span class=\"lineno\">   38</span>&#160;        LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Error getting key \\&quot;&quot;</span> &lt;&lt; key &lt;&lt; <span class=\"stringliteral\">&quot;\\&quot; as type &quot;</span></div><div class=\"line\"><a name=\"l00039\"></a><span class=\"lineno\">   39</span>&#160;            &lt;&lt; <span class=\"keyword\">typeid</span>(ValueType).name() &lt;&lt; <span class=\"stringliteral\">&quot;: &quot;</span> &lt;&lt; e.what();</div><div class=\"line\"><a name=\"l00040\"></a><span class=\"lineno\">   40</span>&#160;      }</div><div class=\"line\"><a name=\"l00041\"></a><span class=\"lineno\">   41</span>&#160;    } <span class=\"keywordflow\">else</span> {</div><div class=\"line\"><a name=\"l00042\"></a><span class=\"lineno\">   42</span>&#160;      LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Key \\&quot;&quot;</span> &lt;&lt; key &lt;&lt; <span class=\"stringliteral\">&quot;\\&quot; does not exist&quot;</span>;</div><div class=\"line\"><a name=\"l00043\"></a><span class=\"lineno\">   43</span>&#160;    }</div><div class=\"line\"><a name=\"l00044\"></a><span class=\"lineno\">   44</span>&#160;  }</div><div class=\"line\"><a name=\"l00045\"></a><span class=\"lineno\">   45</span>&#160;  <span class=\"keywordflow\">return</span> success;</div><div class=\"line\"><a name=\"l00046\"></a><span class=\"lineno\">   46</span>&#160;}</div><div class=\"line\"><a name=\"l00047\"></a><span class=\"lineno\">   47</span>&#160;</div><div class=\"line\"><a name=\"l00048\"></a><span class=\"lineno\">   48</span>&#160;</div><div class=\"line\"><a name=\"l00049\"></a><span class=\"lineno\">   49</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> ValueType&gt;</div><div class=\"line\"><a name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01std_1_1queue_3_01ValueType_01_4_01_4.html\">   50</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::queue&lt;ValueType&gt; &gt; {</div><div class=\"line\"><a name=\"l00051\"></a><span class=\"lineno\">   51</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> std::queue&lt;ValueType&gt;&amp; queue) {</div><div class=\"line\"><a name=\"l00052\"></a><span class=\"lineno\">   52</span>&#160;    Node node;</div><div class=\"line\"><a name=\"l00053\"></a><span class=\"lineno\">   53</span>&#160;    <span class=\"keyword\">typename</span> aslam::Aligned&lt;std::vector, ValueType&gt;::type tmp_v;</div><div class=\"line\"><a name=\"l00054\"></a><span class=\"lineno\">   54</span>&#160;    <span class=\"keyword\">typename</span> aslam::Aligned&lt;std::queue, ValueType&gt;::type q_cpy = queue;</div><div class=\"line\"><a name=\"l00055\"></a><span class=\"lineno\">   55</span>&#160;    <span class=\"keywordflow\">while</span> (!q_cpy.empty()) {</div><div class=\"line\"><a name=\"l00056\"></a><span class=\"lineno\">   56</span>&#160;      tmp_v.push_back(q_cpy.front());</div><div class=\"line\"><a name=\"l00057\"></a><span class=\"lineno\">   57</span>&#160;      q_cpy.pop();</div><div class=\"line\"><a name=\"l00058\"></a><span class=\"lineno\">   58</span>&#160;    }</div><div class=\"line\"><a name=\"l00059\"></a><span class=\"lineno\">   59</span>&#160;    node = tmp_v;</div><div class=\"line\"><a name=\"l00060\"></a><span class=\"lineno\">   60</span>&#160;    <span class=\"keywordflow\">return</span> node;</div><div class=\"line\"><a name=\"l00061\"></a><span class=\"lineno\">   61</span>&#160;  }</div><div class=\"line\"><a name=\"l00062\"></a><span class=\"lineno\">   62</span>&#160;</div><div class=\"line\"><a name=\"l00063\"></a><span class=\"lineno\">   63</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, std::queue&lt;ValueType&gt;&amp; queue) {</div><div class=\"line\"><a name=\"l00064\"></a><span class=\"lineno\">   64</span>&#160;    CHECK(node.IsSequence());</div><div class=\"line\"><a name=\"l00065\"></a><span class=\"lineno\">   65</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">size_t</span> i = 0; i &lt; node.size(); ++i) {</div><div class=\"line\"><a name=\"l00066\"></a><span class=\"lineno\">   66</span>&#160;      ValueType tmp = node[i].as&lt;ValueType&gt;();</div><div class=\"line\"><a name=\"l00067\"></a><span class=\"lineno\">   67</span>&#160;      queue.push(tmp);</div><div class=\"line\"><a name=\"l00068\"></a><span class=\"lineno\">   68</span>&#160;    }</div><div class=\"line\"><a name=\"l00069\"></a><span class=\"lineno\">   69</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00070\"></a><span class=\"lineno\">   70</span>&#160;  }</div><div class=\"line\"><a name=\"l00071\"></a><span class=\"lineno\">   71</span>&#160;};</div><div class=\"line\"><a name=\"l00072\"></a><span class=\"lineno\">   72</span>&#160;</div><div class=\"line\"><a name=\"l00073\"></a><span class=\"lineno\">   73</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> KeyType&gt;</div><div class=\"line\"><a name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01std_1_1unordered__set_3_01KeyType_01_4_01_4.html\">   74</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::unordered_set&lt;KeyType&gt; &gt; {</div><div class=\"line\"><a name=\"l00075\"></a><span class=\"lineno\">   75</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> std::unordered_set&lt;KeyType&gt;&amp; <span class=\"keyword\">set</span>) {</div><div class=\"line\"><a name=\"l00076\"></a><span class=\"lineno\">   76</span>&#160;    Node node;</div><div class=\"line\"><a name=\"l00077\"></a><span class=\"lineno\">   77</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> KeyType&amp; value : <span class=\"keyword\">set</span>) {</div><div class=\"line\"><a name=\"l00078\"></a><span class=\"lineno\">   78</span>&#160;      node.push_back(value);</div><div class=\"line\"><a name=\"l00079\"></a><span class=\"lineno\">   79</span>&#160;    }</div><div class=\"line\"><a name=\"l00080\"></a><span class=\"lineno\">   80</span>&#160;    <span class=\"keywordflow\">return</span> node;</div><div class=\"line\"><a name=\"l00081\"></a><span class=\"lineno\">   81</span>&#160;  }</div><div class=\"line\"><a name=\"l00082\"></a><span class=\"lineno\">   82</span>&#160;</div><div class=\"line\"><a name=\"l00083\"></a><span class=\"lineno\">   83</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node, std::unordered_set&lt;KeyType&gt;&amp; <span class=\"keyword\">set</span>) {</div><div class=\"line\"><a name=\"l00084\"></a><span class=\"lineno\">   84</span>&#160;    <span class=\"keyword\">set</span>.clear();</div><div class=\"line\"><a name=\"l00085\"></a><span class=\"lineno\">   85</span>&#160;    CHECK(node.IsSequence());</div><div class=\"line\"><a name=\"l00086\"></a><span class=\"lineno\">   86</span>&#160;    <span class=\"keywordflow\">for</span> (YAML::const_iterator it = node.begin(); it != node.end(); ++it) {</div><div class=\"line\"><a name=\"l00087\"></a><span class=\"lineno\">   87</span>&#160;      <span class=\"keyword\">set</span>.insert(it-&gt;as&lt;KeyType&gt;());</div><div class=\"line\"><a name=\"l00088\"></a><span class=\"lineno\">   88</span>&#160;    }</div><div class=\"line\"><a name=\"l00089\"></a><span class=\"lineno\">   89</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00090\"></a><span class=\"lineno\">   90</span>&#160;  }</div><div class=\"line\"><a name=\"l00091\"></a><span class=\"lineno\">   91</span>&#160;};</div><div class=\"line\"><a name=\"l00092\"></a><span class=\"lineno\">   92</span>&#160;</div><div class=\"line\"><a name=\"l00093\"></a><span class=\"lineno\">   93</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> KeyType, <span class=\"keyword\">class</span> ValueType&gt;</div><div class=\"line\"><a name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"structYAML_1_1convert_3_01std_1_1unordered__map_3_01KeyType_00_01ValueType_01_4_01_4.html\">   94</a></span>&#160;<span class=\"keyword\">struct </span>convert&lt;<a class=\"code\" href=\"namespacestd.html\">std</a>::unordered_map&lt;KeyType, ValueType&gt; &gt; {</div><div class=\"line\"><a name=\"l00095\"></a><span class=\"lineno\">   95</span>&#160;  <span class=\"keyword\">static</span> Node encode(<span class=\"keyword\">const</span> std::unordered_map&lt;KeyType, ValueType&gt;&amp; map) {</div><div class=\"line\"><a name=\"l00096\"></a><span class=\"lineno\">   96</span>&#160;    Node node;</div><div class=\"line\"><a name=\"l00097\"></a><span class=\"lineno\">   97</span>&#160;    <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> std::pair&lt;KeyType, ValueType&gt;&amp; value : map) {</div><div class=\"line\"><a name=\"l00098\"></a><span class=\"lineno\">   98</span>&#160;      node[value.first] = value.second;</div><div class=\"line\"><a name=\"l00099\"></a><span class=\"lineno\">   99</span>&#160;    }</div><div class=\"line\"><a name=\"l00100\"></a><span class=\"lineno\">  100</span>&#160;    <span class=\"keywordflow\">return</span> node;</div><div class=\"line\"><a name=\"l00101\"></a><span class=\"lineno\">  101</span>&#160;  }</div><div class=\"line\"><a name=\"l00102\"></a><span class=\"lineno\">  102</span>&#160;</div><div class=\"line\"><a name=\"l00103\"></a><span class=\"lineno\">  103</span>&#160;  <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> decode(<span class=\"keyword\">const</span> Node&amp; node,</div><div class=\"line\"><a name=\"l00104\"></a><span class=\"lineno\">  104</span>&#160;                     std::unordered_map&lt;KeyType, ValueType&gt;&amp; map) {</div><div class=\"line\"><a name=\"l00105\"></a><span class=\"lineno\">  105</span>&#160;    map.clear();</div><div class=\"line\"><a name=\"l00106\"></a><span class=\"lineno\">  106</span>&#160;    <span class=\"keywordflow\">for</span> (YAML::const_iterator it = node.begin(); it != node.end(); ++it) {</div><div class=\"line\"><a name=\"l00107\"></a><span class=\"lineno\">  107</span>&#160;      map[it-&gt;first.as&lt;KeyType&gt;()] = it-&gt;second.as&lt;ValueType&gt;();</div><div class=\"line\"><a name=\"l00108\"></a><span class=\"lineno\">  108</span>&#160;    }</div><div class=\"line\"><a name=\"l00109\"></a><span class=\"lineno\">  109</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00110\"></a><span class=\"lineno\">  110</span>&#160;  }</div><div class=\"line\"><a name=\"l00111\"></a><span class=\"lineno\">  111</span>&#160;};</div><div class=\"line\"><a name=\"l00112\"></a><span class=\"lineno\">  112</span>&#160;</div><div class=\"line\"><a name=\"l00113\"></a><span class=\"lineno\">  113</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ObjectType&gt;</div><div class=\"line\"><a name=\"l00114\"></a><span class=\"lineno\">  114</span>&#160;<span class=\"keywordtype\">void</span> Save(<span class=\"keyword\">const</span> ObjectType&amp; <span class=\"keywordtype\">object</span>, std::ostream* ofs) {</div><div class=\"line\"><a name=\"l00115\"></a><span class=\"lineno\">  115</span>&#160;  CHECK_NOTNULL(ofs);</div><div class=\"line\"><a name=\"l00116\"></a><span class=\"lineno\">  116</span>&#160;  assert(ofs-&gt;good());</div><div class=\"line\"><a name=\"l00117\"></a><span class=\"lineno\">  117</span>&#160;  YAML::Node out;</div><div class=\"line\"><a name=\"l00118\"></a><span class=\"lineno\">  118</span>&#160;  out = object;</div><div class=\"line\"><a name=\"l00119\"></a><span class=\"lineno\">  119</span>&#160;  *ofs &lt;&lt; out;</div><div class=\"line\"><a name=\"l00120\"></a><span class=\"lineno\">  120</span>&#160;}</div><div class=\"line\"><a name=\"l00121\"></a><span class=\"lineno\">  121</span>&#160;</div><div class=\"line\"><a name=\"l00122\"></a><span class=\"lineno\">  122</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div><div class=\"line\"><a name=\"l00123\"></a><span class=\"lineno\">  123</span>&#160;<span class=\"keywordtype\">void</span> Save(<span class=\"keyword\">const</span> T&amp; <span class=\"keywordtype\">object</span>, <span class=\"keyword\">const</span> std::string&amp; filename) {</div><div class=\"line\"><a name=\"l00124\"></a><span class=\"lineno\">  124</span>&#160;  std::ofstream ofs(filename.c_str());</div><div class=\"line\"><a name=\"l00125\"></a><span class=\"lineno\">  125</span>&#160;  Save(<span class=\"keywordtype\">object</span>, &amp;ofs);</div><div class=\"line\"><a name=\"l00126\"></a><span class=\"lineno\">  126</span>&#160;}</div><div class=\"line\"><a name=\"l00127\"></a><span class=\"lineno\">  127</span>&#160;</div><div class=\"line\"><a name=\"l00128\"></a><span class=\"lineno\">  128</span>&#160;<span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> ObjectType&gt;</div><div class=\"line\"><a name=\"l00129\"></a><span class=\"lineno\">  129</span>&#160;<span class=\"keywordtype\">bool</span> Load(<span class=\"keyword\">const</span> std::string&amp; filename, ObjectType* <span class=\"keywordtype\">object</span>) {</div><div class=\"line\"><a name=\"l00130\"></a><span class=\"lineno\">  130</span>&#160;  CHECK_NOTNULL(<span class=\"keywordtype\">object</span>);</div><div class=\"line\"><a name=\"l00131\"></a><span class=\"lineno\">  131</span>&#160;  std::ifstream ifs(filename.c_str());</div><div class=\"line\"><a name=\"l00132\"></a><span class=\"lineno\">  132</span>&#160;  <span class=\"keywordflow\">if</span> (!ifs.good()) {</div><div class=\"line\"><a name=\"l00133\"></a><span class=\"lineno\">  133</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00134\"></a><span class=\"lineno\">  134</span>&#160;  }</div><div class=\"line\"><a name=\"l00135\"></a><span class=\"lineno\">  135</span>&#160;</div><div class=\"line\"><a name=\"l00136\"></a><span class=\"lineno\">  136</span>&#160;  <span class=\"keywordflow\">try</span> {</div><div class=\"line\"><a name=\"l00137\"></a><span class=\"lineno\">  137</span>&#160;    YAML::Node doc = YAML::LoadFile(filename.c_str());</div><div class=\"line\"><a name=\"l00138\"></a><span class=\"lineno\">  138</span>&#160;    (*object) = doc.as&lt;ObjectType&gt;();</div><div class=\"line\"><a name=\"l00139\"></a><span class=\"lineno\">  139</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div><div class=\"line\"><a name=\"l00140\"></a><span class=\"lineno\">  140</span>&#160;  }</div><div class=\"line\"><a name=\"l00141\"></a><span class=\"lineno\">  141</span>&#160;  <span class=\"keywordflow\">catch</span> (<span class=\"keyword\">const</span> std::exception&amp; e) {  <span class=\"comment\">// NOLINT</span></div><div class=\"line\"><a name=\"l00142\"></a><span class=\"lineno\">  142</span>&#160;    LOG(ERROR) &lt;&lt; <span class=\"stringliteral\">&quot;Encountered exception while reading yaml &quot;</span> &lt;&lt; e.what();</div><div class=\"line\"><a name=\"l00143\"></a><span class=\"lineno\">  143</span>&#160;    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div><div class=\"line\"><a name=\"l00144\"></a><span class=\"lineno\">  144</span>&#160;  }</div><div class=\"line\"><a name=\"l00145\"></a><span class=\"lineno\">  145</span>&#160;}</div><div class=\"line\"><a name=\"l00146\"></a><span class=\"lineno\">  146</span>&#160;}  <span class=\"comment\">// namespace YAML</span></div><div class=\"line\"><a name=\"l00147\"></a><span class=\"lineno\">  147</span>&#160;<span class=\"preprocessor\">#endif  // ASLAM_CV_COMMON_YAML_SERIALIZATION_H_</span></div><div class=\"ttc\" id=\"namespacestd_html\"><div class=\"ttname\"><a href=\"namespacestd.html\">std</a></div><div class=\"ttdef\"><b>Definition:</b> callback_host.h:56</div></div>\n<div class=\"ttc\" id=\"namespaceYAML_html\"><div class=\"ttname\"><a href=\"namespaceYAML.html\">YAML</a></div><div class=\"ttdef\"><b>Definition:</b> camera-yaml-serialization.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by &#160;<a href=\"http://www.doxygen.org/index.html\">\n<img class=\"footer\" src=\"doxygen.png\" alt=\"doxygen\"/>\n</a> 1.8.13\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "dvs_bootstrapping/CMakeLists.txt",
    "content": "project(dvs_bootstrapping)\ncmake_minimum_required(VERSION 3.0.2)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\nfind_package(Boost REQUIRED COMPONENTS system)\ninclude_directories(${Boost_INCLUDE_DIRS})\n\nfind_package(OpenCV REQUIRED)\ninclude_directories(${OpenCV_INCLUDE_DIRS})\n\nfind_package(PCL 1.7 REQUIRED)\ninclude_directories(${PCL_INCLUDE_DIRS})\n\nSET(CMAKE_BUILD_TYPE RelWithDebInfo) # Release, RelWithDebInfo\nADD_DEFINITIONS(\n    -std=c++11\n    -Wno-ignored-qualifiers\n    -w\n)\n\n################################################################################\n\nset(HEADERS_frontoplanar\n    include/dvs_bootstrapping/Bootstrapper.hpp\n    include/dvs_bootstrapping/FrontoPlanarBootstrapper.hpp\n    include/dvs_bootstrapping/EventsFramesBootstrapper.hpp\n    include/motion_correction.hpp\n)\nset(SOURCES_frontoplanar\n    src/Bootstrapper.cpp\n    src/FrontoPlanarBootstrapper.cpp\n    src/EventsFramesBootstrapper.cpp\n    src/motion_correction.cpp\n)\n\ncs_add_library(${PROJECT_NAME}_frontoplanar ${SOURCES_frontoplanar} ${HEADERS_frontoplanar})\n\n# set(HEADERS_harris\n#     include/dvs_bootstrapping/Bootstrapper.hpp\n#     include/dvs_bootstrapping/HarrisBootstrapper.hpp\n# )\n# set(SOURCES_harris\n#     src/Bootstrapper.cpp\n#     src/HarrisBootstrapper.cpp\n# )\n\n# cs_add_library(${PROJECT_NAME}_harris ${SOURCES_harris} ${HEADERS_harris})\n\nset(HEADERS_ef\n    include/dvs_bootstrapping/Bootstrapper.hpp\n    include/dvs_bootstrapping/EventsFramesBootstrapper.hpp\n    include/motion_correction.hpp\n)\nset(SOURCES_ef\n    src/Bootstrapper.cpp\n    src/EventsFramesBootstrapper.cpp\n    src/motion_correction.cpp\n)\n\ncs_add_library(${PROJECT_NAME}_ef ${SOURCES_ef} ${HEADERS_ef})\n\n################################################################################\n\ncs_add_executable(dvs_bootstrapping_frontoplanar_ros src/dvs_bootstrapping_frontoplanar_ros.cpp)\ntarget_link_libraries(dvs_bootstrapping_frontoplanar_ros \n  ${PROJECT_NAME}_frontoplanar\n  ${OpenCV_LIBS}\n  ${PCL_LIBS}\n)\n\n# cs_add_executable(dvs_bootstrapping_harris_ros src/dvs_bootstrapping_harris_ros.cpp)\n# target_link_libraries(dvs_bootstrapping_harris_ros \n#   ${PROJECT_NAME}_harris\n#   ${OpenCV_LIBS}\n#   ${PCL_LIBS}\n# )\n\ncs_add_executable(dvs_bootstrapping_ef_ros src/dvs_bootstrapping_ef_ros.cpp)\ntarget_link_libraries(dvs_bootstrapping_ef_ros \n  ${PROJECT_NAME}_ef\n  ${OpenCV_LIBS}\n  ${Boost_INCLUDE_DIRS}\n)\n\n################################################################################\ncs_install()\ncs_export()"
  },
  {
    "path": "dvs_bootstrapping/include/dvs_bootstrapping/Bootstrapper.hpp",
    "content": "#pragma once\n\n#ifndef BOOTSTRAPPING_HPP\n#define BOOTSTRAPPING_HPP\n\n#include <dvs_msgs/EventArray.h>\n#include <geometry_msgs/PoseStamped.h>\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <ros/node_handle.h>\n#include <ros/ros.h>\n#include <std_msgs/String.h>\n\n#include \"evo_utils/camera.hpp\"\n// #include <deque>\n#include <mutex>\n\nnamespace dvs_bootstrapping {\n\nclass Bootstrapper {\n   public:\n    Bootstrapper(ros::NodeHandle &nh, ros::NodeHandle &nh_private);\n    virtual ~Bootstrapper() {}\n\n    /**\n     * Start bootstrap on command\n     *\n     * topic: \"remote_key\", message: \"bootstrap\"\n     * When receives this message, reset data and set idle_ to false;\n     *\n     * @param msg Remote key message\n     */\n    void startCommandCallback(const std_msgs::String::ConstPtr &msg);\n\n    /**\n     * Update camera info on callback\n     *\n     * topic: \"camera_info\"\n     *\n     * @param msg Camera info msg\n     */\n    void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr &msg);\n\n    /**\n     * Set idle_ to true and wait for \"bootstrap\" command\n     *\n     * @see startCommandCallback\n     */\n    void pauseBootstrapper();\n\n   protected:\n    /**\n     * Setup operations to be performed after cam_ has been loaded\n     */\n    virtual void postCameraLoaded() {}\n\n    /**\n     * Setup operations to be performed after the bootstrap command has been\n     * received.\n     */\n    virtual void postBootstrapCalled() {}\n\n    /* ROS */\n    ros::NodeHandle nh_, nhp_;\n    image_geometry::PinholeCameraModel cam_;\n\n    bool idle_ = true;  ///< Whether it is bootstrapping the pipeline\n\n    std::vector<dvs_msgs::Event> eventQueue_;  ///< @see eventCallback\n    std::mutex data_mutex_;  ///< to grant exclusive access to eventQueue_\n\n    ros::Publisher remote_key_pub_;   ///< to trigger the rest of the\n                                      ///< pipeline when needed\n    std::string world_frame_id_;      ///< The root of the tf system\n    std::string bootstrap_frame_id_;  ///< child frame id for bootstrap\n\n   private:\n    ros::Subscriber event_sub_;        ///< @see eventCallback\n    ros::Subscriber remote_sub_;       ///< @see startCommandCallback\n    ros::Subscriber camera_info_sub_;  ///< @see cameraInfoCalback\n\n    /**\n     * Accumulate incoming events for later processing\n     *\n     * @param msg Incoming event array\n     */\n    void eventCallback(const dvs_msgs::EventArray::ConstPtr &msg);\n};\n\n}  // namespace dvs_bootstrapping\n\n#endif"
  },
  {
    "path": "dvs_bootstrapping/include/dvs_bootstrapping/EventsFramesBootstrapper.hpp",
    "content": "#pragma once\n\n#ifndef KLT_BOOTSTRAPPER_HPP\n#define KLT_BOOTSTRAPPER_HPP\n\n#include <image_transport/image_transport.h>\n#include <tf/tf.h>\n#include <tf/transform_broadcaster.h>\n\n#include <deque>\n#include <opencv2/core.hpp>\n#include <vector>\n\n#include \"dvs_bootstrapping/Bootstrapper.hpp\"\n#include \"motion_correction.hpp\"\n\nnamespace dvs_bootstrapping {\n\n/**\n * Collects events and publishes motion undistorted events frames\n */\nclass EventsFramesBootstrapper : public Bootstrapper {\n   public:\n    EventsFramesBootstrapper(ros::NodeHandle &nh, ros::NodeHandle &nhp);\n    virtual ~EventsFramesBootstrapper();\n\n   protected:\n    void postCameraLoaded() override;\n    size_t width_;   ///< image size: width\n    size_t height_;  ///< image size: height\n    cv::Size sensor_size_;\n    std::vector<cv::Point2f> rectified_points_;\n    bool keep_frames_ = false;\n    std::mutex img_mutex_;\n    std::deque<cv::Mat> frames_;  ///< images obtained aggregating events\n    int rate_hz_;\n    ros::Time ts_;  ///< last timestamped image (last received event)\n\n   private:\n    tf::Transformer tf_;\n    tf::TransformBroadcaster tf_pub_;\n    image_transport::ImageTransport it_;\n    image_transport::Publisher pub_event_img_, pub_optical_flow_;\n\n    int frame_size_;        ///< number of events to accumulate in each frame\n                            ///< ROS param: \"frame_size\"\n    int local_frame_size_;  ///< how many events have to be used for the motion\n                            ///< compensation\n                            ///< ROS param: \"local_frame_size\"\n    int newest_processed_event_;  ///< keeps track of the last processed event\n                                  ///< ROS param: \"n_min_events_frames\"\n    bool enable_visuals_;         ///< whether to publish visuals\n                                  ///< ROS param: \"enable_visualizations\"\n    cv::Mat undistort_mapx_;      ///< distorted to undistorted pixels (x)\n    cv::Mat undistort_mapy_;      ///< distorted to undistorted pixels (y)\n\n    motion_correction::WarpUpdateParams\n        unwarp_params_;  /// motion undistortion params\n\n    /**\n     * Thread that if not idle calls integrateEvents\n     *\n     * @see integrateEvents\n     */\n    void integratingThread();\n\n    /**\n     * Performs motion compensation and publishes/stores the undistorted events\n     * frame\n     *\n     *     ROS params:\n     *          frame_size) number of events to aggregate in an events frame\n     *          local_frame_size) size of the two batches of events used to\n     *              compute the warp parameters unwarp_estimate_n_it) maximum\n     *              number of iterations to\n     *           estimate homography unwarp_estimate_eps) homography estimation\n     *              tolerance\n     *          unwarp_estimate_pyramid_lvls) pyramid levels used to estimate\n     *              homography\n     *          min_step_size) minimum number of new events before next events\n     *              frame\n     *          events_scale_factor)\n     *              pixel intensity = sat(#events / events_scale_factor)\n     *          adaptive_thresholding) whether to perform adaptive thresholding\n     *              if adaptive_thresholding:\n     *                  activation_threshold_min) minimum pixel intensity\n     *                  activation_threshold_patch_size) filter patch size\n     *          median_filtering) whether to perform median filtering\n     *              if median_filtering:\n     *                  median_filter_size) filter size\n     *\n     * If param \"enable_visualizations\" is true, it publishes the undistorted\n     * events and the estimated optical flow.\n     *\n     * Moreover:\n     *\n     *      max_events_frames_saved_to_file) # of events frames stored on disk\n     *      events_frames_filename_format) filename of the events frames stored\n     *\n     * @return Whether the motion undistortion was performed (i.e., there were\n     * enough new events)\n     */\n    bool integrateEvents();\n\n    /**\n     * Clears events that are not useful anymore\n     */\n    void clearEventQueue();\n\n    /**\n     * Publishes image img at timestamp ts\n     *\n     *     ROS params:\n     *         motion_corrected_topic) topic of the ros message\n     *\n     * @param img the image to publish\n     * @param ts timestamp of the ros message\n     */\n    void publishEventImage(const cv::Mat &img, const ros::Time &ts);\n\n    /**\n     * Publishes optical flow field flow_field\n     *\n     *     ROS params:\n     *         optical_flow_topic) topic of the ros message\n     *\n     * @param flow_field the optical flow field to publish\n     */\n    void publishOpticalFlowVectors(const cv::Mat &flow_field);\n};\n\n}  // namespace dvs_bootstrapping\n\n#endif"
  },
  {
    "path": "dvs_bootstrapping/include/dvs_bootstrapping/FrontoPlanarBootstrapper.hpp",
    "content": "#pragma once\n\n#ifndef HARRIS_BOOTSTRAPPER_HPP\n#define HARRIS_BOOTSTRAPPER_HPP\n\n#include <image_transport/image_transport.h>\n#include <pcl/point_types.h>\n#include <pcl_ros/point_cloud.h>\n#include <tf/tf.h>\n#include <tf/transform_broadcaster.h>\n\n#include <opencv2/core.hpp>\n\n#include \"dvs_bootstrapping/EventsFramesBootstrapper.hpp\"\n\nnamespace dvs_bootstrapping {\n\ntypedef pcl::PointXYZI PointType;\ntypedef pcl::PointCloud<PointType> PointCloud;\n\n/**\n * Bootstrapper based on the EVO paper\n *\n * Assumes a fronto-planar scene and integrate a fixed number of events to\n * bootstrap the first map.\n *\n * Relies on EventsFramesBootstrapper for the events frames.\n */\nclass FrontoPlanarBootstrapper : public EventsFramesBootstrapper {\n   public:\n    FrontoPlanarBootstrapper(ros::NodeHandle &nh, ros::NodeHandle &nhp);\n    virtual ~FrontoPlanarBootstrapper();\n\n   protected:\n    void postBootstrapCalled() override;\n\n   private:\n    ros::Publisher\n        pub_pc_;           ///< publisher of the first approximation of the map\n    PointCloud::Ptr pcl_;  ///< map\n\n    tf::TransformBroadcaster pub_tf_;  ///< to send the first pose\n\n    bool start_ = false;\n\n    /**\n     * Project aggregated event image onto a plane at a distance d_ from the\n     * camera, and publish the point cloud as first map\n     *\n     *     ROS params:\n     *         plane_distance) distance at which the events frame is reprojected\n     *\n     * @see publishPcl\n     */\n    bool bootstrap();\n\n    /**\n     * Regularly checks whether to bootstrap\n     *\n     *     ROS params:\n     *         auto_trigger) if true, automatically starts publishing\n     *              fronto-planar maps\n     *         one_shot) if true, publishes only a single map before turning\n     *              idle\n     *         n_subscribers_to_wait) wait some subscribers before to publish\n     *              the maps\n     */\n    void bootstrappingThread();\n\n    /**\n     * Publish pcl_ under the topic \"pointcloud\"\n     *\n     *     ROS params:\n     *         radius_search) radius size of radius filter\n     *         min_num_neighbors) minimum number of neighbors for radius\n     *              filtering\n     *\n     * @return whether the point cloud was published\n     */\n    bool publishPcl();\n};\n\n}  // namespace dvs_bootstrapping\n\n#endif"
  },
  {
    "path": "dvs_bootstrapping/include/motion_correction.hpp",
    "content": "#pragma once\n\n#ifndef MOTION_CORRECTION_HPP\n#define MOTION_CORRECTION_HPP\n\n#include <dvs_msgs/Event.h>\n#include <ros/time.h>\n\n#include <Eigen/Dense>\n#include <opencv2/core.hpp>\n#include <opencv2/highgui.hpp>\n#include <opencv2/video/tracking.hpp>\n#include <string>\n#include <vector>\n\nnamespace motion_correction {\n\nusing EventArray = std::vector<dvs_msgs::Event>;\n\n/**\n * Custom floor function, reduces overhead avoiding overflows check (not\n * required in our use cases)\n *\n * @param x number to round to the floor\n *\n * @return rounded value\n */\nstatic inline int int_floor(float x) {\n    int i = (int)x;     /* truncate */\n    return i - (i > x); /* convert trunc to floor */\n}\n\n/**\n * Resets matrix if already initialized, otherwise instantiates a zero matrix\n *\n * @param arr matrix to reset\n * @param size size of the matrix\n * @param type type of the matrix (default: CV_32F)\n */\nstatic inline void resetMat(cv::Mat& arr, const cv::Size& size,\n                            int type = CV_32F) {\n    if (arr.cols == 0 || arr.rows == 0) {\n        arr = cv::Mat::zeros(size, type);\n    } else {\n        arr.setTo(0);\n    }\n}\n\n/**\n * Embeds all the parameters required for the estimation of the warp\n */\nclass WarpUpdateParams {\n   public:\n    int warp_mode;              ///< currently supported: cv::MOTION_HOMOGRAPHY\n    int num_pyramid_levels;     ///< # pyramid levels used to estimate the warp\n    cv::Size sensor_size;       ///< image size\n    cv::TermCriteria criteria;  ///< termination criteria for the optimization\n    WarpUpdateParams() {}\n\n    WarpUpdateParams(int nIt, double eps, int mode, int lvls,\n                     cv::Size sensor_size)\n        : warp_mode(mode),\n          num_pyramid_levels(lvls),\n          criteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, nIt, eps),\n          sensor_size(sensor_size) {}\n};\n\n/**\n * Initializes warp matrix for the multi-level analysis\n *\n * @param warp warp matrix to process\n * @param params optimization parameters (# pyramid levels)\n */\nvoid initWarp(cv::Mat& warp, const WarpUpdateParams& params);\n\n/**\n * Estimates the warp the better aligns img0 and img1\n *\n * @param warp warp estimate\n * @param img0 first frame\n * @param img1 second frame\n * @param params optimization parameters\n */\nvoid updateWarp(cv::Mat& warp, const cv::Mat& img0, const cv::Mat& img1,\n                const WarpUpdateParams& params);\n\n/**\n * Computes optical flow from warp\n *\n * @param warp warp from which to compute the optical flow\n * @param dt time to estimate the velocity field\n * @param sensor_size optical flow image size\n * @param rectified_points rectification table\n *\n * @return computed optical flow\n */\ncv::Mat computeFlowFromWarp(const cv::Mat& warp, double dt,\n                            cv::Size sensor_size,\n                            std::vector<cv::Point2f> rectified_points);\n\n/**\n * Draw undistorted events on image\n *\n * @param ev_first iterator to first event\n * @param ev_last last iterator (included)\n * @param out output events frame\n * @param rectified_points rectification table\n * @param use_polarity whether to account for polarity when drawing events\n */\nvoid drawEventsUndistorted(EventArray::iterator ev_first,\n                           EventArray::iterator ev_last, cv::Mat& out,\n                           cv::Size sensor_size,\n                           const std::vector<cv::Point2f>& rectified_points,\n                           const bool use_polarity);\n\n/**\n * Draw motion corrected events from optical flow\n *\n * @param ev_first iterator to first event\n * @param ev_last last iterator (included)\n * @param flow_field optical flow to use to undistort events\n * @param out output events frame\n * @param sensor_size size of the events frame\n * @param rectified_points rectification table\n * @param use_polarity whether to account for polarity when drawing events\n */\nvoid drawEventsMotionCorrectedOpticalFlow(\n    EventArray::iterator ev_first, EventArray::iterator ev_last,\n    const cv::Mat& flow_field, cv::Mat& out, cv::Size sensor_size,\n    const std::vector<cv::Point2f>& rectified_points, const bool use_polarity);\n\n}  // namespace motion_correction\n\n#endif"
  },
  {
    "path": "dvs_bootstrapping/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>dvs_bootstrapping</name>\n  <version>0.0.0</version>\n  <description>The dvs_bootstrapping package</description>\n  <maintainer email=\"antonio.terpin@gmail.com\">Antonio Terpin</maintainer>\n  <author email=\"antonio.terpin@gmail.com\">Antonio Terpin</author>\n  <license>TODO</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <depend>camera_info_manager</depend>\n  <depend>dvs_msgs</depend>\n  <depend>geometry_msgs</depend>\n  <depend>std_msgs</depend>\n  <depend>image_geometry</depend>\n  <depend>image_transport</depend>\n  <depend>pcl_ros</depend>\n  <depend>tf_conversions</depend>\n  <depend>evo_utils</depend>\n  <depend>cv_bridge</depend>\n\n</package>\n"
  },
  {
    "path": "dvs_bootstrapping/src/Bootstrapper.cpp",
    "content": "#include \"dvs_bootstrapping/Bootstrapper.hpp\"\n\n#include <camera_info_manager/camera_info_manager.h>\n#include <geometry_msgs/PoseStamped.h>\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n#include <sensor_msgs/CameraInfo.h>\n#include <string.h>\n\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace dvs_bootstrapping {\n\nBootstrapper::Bootstrapper(ros::NodeHandle &nh, ros::NodeHandle &nhp)\n    : nh_(nh), nhp_(nhp) {\n    idle_ = !rpg_common_ros::param<bool>(nhp_, \"auto_trigger\", false);\n\n    LOG(INFO) << \"Bootstrapper initially idle: \" << idle_;\n\n    cam_ = evo_utils::camera::loadPinholeCamera(nh_);\n\n    // subscribe / advertise\n    event_sub_ = nh_.subscribe(\"events\", 0, &Bootstrapper::eventCallback, this);\n    remote_sub_ = nh_.subscribe(\"remote_key\", 0,\n                                &Bootstrapper::startCommandCallback, this);\n    camera_info_sub_ = nh_.subscribe(\"camera_info\", 1,\n                                     &Bootstrapper::cameraInfoCallback, this);\n\n    remote_key_pub_ = nh_.advertise<std_msgs::String>(\"remote_key\", 1);\n\n    world_frame_id_ = rpg_common_ros::param<std::string>(nh_, \"world_frame_id\",\n                                                         std::string(\"world\"));\n    bootstrap_frame_id_ = rpg_common_ros::param(nh_, \"dvs_bootstrap_frame_id\",\n                                                std::string(\"/dvs_evo\"));\n}\n\nvoid Bootstrapper::startCommandCallback(const std_msgs::String::ConstPtr &msg) {\n    if (msg->data == \"bootstrap\") {\n        // LOG(INFO) << \"[Bootstrapper] received bootstrap command\";\n        // clean event queue\n        {\n            std::lock_guard<std::mutex> lock(data_mutex_);\n            eventQueue_.clear();\n        }\n\n        LOG(INFO) << \"Bootstrapping not idle anymore.\";\n        // set the state of the bootstrapper to active (might be used in\n        // subclasses)\n        idle_ = false;\n\n        postBootstrapCalled();\n    }\n}\n\nvoid Bootstrapper::cameraInfoCallback(\n    const sensor_msgs::CameraInfo::ConstPtr &msg) {\n    static bool got_camera_info = false;\n\n    if (!got_camera_info) {\n        cam_.fromCameraInfo(*msg);\n\n        postCameraLoaded();\n\n        // Currently, done only once\n        got_camera_info = true;\n    }\n}\n\nvoid Bootstrapper::pauseBootstrapper() {\n    LOG(INFO) << \"Bootstrapper is now idle.\";\n    idle_ = true;\n}\n\nvoid Bootstrapper::eventCallback(const dvs_msgs::EventArray::ConstPtr &msg) {\n    if (idle_) return;\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n    eventQueue_.insert(eventQueue_.end(), msg->events.begin(),\n                       msg->events.end());\n}\n\n}  // namespace dvs_bootstrapping"
  },
  {
    "path": "dvs_bootstrapping/src/EventsFramesBootstrapper.cpp",
    "content": "#include \"dvs_bootstrapping/EventsFramesBootstrapper.hpp\"\n\n#include <cv_bridge/cv_bridge.h>\n// #include <sensor_msgs/Image.h>\n// #include <sensor_msgs/PointCloud2.h>\n#include <std_msgs/String.h>\n\n#include <opencv2/calib3d.hpp>\n#include <opencv2/features2d.hpp>\n#include <opencv2/highgui/highgui.hpp>\n#include <opencv2/imgproc.hpp>\n#include <thread>\n\n// #include \"evo_utils/geometry.hpp\"\n#include <opencv2/video/tracking.hpp>\n\n#include \"evo_utils/geometry.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace dvs_bootstrapping {\n\nEventsFramesBootstrapper::~EventsFramesBootstrapper() {}\nEventsFramesBootstrapper::EventsFramesBootstrapper(ros::NodeHandle &nh,\n                                                   ros::NodeHandle &nhp)\n    : Bootstrapper(nh, nhp), it_(nh) {\n    postCameraLoaded();\n\n    rate_hz_ = rpg_common_ros::param<int>(nhp, \"rate_hz\", 25);\n    frame_size_ = rpg_common_ros::param<int>(nhp, \"frame_size\", 50000);\n    local_frame_size_ =\n        rpg_common_ros::param<int>(nhp, \"local_frame_size\", 10000);\n    CHECK_GE(frame_size_, local_frame_size_);\n    enable_visuals_ =\n        rpg_common_ros::param<bool>(nhp, \"enable_visualizations\", false);\n    if (enable_visuals_) {\n        pub_event_img_ = it_.advertise(\n            rpg_common_ros::param<std::string>(nhp, \"motion_corrected_topic\",\n                                               \"/evo/bootstrap/event_frame\"),\n            1);\n        pub_optical_flow_ = it_.advertise(\n            rpg_common_ros::param<std::string>(nhp, \"optical_flow_topic\",\n                                               \"/evo/bootstrap/optical_flow\"),\n            1);\n    }\n\n    // Events must be processed quickly\n    // Hence, we store and process them in two separate threads\n    std::thread integrate(&EventsFramesBootstrapper::integratingThread, this);\n    integrate.detach();\n}\n\nvoid EventsFramesBootstrapper::postCameraLoaded() {\n    static int nIt =\n        rpg_common_ros::param<int>(nhp_, \"unwarp_estimate_n_it\", 50);\n    static double eps =\n        rpg_common_ros::param<double>(nhp_, \"unwarp_estimate_eps\", 1e-2);\n    static int lvls =\n        rpg_common_ros::param<int>(nhp_, \"unwarp_estimate_pyramid_lvls\", 2);\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n    sensor_size_ = cam_.fullResolution();\n    height_ = sensor_size_.height;\n    width_ = sensor_size_.width;\n\n    // pre compute rectification table and weights\n    cv::initUndistortRectifyMap(cam_.intrinsicMatrix(), cam_.distortionCoeffs(),\n                                cv::noArray(), cv::noArray(), sensor_size_,\n                                CV_32FC1, undistort_mapx_, undistort_mapy_);\n\n    unwarp_params_ = motion_correction::WarpUpdateParams(\n        nIt, eps, cv::MOTION_HOMOGRAPHY, lvls, sensor_size_);\n    eventQueue_.clear();\n\n    // Precompute rectification table\n    evo_utils::camera::precomputeRectificationTable(rectified_points_, cam_);\n}\n\nvoid EventsFramesBootstrapper::integratingThread() {\n    static ros::Rate r(rate_hz_);\n\n    while (ros::ok()) {\n        r.sleep();\n\n        if (!idle_) {\n            if (integrateEvents()) {\n                // pauseBootstrapper();\n                // bootstrap();\n                clearEventQueue();\n            }\n        }\n    }\n}\n\nvoid EventsFramesBootstrapper::clearEventQueue() {\n    if (newest_processed_event_ <= frame_size_) return;\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n    eventQueue_.erase(\n        eventQueue_.begin(),\n        eventQueue_.begin() + (newest_processed_event_ - frame_size_));\n}\n\nbool EventsFramesBootstrapper::integrateEvents() {\n    static cv::Mat img0, img1, warp, event_img;\n    static cv::Mat flow_field;\n    static std::vector<dvs_msgs::Event> events;\n    static size_t min_step_size =\n        rpg_common_ros::param<int>(nhp_, \"min_step_size\", 5000);\n    static float events_scale_factor =\n        rpg_common_ros::param<float>(nhp_, \"events_scale_factor\", 7);\n    static size_t th_min =\n        rpg_common_ros::param<float>(nhp_, \"activation_threshold_min\", 200);\n    static size_t th_patch_size =\n        rpg_common_ros::param<int>(nhp_, \"activation_threshold_patch_size\", 3);\n    static size_t median_filter_size =\n        rpg_common_ros::param<int>(nhp_, \"median_filter_size\", 3);\n    static bool median_filtering =\n        rpg_common_ros::param<bool>(nhp_, \"median_filtering\", true);\n    static bool adaptive_thresholding =\n        rpg_common_ros::param<bool>(nhp_, \"adaptive_thresholding\", true);\n\n    // perform this step in a thread safe manner\n    std::lock_guard<std::mutex> lock_events(data_mutex_);\n    if (eventQueue_.size() <= frame_size_) return false;\n\n    size_t last_event = eventQueue_.size() - 1;\n    if (last_event - newest_processed_event_ < min_step_size) return false;\n\n    auto frame0_begin = eventQueue_.end() - frame_size_;\n    auto frame0_end = frame0_begin + local_frame_size_;\n    auto frame1_begin = eventQueue_.end() - local_frame_size_;\n    auto frame1_end = eventQueue_.end() - 1;\n    const double dt = (frame1_end->ts - frame0_begin->ts).toSec();\n\n    motion_correction::resetMat(img0, sensor_size_, CV_32F);\n    motion_correction::resetMat(img1, sensor_size_, CV_32F);\n    motion_correction::resetMat(event_img, sensor_size_, CV_32F);\n\n    motion_correction::drawEventsUndistorted(\n        frame0_begin, frame0_end, img0, sensor_size_, rectified_points_, false);\n\n    motion_correction::drawEventsUndistorted(\n        frame1_begin, frame1_end, img1, sensor_size_, rectified_points_, false);\n\n    static cv::Mat I33 = cv::Mat::eye(3, 3, CV_32F);\n    warp = I33;\n\n    motion_correction::updateWarp(warp, img0, img1, unwarp_params_);\n\n    flow_field = motion_correction::computeFlowFromWarp(warp, dt, sensor_size_,\n                                                        rectified_points_);\n\n    motion_correction::drawEventsMotionCorrectedOpticalFlow(\n        frame0_begin, frame1_end, flow_field, event_img, sensor_size_,\n        rectified_points_, false);\n\n    cv::Mat frame = (255.0 / events_scale_factor) * (event_img);\n    frame.convertTo(frame, CV_8U);\n\n    if (median_filtering)\n        evo_utils::geometry::huangMedianFilter(\n            frame, frame, cv::Mat(height_, width_, CV_8U, 1),\n            median_filter_size);\n    if (adaptive_thresholding)\n        // cv::adaptiveThreshold(frame, frame, 255,\n        // cv::ADAPTIVE_THRESH_GAUSSIAN_C,\n        //                       cv::THRESH_BINARY, th_patch_size, -th_min);\n        cv::threshold(frame, frame, th_min, 255,\n                      cv::ThresholdTypes::THRESH_TOZERO);\n\n    ts_ = frame1_end->ts;\n    if (enable_visuals_) {\n        publishOpticalFlowVectors(flow_field);\n        publishEventImage(frame, ts_);\n\n        static const int MAX_IMAGES = rpg_common_ros::param<int>(\n            nhp_, \"max_events_frames_saved_to_file\", 0);\n        static const std::string format = rpg_common_ros::param<std::string>(\n            nhp_, \"events_frames_filename_format\",\n            \"/media/user/data/example/%06d.bmp\");\n        static int cnt = 0;\n        if (cnt < MAX_IMAGES) {\n            static auto f = const_cast<char *>(format.c_str());\n            static auto size = std::snprintf(nullptr, 0, f, cnt);\n            std::string image_name(size + 1, '\\0');\n            std::sprintf(&image_name[0], f, cnt);\n            cv::imwrite(image_name, frame);\n            ++cnt;\n        }\n    }\n\n    newest_processed_event_ = last_event;\n\n    // save img for later use\n    std::lock_guard<std::mutex> lock_frames(img_mutex_);\n    if (keep_frames_) {\n        frames_.push_back(frame);\n    }\n\n    return true;\n}\n\nvoid EventsFramesBootstrapper::publishEventImage(const cv::Mat &img,\n                                                 const ros::Time &ts) {\n    static cv_bridge::CvImage cv_event_image;\n\n    cv_event_image.encoding = \"mono8\";\n    if (pub_event_img_.getNumSubscribers() > 0) {\n        img.convertTo(cv_event_image.image, CV_8U);\n\n        auto aux = cv_event_image.toImageMsg();\n        aux->header.stamp = ts;\n        pub_event_img_.publish(aux);\n    }\n}\n\nvoid EventsFramesBootstrapper::publishOpticalFlowVectors(\n    const cv::Mat &flow_field) {\n    if (pub_optical_flow_.getNumSubscribers() <= 0) return;\n\n    static cv::Mat disp;\n    motion_correction::resetMat(disp, sensor_size_, CV_8UC3);\n\n    static const int step = 18;\n    static const float scale = 0.04;\n\n    cv::Point2f origin;\n    cv::Point2f end;\n    for (int y = 0; y < flow_field.rows; y += step) {\n        for (int x = 0; x < flow_field.cols; x += step) {\n            const cv::Vec2f &flow_vec = flow_field.at<cv::Vec2f>(y, x);\n\n            origin.x = x;\n            origin.y = y;\n            end.x = origin.x + scale * flow_vec[0];\n            end.y = origin.y + scale * flow_vec[1];\n\n            cv::arrowedLine(disp, origin, end, cv::Scalar(0, 0, 255), 1, 8, 0,\n                            0.15);\n        }\n    }\n\n    static cv_bridge::CvImage cv_event_image;\n    cv_event_image.encoding = \"bgr8\";\n    cv_event_image.image = disp;\n    auto aux = cv_event_image.toImageMsg();\n    pub_optical_flow_.publish(aux);\n}\n\n}  // namespace dvs_bootstrapping"
  },
  {
    "path": "dvs_bootstrapping/src/FrontoPlanarBootstrapper.cpp",
    "content": "#include \"dvs_bootstrapping/FrontoPlanarBootstrapper.hpp\"\n\n#include <pcl/filters/radius_outlier_removal.h>\n#include <sensor_msgs/Image.h>\n#include <sensor_msgs/PointCloud2.h>\n#include <std_msgs/String.h>\n\n#include <opencv2/calib3d.hpp>\n#include <opencv2/features2d.hpp>\n#include <opencv2/imgproc.hpp>\n#include <thread>\n\n#include \"evo_utils/geometry.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace dvs_bootstrapping {\n\nFrontoPlanarBootstrapper::~FrontoPlanarBootstrapper() {}\nFrontoPlanarBootstrapper::FrontoPlanarBootstrapper(ros::NodeHandle &nh,\n                                                   ros::NodeHandle &nhp)\n    : EventsFramesBootstrapper(nh, nhp), pcl_(new PointCloud) {\n    postCameraLoaded();\n    start_ = rpg_common_ros::param<bool>(nhp_, \"auto_trigger\", false);\n\n    // Events must be processed quickly\n    // Hence, we store and process them in two separate threads\n    std::thread boot(&FrontoPlanarBootstrapper::bootstrappingThread, this);\n    boot.detach();\n\n    pub_pc_ = nh_.advertise<PointCloud>(\"pointcloud\", 1);\n    pcl_->header.frame_id = world_frame_id_;\n}\n\nvoid FrontoPlanarBootstrapper::bootstrappingThread() {\n    static ros::Rate r(rate_hz_);\n\n    static const bool one_shot =\n        rpg_common_ros::param<bool>(nhp_, \"one_shot\", false);\n    static const int n_subscribers_to_wait =\n        rpg_common_ros::param<int>(nhp_, \"n_subscribers_to_wait\", 1);\n\n    idle_ = false;  // this way events frames are published before actually\n                    // bootstrapping\n\n    while (ros::ok()) {\n        r.sleep();\n        std::lock_guard<std::mutex> lock_frames(img_mutex_);\n        if (start_) {\n            keep_frames_ = true;\n            if (!frames_.empty()) {\n                if (pub_pc_.getNumSubscribers() >= n_subscribers_to_wait) {\n                    // keep_frames_ = false;\n                    if (bootstrap()) {\n                        if (one_shot) {\n                            // pauseBootstrapper();\n                            start_ = false;\n                        }\n                    }\n                }\n            }\n        } else if (frames_.size() > 1) {\n            frames_.erase(frames_.begin(), frames_.end() - 2);\n        }\n    }\n}\n\nvoid FrontoPlanarBootstrapper::postBootstrapCalled() { start_ = true; }\n\nbool FrontoPlanarBootstrapper::bootstrap() {\n    static float plane_distance =\n        rpg_common_ros::param<float>(nhp_, \"plane_distance\", 1.);\n\n    static cv::Mat activation_mask;\n    activation_mask = frames_.back();\n    frames_.clear();\n    pcl_->clear();\n\n    for (int y = 0; y < height_; ++y) {\n        for (int x = 0; x < width_; ++x) {\n            if (activation_mask.at<u_char>(y, x) > 0) {\n                cv::Point3d f_ref = cam_.projectPixelTo3dRay(cv::Point2d(x, y));\n                cv::Point3d p = f_ref * plane_distance / f_ref.z;\n\n                // cv::Point3d p = plane_distance *\n\n                PointType p_world;\n                p_world.x = p.x;\n                p_world.y = p.y;\n                p_world.z = p.z;\n                p_world.intensity = 1.0 / p_world.z;\n                pcl_->push_back(p_world);\n            }\n        }\n    }\n\n    return publishPcl();\n}\n\nbool FrontoPlanarBootstrapper::publishPcl() {\n    static const float radius_search =\n        rpg_common_ros::param<float>(nhp_, \"radius_search\", 0.5);\n    static const float min_num_neighbors =\n        rpg_common_ros::param<int>(nhp_, \"min_num_neighbors\", 2);\n\n    if (pcl_->empty()) {\n        LOG(WARNING) << \"Point cloud empty!\";\n        return false;\n    }\n\n    // filter point cloud to remove outliers\n    PointCloud::Ptr cloud_filtered(new PointCloud);\n    pcl::RadiusOutlierRemoval<PointType> outrem;\n    outrem.setInputCloud(pcl_);\n    outrem.setRadiusSearch(radius_search);\n    outrem.setMinNeighborsInRadius(min_num_neighbors);\n    outrem.filter(*cloud_filtered);\n    pcl_->swap(*cloud_filtered);\n\n    if (pcl_->empty()) {\n        LOG(WARNING) << \"Point cloud empty after filtering!\";\n        return false;\n    }\n\n    std_msgs::Header ros_header = pcl_conversions::fromPCL(pcl_->header);\n    ros_header.stamp = ts_;\n\n    tf::StampedTransform first_pose(tf::Transform::getIdentity(),\n                                    ros_header.stamp, world_frame_id_,\n                                    bootstrap_frame_id_);\n    first_pose.child_frame_id_ = bootstrap_frame_id_;\n    pub_tf_.sendTransform(first_pose);\n\n    pcl_conversions::toPCL(ros_header, pcl_->header);\n\n    sensor_msgs::PointCloud2::Ptr pc_to_publish(new sensor_msgs::PointCloud2);\n\n    LOG(INFO) << \"Fronto planar map published\";\n    pcl::toROSMsg(*pcl_, *pc_to_publish);\n    pc_to_publish->header.stamp = ros_header.stamp;\n    pub_pc_.publish(pc_to_publish);\n\n    return true;\n}\n\n}  // namespace dvs_bootstrapping"
  },
  {
    "path": "dvs_bootstrapping/src/dvs_bootstrapping_ef_ros.cpp",
    "content": "#include <ros/ros.h>\n\n#include \"dvs_bootstrapping/EventsFramesBootstrapper.hpp\"\n#include \"evo_utils/main.hpp\"\n\nRPG_COMMON_MAIN {\n    ros::init(argc, argv, \"dvs_bootstrapping_ros\");\n\n    ros::NodeHandle nh;\n    ros::NodeHandle nh_private(\"~\");\n\n    dvs_bootstrapping::EventsFramesBootstrapper node(nh, nh_private);\n    ros::spin();\n\n    return 0;\n}\n"
  },
  {
    "path": "dvs_bootstrapping/src/dvs_bootstrapping_frontoplanar_ros.cpp",
    "content": "#include <ros/ros.h>\n#include \"evo_utils/main.hpp\"\n\n#include \"dvs_bootstrapping/FrontoPlanarBootstrapper.hpp\"\n\nRPG_COMMON_MAIN {\n    ros::init(argc, argv, \"dvs_bootstrapping_ros\");\n\n    ros::NodeHandle nh;\n    ros::NodeHandle nh_private(\"~\");\n\n    dvs_bootstrapping::FrontoPlanarBootstrapper node(nh, nh_private);\n    ros::spin();\n\n    return 0;\n}\n"
  },
  {
    "path": "dvs_bootstrapping/src/motion_correction.cpp",
    "content": "#include \"motion_correction.hpp\"\n\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n\nnamespace motion_correction {\n\nvoid initWarp(cv::Mat& warp, const WarpUpdateParams& params) {\n    // Downsample the motion parameters to the lowest pyramid level\n    for (size_t lvl = 0; lvl < params.num_pyramid_levels; ++lvl) {\n        if (warp.size() == cv::Size(3, 3)) {\n            warp.at<float>(0, 2) /= 2.0;\n            warp.at<float>(1, 2) /= 2.0;\n            warp.at<float>(2, 0) *= 2.0;\n            warp.at<float>(2, 1) *= 2.0;\n        } else {\n            warp.at<float>(0, 2) /= 2.0;\n            warp.at<float>(1, 2) /= 2.0;\n        }\n    }\n}\n\nvoid updateWarp(cv::Mat& warp, const cv::Mat& img0, const cv::Mat& img1,\n                const WarpUpdateParams& params) {\n    // Initialize with identity or previous warp\n    initWarp(warp, params);\n\n    try {\n        static cv::Mat img0_8u, img1_8u;\n        resetMat(img0_8u, params.sensor_size, CV_8U);\n        resetMat(img1_8u, params.sensor_size, CV_8U);\n\n        cv::normalize(img0, img0_8u, 0, 255, cv::NORM_MINMAX, CV_8U);\n        cv::normalize(img1, img1_8u, 0, 255, cv::NORM_MINMAX, CV_8U);\n\n        std::vector<cv::Mat> pyramid0, pyramid1;\n        cv::buildOpticalFlowPyramid(img0_8u, pyramid0, cv::Size(3, 3),\n                                    params.num_pyramid_levels, false);\n        cv::buildOpticalFlowPyramid(img1_8u, pyramid1, cv::Size(3, 3),\n                                    params.num_pyramid_levels, false);\n        CHECK_EQ(pyramid0.size(), pyramid1.size());\n        VLOG(30) << pyramid0.size();\n        VLOG(30) << \"Init: \" << warp;\n        for (size_t lvlz = 0; lvlz < pyramid0.size(); lvlz++) {\n            size_t lvl = pyramid0.size() - 1 - lvlz;\n            VLOG(30) << \"Level: \" << lvl;\n            VLOG(30) << \"Size: \" << pyramid0[lvl].size();\n\n            cv::findTransformECC(pyramid0[lvl], pyramid1[lvl], warp,\n                                 params.warp_mode, params.criteria);\n\n            VLOG(30) << \"After findTransformECC: \" << warp;\n\n            // Upsample the warp to prepare for the next level\n            if (lvl >= 1) {\n                VLOG(30) << \"Upsampling the warp\";\n                if (params.warp_mode == cv::MOTION_HOMOGRAPHY) {\n                    warp.at<float>(0, 2) *= 2.0;\n                    warp.at<float>(1, 2) *= 2.0;\n                    warp.at<float>(2, 0) /= 2.0;\n                    warp.at<float>(2, 1) /= 2.0;\n                } else {\n                    warp.at<float>(0, 2) *= 2.0;\n                    warp.at<float>(1, 2) *= 2.0;\n                }\n            }\n        }\n    } catch (cv::Exception& e) {\n        LOG(WARNING) << e.err;\n        if (params.warp_mode == cv::MOTION_HOMOGRAPHY) {\n            warp = cv::Mat::eye(3, 3, CV_32F);\n        } else {\n            warp = cv::Mat::eye(2, 3, CV_32F);\n        }\n    }\n}\n\ncv::Mat computeFlowFromWarp(const cv::Mat& warp, double dt,\n                            cv::Size sensor_size,\n                            std::vector<cv::Point2f> rectified_points) {\n    CHECK(warp.size() == cv::Size(3, 2) || warp.size() == cv::Size(3, 3));\n    CHECK_EQ(warp.type(), CV_32F);\n\n    static cv::Mat flow_field;\n    resetMat(flow_field, sensor_size, CV_32FC2);\n\n    const bool is_homography = warp.size() == cv::Size(3, 3);\n\n    // pre-initialize matrices pts_begin_2x1 and pts_begin_homogeneous_3x1\n    // which contain the rectified undistorted pixel locations\n    // (normal and homogeneous coordinates)\n    static cv::Mat pts_begin_2x1;\n    static cv::Mat pts_begin_homogeneous_3x1;\n    static bool pts_begin_initialized = false;\n    if (!pts_begin_initialized) {\n        pts_begin_2x1 = cv::Mat::zeros(sensor_size, CV_32FC2);\n        pts_begin_homogeneous_3x1 = cv::Mat::zeros(sensor_size, CV_32FC3);\n        for (size_t y = 0; y < sensor_size.height; ++y) {\n            for (size_t x = 0; x < sensor_size.width; ++x) {\n                const cv::Point2f& p =\n                    rectified_points[x + y * sensor_size.width];\n                pts_begin_2x1.at<cv::Vec2f>(y, x) = cv::Vec2f(p.x, p.y);\n                pts_begin_homogeneous_3x1.at<cv::Vec3f>(y, x) =\n                    cv::Vec3f(p.x, p.y, 1.f);\n            }\n        }\n        pts_begin_initialized = true;\n        VLOG(20) << \"Initialized pts_begin_2x1 and pts_begin_homogeneous_3x1\";\n    }\n\n    cv::Mat pts_end;\n    cv::Mat* pts_begin;\n    pts_begin = (is_homography) ? &pts_begin_2x1 : &pts_begin_homogeneous_3x1;\n\n    // @TODO\n    // We use numerical derivatives here for simplicity although there is a\n    // closed form solution.\n    if (is_homography) {\n        cv::perspectiveTransform(*pts_begin, pts_end, warp);\n    } else  // affine, euclidean, or translation\n    {\n        cv::transform(*pts_begin, pts_end, warp);\n    }\n\n    for (size_t y = 0; y < sensor_size.height; ++y) {\n        for (size_t x = 0; x < sensor_size.width; ++x) {\n            cv::Vec2f& flow = flow_field.at<cv::Vec2f>(y, x);\n            if (is_homography) {\n                flow = (pts_end.at<cv::Vec2f>(y, x) -\n                        pts_begin->at<cv::Vec2f>(y, x)) /\n                       dt;\n            } else {\n                flow[0] = (pts_end.at<cv::Vec2f>(y, x)[0] -\n                           pts_begin->at<cv::Vec3f>(y, x)[0]) /\n                          dt;\n                flow[1] = (pts_end.at<cv::Vec2f>(y, x)[1] -\n                           pts_begin->at<cv::Vec3f>(y, x)[1]) /\n                          dt;\n            }\n        }\n    }\n\n    return flow_field;\n}\n\nvoid drawEventsUndistorted(EventArray::iterator ev_first,\n                           EventArray::iterator ev_last, cv::Mat& out,\n                           cv::Size sensor_size,\n                           const std::vector<cv::Point2f>& rectified_points,\n                           const bool use_polarity) {\n    // Draw Events\n    auto draw = [](float& p, const float val) { p = p + val; };\n\n    out = cv::Scalar(0);\n\n    float w0, w1, w2, w3;\n\n    cv::Point2i tl;\n\n    for (auto e = ev_first; e != ev_last; ++e) {\n        const cv::Point2f& p =\n            rectified_points[e->x + e->y * sensor_size.width];\n\n        tl.x = int_floor(p.x);\n        tl.y = int_floor(p.y);\n        if (tl.x >= 0 && tl.x < sensor_size.width - 1 && tl.y >= 0 &&\n            tl.y < sensor_size.height - 1) {\n            const float fx = p.x - tl.x, fy = p.y - tl.y;\n            w0 = (1.f - fx) * (1.f - fy);\n            w1 = (fx) * (1.f - fy);\n            w2 = (1.f - fx) * (fy);\n            w3 = (fx) * (fy);\n\n            float pol;\n\n            if (use_polarity) {\n                pol = ((e->polarity) ? 1.f : -1.f);\n            } else {\n                pol = 1.f;\n            }\n\n            draw(out.at<float>(tl.y, tl.x), pol * w0);\n            draw(out.at<float>(tl.y, tl.x + 1), pol * w1);\n            draw(out.at<float>(tl.y + 1, tl.x), pol * w2);\n            draw(out.at<float>(tl.y + 1, tl.x + 1), pol * w3);\n        }\n    }\n}\n\nvoid drawEventsMotionCorrectedOpticalFlow(\n    EventArray::iterator ev_first, EventArray::iterator ev_last,\n    const cv::Mat& flow_field, cv::Mat& out, cv::Size sensor_size,\n    const std::vector<cv::Point2f>& rectified_points, const bool use_polarity) {\n    CHECK_EQ(flow_field.type(), CV_32FC2);\n\n    // Draw Events\n    auto draw = [](float& p, const float val) { p = p + val; };\n\n    out = cv::Scalar(0);\n\n    float w0, w1, w2, w3;\n\n    cv::Point2i tl;\n    cv::Point2f p_corr;\n\n    const ros::Time t_begin = ev_first->ts;\n    const ros::Time t_end = ev_last->ts;\n    for (auto e = ev_first; e != ev_last; ++e) {\n        const cv::Point2f& p =\n            rectified_points[e->x + e->y * sensor_size.width];\n        const cv::Vec2f& flow = flow_field.at<cv::Vec2f>(p.y, p.x);\n        const double dt = (t_end - e->ts).toSec();\n        p_corr.x = p.x + dt * flow[0];\n        p_corr.y = p.y + dt * flow[1];\n\n        tl.x = int_floor(p_corr.x);\n        tl.y = int_floor(p_corr.y);\n        if (tl.x >= 0 && tl.x < sensor_size.width - 1 && tl.y >= 0 &&\n            tl.y < sensor_size.height - 1) {\n            const float fx = p_corr.x - tl.x, fy = p_corr.y - tl.y;\n            w0 = (1.f - fx) * (1.f - fy);\n            w1 = (fx) * (1.f - fy);\n            w2 = (1.f - fx) * (fy);\n            w3 = (fx) * (fy);\n\n            float pol;\n\n            if (use_polarity) {\n                pol = ((e->polarity) ? 1.f : -1.f);\n            } else {\n                pol = 1.f;\n            }\n\n            draw(out.at<float>(tl.y, tl.x), pol * w0);\n            draw(out.at<float>(tl.y, tl.x + 1), pol * w1);\n            draw(out.at<float>(tl.y + 1, tl.x), pol * w2);\n            draw(out.at<float>(tl.y + 1, tl.x + 1), pol * w3);\n        }\n    }\n}\n}  // namespace motion_correction\n"
  },
  {
    "path": "dvs_bootstrapping/src/pose_to_tf.py",
    "content": "#!/usr/bin/env python\n\nimport rospy\nimport tf\nfrom geometry_msgs.msg import PoseStamped\nfrom std_msgs.msg import Bool\nfrom vikit_py import transformations as transformations\nimport numpy as np\n\n# Read pose from topic and broadcast it\n# to /tf for a fixed amount of time\n\n\nclass Boostrapper:\n\n    def __init__(self, tf_frame_name, tf_world_name, relative_to_first_pose=True):\n        self.br = tf.TransformBroadcaster()\n        self.tf_frame_name = tf_frame_name\n        self.tf_world_name = tf_world_name\n        self.got_first_pose = False\n\n        # whether the pose will be given relative to the first pose received\n        self.relative_to_first_pose = relative_to_first_pose\n\n    def handle_dvs_pose(self, msg):\n\n        if not self.got_first_pose:\n            # print('Broadcasting pose to tf frame: %s%s'.format(\n            #     self.tf_world_name, self.tf_frame_name))\n\n            # Keep first pose T_w_dvs to use as the reference coordinate system\n            t = msg.pose.position\n            q = msg.pose.orientation\n            self.T_w_init = transformations.matrix_from_quaternion(\n                np.array([q.x, q.y, q.z, q.w]))\n            self.T_w_init[:3, 3] = np.array([t.x, t.y, t.z])\n\n            self.got_first_pose = True\n\n        # Transform the DVS pose into the reference coordinate system\n        # defined by the first pose\n        t = msg.pose.position\n        t = np.array([t.x, t.y, t.z])\n        q = msg.pose.orientation\n        q = np.array([q.x, q.y, q.z, q.w])\n        T_w_c = transformations.matrix_from_quaternion(q)\n        T_w_c[:3, 3] = t\n\n        if self.relative_to_first_pose:\n            # Transform the DVS pose into the reference coordinate system\n            # defined by the first pose\n            T_init_c = np.linalg.inv(self.T_w_init).dot(T_w_c)\n            t = T_init_c[:3, 3]\n            q = transformations.quaternion_from_matrix(T_init_c)\n        else:\n            t = T_w_c[:3, 3]\n            q = transformations.quaternion_from_matrix(T_w_c)\n\n        self.br.sendTransform((t[0], t[1], t[2]),\n                              (q[0], q[1], q[2], q[3]),\n                              msg.header.stamp,\n                              self.tf_frame_name,\n                              self.tf_world_name)\n\n\nif __name__ == '__main__':\n\n    rospy.init_node('pose_to_tf')\n    source_topic_name = rospy.get_param('~source_topic_name', '/dvs/pose')\n    tf_frame_name = rospy.get_param('dvs_bootstrap_frame_id', '/dvs_bootstrap')\n    tf_world_name = rospy.get_param('world_frame_id', '/world')\n    relative_to_first_pose = rospy.get_param('~relative_to_first_pose', True)\n\n    bootstrapper = Boostrapper(\n        tf_frame_name, tf_world_name, relative_to_first_pose)\n\n    rospy.Subscriber(source_topic_name,\n                     PoseStamped,\n                     bootstrapper.handle_dvs_pose)\n\n    rospy.spin()\n"
  },
  {
    "path": "dvs_mapping/CMakeLists.txt",
    "content": "project(dvs_mapping)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\nSET(CMAKE_BUILD_TYPE RelWithDebInfo) # Release, RelWithDebInfo\nADD_DEFINITIONS(\n    -std=c++11\n    -fopenmp\n    -w\n    -Wfatal-errors\n)\n\n################################################################################\n\nset(HEADERS\n  include/dvs_depth_from_defocus/depth_defocus_node.hpp\n  include/dvs_depth_from_defocus/depth_vector.hpp\n  include/dvs_depth_from_defocus/dvs_mapping_nodelet.h\n)\n\nset(SOURCES\n  src/depth_defocus_node.cpp\n)\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n# Executables\n################################################################################\n\ncs_add_executable(dvs_mapping_ros src/dvs_mapping_ros.cpp)\ntarget_link_libraries(dvs_mapping_ros ${PROJECT_NAME})\n\n\ncs_add_library(dvs_mapping_nodelet src/dvs_mapping_nodelet.cpp)\ntarget_link_libraries(dvs_mapping_nodelet ${PROJECT_NAME})\n\n################################################################################\n# Tests\n\ncatkin_add_gtest(${PROJECT_NAME}_tests\n  test/test_median_filter\n  test/test_depth_vector\n)\ntarget_link_libraries(${PROJECT_NAME}_tests ${PROJECT_NAME})\n\n################################################################################\ncs_install()\ncs_export()\n\n"
  },
  {
    "path": "dvs_mapping/dvs_mapping_nodelet.xml",
    "content": "<library path=\"libdvs_mapping_nodelet\">\n  <class name=\"dvs_mapping/DvsMappingNodelet\"\n         type=\"depth_from_defocus::DvsMappingNodelet\"\n         base_class_type=\"nodelet::Nodelet\">\n    <description> \n      A nodelet wrapper for EVO tracker.\n    </description>\n  </class>\n</library>\n"
  },
  {
    "path": "dvs_mapping/include/dvs_depth_from_defocus/depth_defocus_node.hpp",
    "content": "#pragma once\n\n#include <geometry_msgs/PoseStamped.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <image_transport/image_transport.h>\n#include <pcl/point_types.h>\n#include <pcl_ros/point_cloud.h>\n#include <ros/ros.h>\n#include <sensor_msgs/CameraInfo.h>\n#include <std_msgs/Bool.h>\n#include <std_msgs/String.h>\n#include <tf/tf.h>\n#include <tf/tfMessage.h>\n#include <tf/transform_datatypes.h>\n#include <tf_conversions/tf_eigen.h>\n\n#include <boost/multi_array.hpp>\n#include <dvs_depth_from_defocus/depth_vector.hpp>\n\n#include \"dvs_msgs/Event.h\"\n#include \"dvs_msgs/EventArray.h\"\n#include \"evo_utils/camera.hpp\"\n#include \"evo_utils/geometry.hpp\"\n\n// #define MAPPING_PERF  ///< to easily measure code for time of execution\n\nnamespace depth_from_defocus {\n\ntypedef pcl::PointXYZI PointType;\ntypedef pcl::PointCloud<PointType> PointCloud;\ntypedef float Vote;\n\n/**\n * State of the mapping algorithm, which define the rensponse to remote_key\n * commands\n *\n * IDLE:\n * \"reset\", \"enable_map_expansion\" or \"bootstrap\" -> state transition to MAPPING\n * Other commands are ignored\n *\n * MAPPING: listening to incoming events and mapping them\n * \"update\" -> updates and publishes the map, and clear event queue\n * @see resetVoxelGrid, processEventQueue, synthesizeAndPublishDepth,\n * publishGlobalMap and clearEventQueue\n * \"reset\" -> cleans map and reset the mapping thread\n * @see resetMapper\n * \"disable_map_expansion\" -> state transition to IDLE (no more map updates) and\n * resets map\n * @see resetMapper\n *\n * This is implemented through the remote key callback @see remoteKeyCallback\n */\nenum MapperState { IDLE, MAPPING };\n\n/**\n * Mapping node\n */\nclass DepthFromDefocusNode {\n   public:\n    /**\n     * Constructor of the DepthFromDefocusNode\n     *\n     * Load parameters and setup the voxel grid, precomputing useful values\n     */\n    DepthFromDefocusNode(const ros::NodeHandle &nh, const ros::NodeHandle &pnh,\n                         const image_geometry::PinholeCameraModel &cam);\n\n    /**\n     * Publishes the final voxel grid, the depth map and the global map\n     */\n    ~DepthFromDefocusNode();\n\n    /**\n     * Processes incoming events\n     *\n     * Store events in the event queue and set first pose to origin, timestamped\n     * as the first event arrived\n     *\n     * @param event_array Events array to process and store\n     */\n    void processEventArray(const dvs_msgs::EventArray::ConstPtr &event_array);\n\n    /**\n     * For each transform published, mark the last event for which the pose\n     * is known (newest_tracked_event_)\n     *\n     *     ROS params:\n     *         dvs_frame_id) frame id to consider after the bootstrapping\n     *         dvs_bootstrap_frame_id) frame id to consider during bootstrapping\n     *         world_frame_id) world frame id to consider\n     *         auto_trigger) whether to automatically trigger the first map\n     *             update, when enough events to create a keyframe are collected\n     *\n     * @param tf_msg Transform message\n     */\n    void tfCallback(const tf::tfMessage::ConstPtr &tf_msg);\n\n    /**\n     * Callback to remote_key commands\n     *\n     * Implements the state machine described in @see MapperState\n     *\n     * @param msg String message representing the command received\n     */\n    void remoteKeyCallback(const std_msgs::String::ConstPtr &msg);\n\n    /**\n     * Update camera info on callback\n     *\n     *\n     * topic: \"camera_info\"\n     *\n     * @param msg Camera info msg\n     */\n    void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr &msg);\n\n    /**\n     * Switch from bootstrap_frame_id_ to frame_id_\n     *\n     *     ROS params:\n     *          dvs_frame_id) frame id to consider after the bootstrapping\n     *          dvs_bootstrap_frame_id) frame id to consider during\n     *              bootstrapping\n     *          world_frame_id) world frame id to consider\n     *\n     * @param msg Message telling whether to switch\n     */\n    void copilotCallback(const std_msgs::Bool &msg);\n\n   private:\n    /**\n     * Clear events, transformations, point clouds and voxel grid\n     */\n    void resetMapper();\n\n    /**\n     * Backproject events from the frame centers and vote the intersecting voxel\n     * grids\n     *\n     * The events are evenly divided between the frame centers, and\n     * backprojected to intersect the voxel grid The voxel are then voted\n     * accordingly to @see voteForCellBilinear.\n     *\n     * @param events collected events\n     * @param centers frame centers from which the events have been collected\n     */\n    void projectEventsToVoxelGrid(const std::vector<Eigen::Vector4f> &events,\n                                  const std::vector<Eigen::Vector3f> &centers);\n\n    /**\n     * Clear voxel grid and set current_event_ to mark from which event in the\n     * history of events the algorithm has to start to build a new map voxel\n     * grid\n     */\n    void resetVoxelGrid();\n\n    /**\n     * Process event queue and update voxel grid\n     *\n     * When there is a minimum number of events to process (min_batch_size_),\n     * process events in event queue and update the voxel grid. Events are\n     * eventually skipped if reset is true (skip_batches_reset_,\n     * skip_batches_normal_). If not, the number of batches to skip is\n     * also adapted so that the events rate is smaller than max_event_rate_.\n     *\n     * The events are grouped in batches, and the position\n     * of the camera for that batch is assumed to be the position at the middle\n     * of the timespan of the batch. These poses are the centers of the\n     * projectEventsToVoxelGrid.\n     *\n     * For each of these batches, the events are projected (homography) to the\n     * reference frame and the voxel grid is updated accordingly.\n     *\n     *     ROS params:\n     *         skip_batches) amount of batches of events to skip during\n     *              optimization\n     *         skip_batches_for_reset) same as skip_batches when reset = true\n     *         max_event_rate) max # of events, eventually drops events to\n     *              ensure this\n     *         frame_size) number of events to aggregate when computing new map\n     *         min_batch_size) minimum number of new events required for a map\n     *              update\n     *\n     * @param reset Whether the \"reset\" command has been sent\n     *\n     * @see projectEventsToVoxelGrid\n     */\n    void processEventQueue(bool reset = false);\n\n    /**\n     * Retrieve the pose of the camera frame with respect to the world frame at\n     * time t\n     *\n     * @param t time at which the pose has to be retrieved\n     * @param T [output] pose at time t\n     *\n     * @return whether it is possible to convert from world frame to camera\n     * frame\n     */\n    bool getPoseAt(const ros::Time &t, evo_utils::geometry::Transformation &T);\n\n    /**\n     * Load params related to the voxel grid and allocate memory for it\n     *\n     *     ROS params:\n     *         min_depth) voxel grid minimum depth\n     *         max_depth) voxel grid maximum depth\n     *         num_depth_cells) number of depth cells\n     *         adaptive_threshold_kernel_size) size of the adaptive threshold\n     *             filter\n     *         size adaptive_threshold_c) constant offset of the adaptive\n     *             thresholding\n     */\n    void setupVoxelGrid();\n\n    /**\n     * Increase the vote counter of a specific cell in the vote grid\n     *\n     * The coordinates x_f and y_f are converted to the nearest discrete cell.\n     * If the cell exists (not out of bound), the vote counter at that cell is\n     * increased. If the cell does not exist, nothing happens.\n     *\n     * @param x_f location of the vote in the continuous horizontal axis\n     * @param y_f location of the vote in the continuour vertical axis\n     * @param grid the grid in which to increase the vote\n     */\n    void voteForCell(const float x_f, const float y_f, Vote *grid) {\n        const int x = (int)(x_f + 0.5), y = (int)(y_f + 0.5);\n\n        if (x >= 0 && x < virtual_width_ && y >= 0 && y < virtual_height_) {\n            grid[x + y * virtual_width_] += 1.f;\n        }\n    }\n\n    /**\n     * Increase the vote counter in the vote grid acoordingly to a bilinear\n     * interpolation of the continuous coordinates\n     *\n     * The coordinates are used to increase proportionally all the four\n     * discrete locations near to the continuous space location, dividing the\n     * single vote based on their distance from it.\n     * If at least one of these four cells do not exist, the vote is not\n     * incremented.\n     *\n     * @param x_f location of the vote in the continuous horizontal axis\n     * @param y_f location of the vote in the continuour vertical axis\n     * @param grid the grid in which to increase the votes\n     */\n    void voteForCellBilinear(const float x_f, const float y_f, Vote *grid) {\n        if (x_f >= 0.f && y_f >= 0.f) {\n            const int x = x_f, y = y_f;\n            if (x + 1 < virtual_width_ && y + 1 < virtual_height_) {\n                Vote *g = grid + x + y * virtual_width_;\n                const float fx = x_f - x, fy = y_f - y, fx1 = 1.f - fx,\n                            fy1 = 1.f - fy;\n\n                g[0] += fx1 * fy1;\n                g[1] += fx * fy1;\n                g[virtual_width_] += fx1 * fy;\n                g[virtual_width_ + 1] += fx * fy;\n            }\n        }\n    }\n\n    /**\n     * Computes and stores the rectification of each pixels of the cam_, to\n     * speed up image rectification in consecutive stages\n     */\n    void precomputeRectifiedPoints();\n\n    /**\n     * Calculate depth and publish it\n     *\n     * @see synthesizePointCloudFromVoxelGrid, accumulatePointcloud,\n     * publishVoxelGrid, publishDepthmap\n     */\n    void synthesizeAndPublishDepth();\n\n    /**\n     * Build point cloud from voxel grid maximizing the desired focus measure\n     *\n     * Calls the method defined by type_focus_measure_, @see\n     * synthesizePointCloudFromVoxelGridGradMag,\n     * synthesizePointCloudFromVoxelGridContrast,\n     * synthesizePointCloudFromVoxelGridLinf.\n     * The confidence map is normalized (min/max), then it is adaptively\n     * thresholded and finally it is median filtered.\n     *\n     *     ROS params:\n     *         type_focus_measure) type of focus measure to use.\n     *\n     * @param depth [output] depth map\n     * @param confidence [output] confidence of the depth\n     */\n    void synthesizePointCloudFromVoxelGrid(cv::Mat &depth, cv::Mat &confidence);\n\n    /**\n     * Build point cloud from voxel grid using Linf norm on optical ray\n     *\n     * For each pixel, the depth is chosen as the maximum along the optimal ray\n     * of the number of votes in the DSI. The confidence is represented by the\n     * number of votes.\n     *\n     * @param depth_cell_indices [output] discrete cell index in the depth axis\n     * corresponding to the maxima\n     * @param confidence [output] number of votes in the voxel where the maxima\n     * is found\n     */\n    void synthesizePointCloudFromVoxelGridLinf(cv::Mat &depth_cell_indices,\n                                               cv::Mat &confidence);\n\n    /**\n     * Build point cloud from voxel grid maximizing the contrast on the depth\n     * plane\n     *\n     * For each pixel, the depth is chosen as the maximum along the optimal ray\n     * of the gradient magnitude in the DSI. The confidence is represented by\n     * the magnitude of the gradient. The 2d gradient is calculated for each\n     * depth plane, and the idea is to maximize this focus measure.\n     *\n     *     ROS params:\n     *         half_patchsize) size of the gaussian filter to estimate contrast\n     *\n     * @param depth_cell_indices [output] discrete cell index in the depth axis\n     * corresponding to the maxima\n     * @param confidence [output] contrast value in the voxel where the maxima\n     * is found\n     */\n    void synthesizePointCloudFromVoxelGridContrast(cv::Mat &depth_cell_indices,\n                                                   cv::Mat &confidence);\n\n    /**\n     * Build point cloud from voxel grid maximizing the gradient magnitude on\n     * the depth plane\n     *\n     * For each pixel, the depth is chosen as the maximum along the optimal ray\n     * of the gradient magnitude in the DSI. The confidence is represented by\n     * the magnitude of the gradient. The 2d gradient is calculated for each\n     * depth plane, and the idea is to maximize this focus measure.\n     *\n     *     ROS params:\n     *         half_patchsize) size of the sobel filter to compute algebraic\n     *              derivatives\n     *\n     * @param depth_cell_indices [output] discrete cell index in the depth axis\n     * corresponding to the maxima\n     * @param confidence [output] magnitude gradient in the voxel where the\n     * maxima is found\n     */\n    void synthesizePointCloudFromVoxelGridGradMag(cv::Mat &depth_cell_indices,\n                                                  cv::Mat &confidence);\n\n    /**\n     * Builds point cloud from depth map and pose, and publish it\n     *\n     * Each pixel not masked out from mask is backprojected at the distance\n     * provided in depth. The point cloud is filtered with a radius filter (each\n     * point is not considered an outlier iff it is at a distance smaller than\n     * radius_search_ from min_num_neighbors_ other points).\n     * Topic: \"pointcloud\"\n     *\n     *     ROS params:\n     *         radius_search) radius filter radius size\n     *         min_num_neighbors) minimum number of neighbors for radius filter\n     *\n     * @param depth depth map associating each pixel to a depth value\n     * @param mask pixels to be considered\n     * @param R_world_ref orientation\n     * @param t_world_ref position\n     * @param timestamp timestamp of the message to publish\n     */\n    void accumulatePointcloud(const cv::Mat &depth, const cv::Mat &mask,\n                              const cv::Mat &confidence,\n                              const Eigen::Matrix3d R_world_ref,\n                              const Eigen::Vector3d t_world_ref,\n                              const ros::Time &timestamp);\n\n    /**\n     * Publishes voxel grid relative to pose\n     *\n     * Topic: \"voxel_grid\"\n     *\n     * @param T_w_ref camera pose\n     */\n    void publishVoxelGrid(\n        const evo_utils::geometry::Transformation &T_w_ref) const;\n\n    /**\n     * Publishes depth map\n     *\n     * Normalizes (minmax) depth map and apply color map before publishing it\n     *\n     * Remark: it publishes only if there are subscribers\n     *\n     * Topic: /dvs_mapping/depthmap\n     *\n     * @param depth Depth associated to each pixel\n     * @param mask Pixels to be considered\n     */\n    void publishDepthmap(const cv::Mat &depth, const cv::Mat &mask);\n\n    /**\n     * Publishes global map, after updating it (pc_global_) adding the local\n     * point cloud (pc_) under the \"pointcloud_global\" topic.\n     *\n     * Remark: it publishes (and updates the pc_global_ point cloud) only if\n     * there is at least one subscriber to the topic \"pointcloud_global\".\n     *\n     *     ROS params:\n     *         voxel_filter_leaf_size) voxel filter granularity\n     */\n    void publishGlobalMap();\n\n    /**\n     * Removes events to keep an history (already processed) of events at most\n     * long DEPTH_DEFOCUS_EVENT_HISTORY_SIZE.\n     */\n    void clearEventQueue();\n\n    /**\n     * Setup operations to be performed after dvs_cam_ has been loaded\n     *\n     *     ROS params:\n     *          fov_virtual_camera_deg) fov virtual camera (voxel grid)\n     *          virtual_width) voxel grid width\n     *          virtual_height) voxel grid height\n     */\n    void postCameraLoaded();\n\n    /**\n     * Retrieves vote counter of a specific (x,y,z) location of the grid\n     *\n     * This is a util function used for clarity\n     *\n     * @param grid Grid containing the vote counters\n     * @param x x coordinate\n     * @param y y coordinate\n     * @param z z coordinate\n     */\n    inline const Vote &voxelGridAt(const std::vector<Vote> &grid, int x, int y,\n                                   size_t z) const {\n        return grid[x + virtual_width_ * (y + z * virtual_height_)];\n    }\n\n    /**\n     * Retrieve vote counter of a specific (x,y,z) location of the grid\n     *\n     * This is a util function used for clarity\n     *\n     * @param grid Grid containing the vote counters\n     * @param x x coordinate\n     * @param y y coordinate\n     * @param z z coordinate\n     */\n    inline Vote &voxelGridAt(std::vector<Vote> &grid, int x, int y, size_t z) {\n        return grid[x + virtual_width_ * (y + z * virtual_height_)];\n    }\n\n    /**\n     * Performs map update\n     *\n     * @see resetVoxelGrid, processEventQueue, synthesizeAndPublishDepth,\n     * publishGlobalMap\n     */\n    void update();\n\n    /** ROS */\n    ros::NodeHandle nh_;\n    ros::NodeHandle pnh_;\n    image_transport::ImageTransport it_;\n\n    ros::Publisher pub_pc_;          ///< @see accumulatePointcloud;\n                                     ///< topic: \"pointcloud\"\n    ros::Publisher pub_pc_global_;   ///< @see publishGlobalMap;\n                                     ///< topic: \"pointcloud_global\"\n    ros::Publisher pub_voxel_grid_;  ///< @see publishVoxelGrid callback;\n                                     ///< topic: \"voxel_grid\"\n\n    image_transport::Publisher\n        pub_depth_map_;  ///< @see publishDepthMap\n                         ///< topic: /dvs_mapping/depthmap\n\n    ros::Subscriber event_sub_;        ///< @see processEventArray\n                                       ///< topic: \"events\"\n    ros::Subscriber tf_sub_;           ///< @see tfCallback\n                                       ///< topic: \"tf\"\n    ros::Subscriber remote_key_;       ///< @see remoteKeyCallback\n                                       ///< topic \"remote_key\"\n    ros::Subscriber camera_info_sub_;  ///< @see cameraInfoCallback\n    ros::Subscriber copilot_sub_;      ///< @see copilotCallback\n\n    MapperState state_;  ///< state of the mapper, @see MapperState\n\n    std::string world_frame_id_;  ///< The root frame id of the tf system\n    std::string frame_id_;        ///< currently used frame id\n    std::string\n        regular_frame_id_;  ///< frame id to use during regular operation\n    std::string bootstrap_frame_id_;  ///< frame id to use during bootstrapping\n    std::shared_ptr<tf::Transformer> tf_;\n\n    evo_utils::geometry::Transformation T_ref_w_;  ///< camera pose\n    /** Camera variables */\n    image_geometry::PinholeCameraModel\n        dvs_cam_;  ///< dvs sensor model retrieved from configuration file\n    int width_;    ///< camera width\n    int height_;   ///< camera height\n\n    evo_utils::camera::PinholeCamera\n        virtual_cam_;  ///< To extend the functionalities of PinholeCameraModel\n    int virtual_width_;   ///< virtual width\n    int virtual_height_;  ///< virtual height\n\n    Eigen::Matrix3f K_;  ///< intrinsic matrix\n\n    // Ref voxel grid parameters\n    /** Voxel grid variables */\n    std::vector<Vote> ref_voxel_grid_;  ///< Voxel grid vote counters\n    cv::Mat confidence_mask_;           ///< Confidence associated to each voxel\n    float voxel_filter_leaf_size_;      ///< Size of the cubic voxel;\n                                        ///< ROS param: \"voxel_filter_leaf_size\"\n    size_t\n        events_to_recreate_kf_;  ///< Maximum number of events considered to\n                                 ///< center the voxel grid at a specific\n                                 ///< pose. ROS param: \"events_to_recreate_kf\"\n                                 ///< @see resetVoxelGrid\n    int type_focus_measure_;     ///< @see synthesizePointCloudFromVoxelGrid\n\n    Eigen::Matrix2Xf\n        precomputed_rectified_points_;  ///< @see precomputeRectifiedPoints\n\n    /** Process events */\n    size_t current_event_;         ///< next event to process\n                                   ///< @see processEventQueue\n    size_t newest_tracked_event_;  ///< first event for which the position is\n                                   ///< unknown, @see tfCallback\n    size_t last_kf_update_event_;  ///< last event at which the map has been\n                                   ///< updated, @see remoteKeyCallback\n    std::deque<dvs_msgs::Event> event_queue_;\n\n    PointCloud::Ptr pc_;         ///< Local map\n    PointCloud::Ptr pc_global_;  ///< Global map, @see publishGlobalMap\n\n    /** Depth space */\n    evo_utils::geometry::Depth min_depth_;  ///< Lower bound in depth range\n                                            ///< ROS param: \"min_depth\"\n    evo_utils::geometry::Depth max_depth_;  ///< Upper bound in depth range\n                                            ///< ROS param: \"max_depth\"\n    size_t num_depth_cells_;                ///< Number of discrete depth cells\n                                            ///< ROS param: \"num_depth_cells\"\n    InverseDepthVector\n        depths_vec_;  ///< precomputed vector of num_depth_cells_ inverse depths\n    //  LinearDepthVector depths_vec_;\n    std::vector<float> raw_depths_vec_;\n\n    float radius_search_;     ///< radius filter: patch radius;\n                              ///< ROS param: \"radius_search\"\n    int min_num_neighbors_;   ///< radius filter: min number of neighbors within\n                              ///< patch to be considered inlier;\n                              ///< ROS param: \"min_num_neighbors\"\n    int median_filter_size_;  ///< size of the median filter @see\n                              ///< evo_utils::camera::huangMedianFilter;\n                              ///< ROS param: \"median_filter_size\"\n\n    int adaptive_threshold_kernel_size_;  ///< size of the gaussian kernel used\n                                          ///< to compute the adaptive threshold\n                                          ///< ROS param:\n                                          ///< \"adaptive_threshold_kernel_size\"\n    int adaptive_threshold_c_;  ///< adaptive threshold constant, sum to the\n                                ///< weighted average of the neighbors pixel\n                                ///< values\n                                ///< ROS param: \"adaptive_threshold_c\"\n\n    bool auto_trigger_;  ///< whether to start on first pose received\n};\n\n}  // namespace depth_from_defocus\n"
  },
  {
    "path": "dvs_mapping/include/dvs_depth_from_defocus/depth_vector.hpp",
    "content": "#include \"evo_utils/geometry.hpp\"\n\nnamespace depth_from_defocus {\n\n// Stores a set of data associations index <-> depth\n// Used to abstract how the depth is sampled\n\n// Uses the \"Curiously Recursive Template Pattern\" to allow static polymorphism\n// for performance (since these functions will be called very often)\n\n// TODO: scope the actual benefit of using this pattern compared to inheritance\n// (no polymorphism needed..)\n\ntemplate <class DerivedDepthVector>\n/**\n * Stores a set of data associations index <-> depth\n * Used to abstract how the depth is sampled\n */\nclass DepthVector {\n   public:\n    DerivedDepthVector& derived() {\n        return static_cast<DerivedDepthVector&>(*this);\n    }\n\n    DepthVector() {}\n\n    /**\n     * Create depth vector\n     *\n     * @param min_depth Lower bound on depth range\n     * @param max_depth Upper bound on depth range\n     * @param num_depth_cells Number of descrete cells in the depth axis\n     *\n     * @pre min_depth > 0\n     * @pre max_depth > 0\n     * @pre max_depth > min_depth\n     * @pre num_depth_cells >= 1\n     */\n    DepthVector(float min_depth, float max_depth, size_t num_depth_cells) {\n        CHECK_GT(min_depth, 0.0);\n        CHECK_GT(max_depth, 0.0);\n        CHECK_GE(num_depth_cells, 1u);\n\n        num_depth_cells_ = num_depth_cells;\n        min_depth_ = min_depth;\n        max_depth_ = max_depth;\n        if (min_depth_ > max_depth_) std::swap(min_depth_, max_depth_);\n\n        derived().init();\n    }\n\n    /**\n     * Number of discrete cells in the depth axis\n     *\n     * @return number of descrete cells in the depth axis\n     */\n    inline size_t size() const { return vec_.size(); }\n\n    /**\n     * DSI util function: from cell index to depth\n     *\n     * The depth axis is evenly divided in DepthVector::Size cells, and\n     * ranges within DepthVector::min_depth_ and DepthVector::max_depth_. The\n     * conversion is a linear interpolation.\n     *\n     * @param i Cell index in the discrete depth axis\n     */\n    float cellIndexToDepth(size_t i) { return derived().cellIndexToDepth(i); }\n\n    /**\n     * DSI util function: from depth to cell index\n     *\n     * The depth axis is evenly divided in DepthVector::Size cells, and\n     * ranges within DepthVector::min_depth_ and DepthVector::max_depth_. The\n     * conversion is rounding to the closest cell index.\n     *\n     * @param depth Depth to convert\n     */\n    size_t depthToCellIndex(float depth) {\n        return derived().depthToCellIndex(depth);\n    }\n\n    /**\n     * DSI util function: from depth to cell value\n     *\n     * @param depth depth depth to convert\n     *\n     * @see depthToCellIndex\n     */\n    float depthToCell(float depth) { return derived().depthToCell(depth); }\n\n    /**\n     * Get the DepthVector container\n     *\n     * @return vector s.t. v[i] is the depth value for the i-th cell\n     */\n    std::vector<float> getDepthVector() {\n        std::vector<float> out;\n        for (size_t i = 0; i < num_depth_cells_; ++i) {\n            out.push_back(cellIndexToDepth(i));\n        }\n        return out;\n    }\n\n   protected:\n    std::vector<float> vec_;\n    size_t num_depth_cells_;\n    float min_depth_;\n    float max_depth_;\n    float depth_to_cell_idx_multiplier_;\n};\n\n/**\n * DepthVector dealing with linear depth axis\n */\nclass LinearDepthVector : public DepthVector<LinearDepthVector> {\n   public:\n    LinearDepthVector() : DepthVector() {}\n\n    LinearDepthVector(float min_depth, float max_depth, size_t num_depth_cells)\n        : DepthVector(min_depth, max_depth, num_depth_cells) {}\n\n    void init() {\n        depth_to_cell_idx_multiplier_ =\n            (float)((num_depth_cells_ - 1) / (max_depth_ - min_depth_));\n\n        vec_.resize(num_depth_cells_);\n        for (size_t i = 0; i < num_depth_cells_; ++i) {\n            vec_[i] = min_depth_ + (float)i / depth_to_cell_idx_multiplier_;\n        }\n    }\n\n    float cellIndexToDepth(size_t i) { return vec_[i]; }\n\n    size_t depthToCellIndex(float depth) {\n        return (size_t)((depth - min_depth_) * depth_to_cell_idx_multiplier_ +\n                        0.5);\n    }\n\n    float depthToCell(float depth) {\n        return (depth - min_depth_) * depth_to_cell_idx_multiplier_;\n    }\n};\n\n/**\n * DepthVector dealing with inverse depth (1/d) axis\n */\nclass InverseDepthVector : public DepthVector<InverseDepthVector> {\n   public:\n    InverseDepthVector() : DepthVector() {}\n\n    InverseDepthVector(float min_depth, float max_depth, size_t num_depth_cells)\n        : DepthVector(min_depth, max_depth, num_depth_cells) {}\n\n    void init() {\n        inv_min_depth_ = 1.f / min_depth_;\n        inv_max_depth_ = 1.f / max_depth_;\n        depth_to_cell_idx_multiplier_ =\n            (float)((num_depth_cells_ - 1) / (inv_min_depth_ - inv_max_depth_));\n\n        vec_.resize(num_depth_cells_);\n        for (size_t i = 0; i < num_depth_cells_; ++i) {\n            vec_[i] = inv_max_depth_ + (float)i / depth_to_cell_idx_multiplier_;\n        }\n    }\n\n    float cellIndexToDepth(size_t i) { return 1.f / vec_[i]; }\n\n    size_t depthToCellIndex(float depth) {\n        return (size_t)((1.f / depth - inv_max_depth_) *\n                            depth_to_cell_idx_multiplier_ +\n                        0.5);\n    }\n\n    float depthToCell(float depth) {\n        return (1.f / depth - inv_max_depth_) * depth_to_cell_idx_multiplier_;\n    }\n\n   private:\n    float inv_min_depth_;\n    float inv_max_depth_;\n};\n\n}  // namespace depth_from_defocus\n"
  },
  {
    "path": "dvs_mapping/include/dvs_depth_from_defocus/dvs_mapping_nodelet.h",
    "content": "#pragma once\n\n#include <nodelet/nodelet.h>\n\n#include \"dvs_depth_from_defocus/depth_defocus_node.hpp\"\n\nnamespace depth_from_defocus {\n\nclass DvsMappingNodelet : public nodelet::Nodelet {\npublic:\n  virtual void onInit();\n\nprivate:\n  DepthFromDefocusNode* node_;\n};\n\n\n}\n"
  },
  {
    "path": "dvs_mapping/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>dvs_mapping</name>\n  <version>0.0.1</version>\n  <description>\n    Implementation of \"Event-based Multi-View-Stereo\"\n  </description>\n  <author>Henri Rebecq</author>\n  <license>tbd</license>\n  <maintainer email=\"rebecq@ifi.uzh.ch\">Henri Rebecq</maintainer>\n  <maintainer email=\"aterpin@ethz.ch\">Antonio Terpin</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>dvs_msgs</depend>\n  <depend>nodelet</depend>\n  <depend>glog_catkin</depend>\n  <depend>gflags_catkin</depend>\n  <depend>minkindr</depend>\n  <depend>minkindr_conversions</depend>\n  <depend>cv_bridge</depend>\n  <depend>image_geometry</depend>\n  <depend>image_transport</depend>\n  <depend>camera_info_manager</depend>\n  <depend>pcl_ros</depend>\n  <depend>tf_conversions</depend>\n  <depend>dvs_slam_msgs</depend>\n  <depend>evo_utils</depend>\n\n  <export>\n    <nodelet plugin=\"${prefix}/dvs_mapping_nodelet.xml\"/>\n  </export>\n\n  </package>\n"
  },
  {
    "path": "dvs_mapping/src/depth_defocus_node.cpp",
    "content": "#include \"dvs_depth_from_defocus/depth_defocus_node.hpp\"\n\n#include <pcl/filters/radius_outlier_removal.h>\n#include <pcl/filters/voxel_grid.h>\n\n//#define DEBUG_SHOW_FAKE_FRAMES\n// #define DEBUG_SHOW_FILTERED_DEPTHMAP\n\n#include <cv_bridge/cv_bridge.h>\n#include <dvs_slam_msgs/VoxelGrid.h>\n#include <minkindr_conversions/kindr_tf.h>\n#include <tf/transform_listener.h>\n\n#include <Eigen/Geometry>\n#include <opencv2/highgui/highgui.hpp>\n#ifdef MAPPING_PERF\n#include \"evo_utils/main.hpp\"\n#endif\n\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace depth_from_defocus {\n\nusing namespace evo_utils::geometry;\nusing namespace evo_utils::camera;\n\nvoid DepthFromDefocusNode::cameraInfoCallback(\n    const sensor_msgs::CameraInfo::ConstPtr& msg) {\n    static bool got_camera_info = false;\n\n    if (!got_camera_info) {\n        dvs_cam_.fromCameraInfo(*msg);\n\n        postCameraLoaded();\n\n        // Currently, done only once\n        got_camera_info = true;\n    }\n}\n\nvoid DepthFromDefocusNode::postCameraLoaded() {\n    cv::Size full_resolution = dvs_cam_.fullResolution();\n    width_ = full_resolution.width;\n    height_ = full_resolution.height;\n\n    const float fov_virtual_cam_deg =\n        rpg_common_ros::param<float>(nh_, \"fov_virtual_camera_deg\", 0.0);\n\n    virtual_width_ = rpg_common_ros::param<int>(nh_, \"virtual_width\", width_);\n\n    virtual_height_ =\n        rpg_common_ros::param<int>(nh_, \"virtual_height\", height_);\n\n    float f_virtual_cam_;\n\n    if (fov_virtual_cam_deg == 0.) {\n        f_virtual_cam_ = dvs_cam_.fx();\n    } else {\n        const float fov_virtual_cam_rad = fov_virtual_cam_deg * CV_PI / 180.0;\n        f_virtual_cam_ =\n            0.5 * (float)virtual_width_ / std::tan(0.5 * fov_virtual_cam_rad);\n    }\n    LOG(INFO) << \"Focal length of virtual camera: \" << f_virtual_cam_\n              << \" pixels\";\n    virtual_cam_ = PinholeCamera(\n        virtual_width_, virtual_height_, f_virtual_cam_, f_virtual_cam_,\n        0.5 * (float)virtual_width_, 0.5 * (float)virtual_height_);\n\n    K_ << dvs_cam_.fx(), 0.f, dvs_cam_.cx(), 0.f, dvs_cam_.fy(), dvs_cam_.cy(),\n        0.f, 0.f, 1.f;\n\n    precomputeRectifiedPoints();\n    resetMapper();\n}\n\nDepthFromDefocusNode::DepthFromDefocusNode(\n    const ros::NodeHandle& nh, const ros::NodeHandle& pnh,\n    const image_geometry::PinholeCameraModel& cam)\n    : nh_(nh),\n      pnh_(pnh),\n      it_(nh),\n      state_(IDLE),\n      dvs_cam_(cam),\n      pc_(new PointCloud),\n      pc_global_(new PointCloud) {\n    radius_search_ = rpg_common_ros::param<float>(pnh_, \"radius_search\", 0.05);\n    min_num_neighbors_ =\n        rpg_common_ros::param<int>(pnh_, \"min_num_neighbors\", 3);\n\n    median_filter_size_ =\n        rpg_common_ros::param<int>(pnh_, \"median_filter_size\", 7);\n\n    regular_frame_id_ =\n        rpg_common_ros::param(nh_, \"dvs_frame_id\", std::string(\"dvs\"));\n    bootstrap_frame_id_ =\n        rpg_common_ros::param(nh_, \"dvs_bootstrap_frame_id\", regular_frame_id_);\n    frame_id_ = bootstrap_frame_id_;\n    world_frame_id_ =\n        rpg_common_ros::param<std::string>(nh_, \"world_frame_id\", \"world\");\n\n    tf_ = std::make_shared<tf::Transformer>(true, ros::Duration(10000.0));\n\n    tf_sub_ = nh_.subscribe(\"tf\", 0, &DepthFromDefocusNode::tfCallback, this);\n    event_sub_ = nh_.subscribe(\"events\", 0,\n                               &DepthFromDefocusNode::processEventArray, this);\n    remote_key_ = nh_.subscribe(\"remote_key\", 0,\n                                &DepthFromDefocusNode::remoteKeyCallback, this);\n    copilot_sub_ = nh_.subscribe(\"/evo/copilot_remote\", 0,\n                                 &DepthFromDefocusNode::copilotCallback, this);\n\n    pub_pc_ = pnh_.advertise<PointCloud>(\"pointcloud\", 1);\n    pc_->header.frame_id = world_frame_id_;\n\n    pub_pc_global_ = pnh_.advertise<PointCloud>(\"pointcloud_global\", 1);\n    pc_global_->header.frame_id = world_frame_id_;\n\n    pub_voxel_grid_ = pnh_.advertise<dvs_slam_msgs::VoxelGrid>(\"voxel_grid\", 1);\n\n    events_to_recreate_kf_ =\n        rpg_common_ros::param<int>(pnh_, \"events_to_recreate_kf\", 2000000);\n\n    camera_info_sub_ = nh_.subscribe(\n        \"camera_info\", 1, &DepthFromDefocusNode::cameraInfoCallback, this);\n\n    postCameraLoaded();\n\n    auto_trigger_ = rpg_common_ros::param<bool>(pnh_, \"auto_trigger\", false);\n    if (auto_trigger_) state_ = MAPPING;\n}\n\nvoid DepthFromDefocusNode::copilotCallback(const std_msgs::Bool& msg) {\n    frame_id_ = (msg.data) ? regular_frame_id_ : bootstrap_frame_id_;\n    LOG(INFO) << \"Mapping switched copilot to \" << frame_id_;\n}\n\nvoid DepthFromDefocusNode::tfCallback(const tf::tfMessage::ConstPtr& tf_msg) {\n    if (state_ == IDLE /* && !auto_trigger_*/) {\n        return;\n    }\n\n    for (const geometry_msgs::TransformStamped& transform_stamped_msg :\n         tf_msg->transforms) {\n        tf::StampedTransform t;\n        tf::transformStampedMsgToTF(transform_stamped_msg, t);\n        tf_->setTransform(t);\n\n        // LOG(INFO) << transform_stamped_msg.child_frame_id << \" \" << frame_id_\n        //           << \" \" << world_frame_id_ << \" \"\n        //           << transform_stamped_msg.header.frame_id;\n\n        if (transform_stamped_msg.child_frame_id == frame_id_) {\n            // if (state_ == IDLE && auto_trigger_) {\n            //     state_ = MAPPING;\n            //     return;  // there are no events collected yet\n            // }\n\n            while (newest_tracked_event_ < event_queue_.size() &&\n                   event_queue_[newest_tracked_event_ + 1].ts <\n                       transform_stamped_msg.header.stamp)\n                ++newest_tracked_event_;\n\n            // LOG(INFO) << newest_tracked_event_ << \" \" <<\n            // events_to_recreate_kf_\n            //           << \" \" << auto_trigger_;\n\n            if (frame_id_ == bootstrap_frame_id_) {\n                // keep bootstrap frame also as regular frame for future use\n                t.child_frame_id_ = regular_frame_id_;\n                tf_->setTransform(t);\n            }\n\n            if (auto_trigger_ && (newest_tracked_event_ - current_event_ >\n                                  events_to_recreate_kf_)) {\n                update();\n                auto_trigger_ = false;\n                frame_id_ = regular_frame_id_;\n            }\n        }\n    }\n}\n\nvoid DepthFromDefocusNode::update() {\n    resetVoxelGrid();\n    processEventQueue(true);\n    synthesizeAndPublishDepth();\n    publishGlobalMap();\n\n    last_kf_update_event_ = current_event_;\n    clearEventQueue();\n}\n\nvoid DepthFromDefocusNode::resetMapper() {\n    event_queue_.clear();\n    tf_->clear();\n    pc_->clear();\n    pc_global_->clear();\n    setupVoxelGrid();\n    current_event_ = newest_tracked_event_ = last_kf_update_event_ = 0;\n    T_ref_w_.setIdentity();\n}\n\nvoid DepthFromDefocusNode::remoteKeyCallback(\n    const std_msgs::String::ConstPtr& msg) {\n    std::string command_str = msg->data;\n    LOG(INFO) << \"Received command: \" << command_str;\n\n    switch (state_) {\n        case MAPPING:\n            if (command_str == \"update\") {\n#ifdef MAPPING_PERF\n                TIMER_START(t1);\n#endif\n                update();\n#ifdef MAPPING_PERF\n                TIMER_STOP(t1, t2, duration);\n                LOG(INFO) << \"[Map update] comp. time: \" << duration\n                          << \" milliseconds\";\n#endif\n            } else if (command_str == \"reset\") {\n                LOG(INFO) << \"Resetting mapper. Will continue to respond to \"\n                             \"'update' requests\";\n                resetMapper();\n            } else if (command_str == \"disable_map_expansion\") {\n                LOG(INFO) << \"Switching mapper to IDLE mode. Will stop \"\n                             \"treating 'update' requests\";\n                resetMapper();\n                state_ = IDLE;\n            }\n            break;\n\n        case IDLE:\n        default:\n            if (command_str == \"reset\" ||\n                command_str == \"enable_map_expansion\" ||\n                command_str == \"bootstrap\") {\n                state_ = MAPPING;\n                if (command_str == \"bootstrap\") auto_trigger_ = true;\n                LOG(INFO) << \"Swiching to MAPPING mode\";\n            } else if (command_str == \"update\" || command_str == \"switch\") {\n                LOG(INFO) << \"Ignoring command '\" << command_str\n                          << \"' because I am in IDLE mode\";\n            }\n            break;\n    }\n}\n\nvoid DepthFromDefocusNode::processEventQueue(bool reset) {\n    static const size_t skip_batches_normal =\n                            rpg_common_ros::param<int>(pnh_, \"skip_batches\", 0),\n                        skip_batches_reset = rpg_common_ros::param<int>(\n                            pnh_, \"skip_batches_for_reset\", 0),\n                        max_event_rate = rpg_common_ros::param<int>(\n                            pnh_, \"max_event_rate\", 10000000),\n                        frame_size = rpg_common_ros::param<int>(\n                            pnh_, \"frame_size\", 1024),\n                        min_batch_size = rpg_common_ros::param<int>(\n                            pnh_, \"min_batch_size\", 20000);\n\n    // Performance measurement\n    static const size_t perf_interval = 1000000;\n    static size_t events_processed = 0;\n    static double last_ts = event_queue_[current_event_].ts.toSec(),\n                  time_evolved = 0;\n\n    const size_t n_events = newest_tracked_event_ - current_event_;\n\n    if (n_events < min_batch_size) return;\n\n    size_t skip_batches = (reset) ? skip_batches_reset : skip_batches_normal;\n\n    // Adapt skip_batches to max_event_rate\n    const double duration = (event_queue_[newest_tracked_event_].ts -\n                             event_queue_[current_event_].ts)\n                                .toSec();\n    const float event_rate = n_events / duration;\n    if (!reset && event_rate > max_event_rate) {\n        skip_batches = ceil(event_rate / max_event_rate) - 1;\n        //    LOG(WARNING) << \"Adapt skip_batches to: \" << skip_batches;\n    }\n\n    static std::vector<Eigen::Vector4f> events;\n    static std::vector<Eigen::Vector3f> centers;\n    events.clear();\n    centers.clear();\n\n#ifdef MAPPING_PERF\n    TIMER_START(t1);\n#endif\n\n    // Group events by packets events\n    long num_events_processed = 0;\n\n#ifdef DEBUG_SHOW_FAKE_FRAMES\n    cv::Mat integrated_img = cv::Mat::zeros(height_, width_, CV_8U);\n#endif\n\n    while (current_event_ + (skip_batches + 1) * frame_size <\n           newest_tracked_event_) {\n        evo_utils::geometry::Transformation T_w_cur, T_ref_cur;\n        getPoseAt(event_queue_[current_event_ + frame_size / 2].ts, T_w_cur);\n        T_ref_cur = T_ref_w_ * T_w_cur;\n\n        const evo_utils::geometry::Transformation T_cur_ref =\n            T_ref_cur.inverse();\n        const Eigen::Matrix3f R = T_cur_ref.getRotationMatrix().cast<float>();\n        const Eigen::Vector3f t = T_cur_ref.getPosition().cast<float>();\n\n        // Project the points on plane at distance z0\n        const float z0 = raw_depths_vec_[0];\n        Eigen::Matrix3f R_corr = R;\n        R_corr *= z0;\n        R_corr.col(2) += t;\n\n        centers.push_back(-R.transpose() * t);\n\n        Eigen::Matrix3f H_cur_ref = K_ * R_corr * virtual_cam_.Kinv_;\n\n        Eigen::Matrix3f H_ref_cur = H_cur_ref.inverse();\n        Eigen::Matrix4f H_ref_cur_4x4;\n        H_ref_cur_4x4.block<3, 3>(0, 0) = H_ref_cur;\n        H_ref_cur_4x4.col(3).setZero();\n        H_ref_cur_4x4.row(3).setZero();\n\n        for (size_t i = 0; i != frame_size; ++i) {\n            const dvs_msgs::Event& e = event_queue_[current_event_];\n            Eigen::Vector4f p;\n\n            p.head<2>() = precomputed_rectified_points_.col(e.y * width_ + e.x);\n            p[2] = 1.;\n            p[3] = 0.;\n\n            p = H_ref_cur_4x4 * p;\n            p /= p[2];\n            p[2] = 1.;\n\n            events.push_back(p);\n\n            ++num_events_processed;\n            ++current_event_;\n\n#ifdef DEBUG_SHOW_FAKE_FRAMES\n            integrated_img.at<uchar>(e.y, e.x) = 255;\n#endif\n        }\n\n        current_event_ += skip_batches * frame_size;\n\n#ifdef DEBUG_SHOW_FAKE_FRAMES\n        cv::imshow(\"Integrated events\", integrated_img);\n        cv::waitKey(10);\n        integrated_img = cv::Mat::zeros(height_, width_, CV_8U);\n#endif\n    }\n\n    if (centers.size() == 0) return;\n\n    projectEventsToVoxelGrid(events, centers);\n\n#ifdef MAPPING_PERF\n    events_processed += n_events;\n    {\n        TIMER_STOP(t1, t2, duration);\n        time_evolved += duration / 1000;  // from ms to s\n    }\n\n    if (events_processed > perf_interval) {\n        double cur_ts = event_queue_[current_event_].ts.toSec(),\n               time_processed = cur_ts - last_ts;\n        LOG(INFO) << \"  Events/s: \" << (double)events_processed / time_evolved;\n        LOG(INFO) << \"Event rate: \"\n                  << (double)events_processed / time_processed;\n        LOG(WARNING) << \" RT factor: \" << time_processed / time_evolved;\n\n        last_ts = cur_ts;\n        time_evolved = 0;\n        events_processed = 0;\n    }\n#endif\n}\n\nvoid DepthFromDefocusNode::projectEventsToVoxelGrid(\n    const std::vector<Eigen::Vector4f>& events,\n    const std::vector<Eigen::Vector3f>& centers) {\n    static const int N = 128;\n    typedef Eigen::Array<float, N, 1> Arrayf;\n\n    const size_t frame_size = events.size() / centers.size();\n    const float z0 = raw_depths_vec_[0];\n\n#pragma omp parallel for if (events.size() >= 20000)\n    for (size_t layer = 0; layer < raw_depths_vec_.size(); ++layer) {\n        const Eigen::Vector4f* pe = &events[0];\n        Vote* pgrid =\n            &ref_voxel_grid_[layer * virtual_width_ * virtual_height_];\n\n        for (size_t frame = 0; frame != centers.size(); ++frame) {\n            const Eigen::Vector3f& C = centers[frame];\n            const float zi = (float)raw_depths_vec_[layer],\n                        a = z0 * (zi - C[2]),\n                        bx = (z0 - zi) * (C[0] * virtual_cam_.fx_ +\n                                          C[2] * virtual_cam_.cx_),\n                        by = (z0 - zi) * (C[1] * virtual_cam_.fy_ +\n                                          C[2] * virtual_cam_.cy_),\n                        d = zi * (z0 - C[2]);\n\n            // Update voxel grid now, N events per iteration\n            for (size_t batch = 0; batch != frame_size / N; ++batch) {\n                Arrayf X, Y;\n                for (size_t i = 0; i != N; ++i) {\n                    X[i] = pe[i][0];\n                    Y[i] = pe[i][1];\n                }\n\n                X = (X * a + bx) / d;\n                Y = (Y * a + by) / d;\n\n                for (size_t i = 0; i != N; ++i)\n                    voteForCellBilinear(X[i], Y[i], pgrid);\n\n                pe += N;\n            }\n        }\n    }\n}\n\nvoid DepthFromDefocusNode::resetVoxelGrid() {\n    std::fill(ref_voxel_grid_.begin(), ref_voxel_grid_.end(), 0);\n\n    evo_utils::geometry::Transformation T_w_cur;\n\n    ros::Time last_stamp = event_queue_[newest_tracked_event_].ts;\n\n    current_event_ = (newest_tracked_event_ > events_to_recreate_kf_)\n                         ? newest_tracked_event_ - events_to_recreate_kf_\n                         : 0u;\n\n    // Center the voxel grid in the middle pose of the sequence of events\n    // used to fill the DSI.\n    getPoseAt(last_stamp, T_w_cur);\n\n    LOG(INFO) << \"Received a map creation request\";\n    LOG(INFO) << \"Setting KF at time: \" << last_stamp;\n\n    T_ref_w_ = T_w_cur.inverse();\n}\n\nDepthFromDefocusNode::~DepthFromDefocusNode() {\n    synthesizeAndPublishDepth();\n    publishGlobalMap();\n}\n\nvoid DepthFromDefocusNode::setupVoxelGrid() {\n    evo_utils::geometry::Depth min_depth =\n        rpg_common_ros::param<float>(nh_, \"min_depth\", 1.0);\n    evo_utils::geometry::Depth max_depth =\n        rpg_common_ros::param<float>(nh_, \"max_depth\", 10.0);\n    num_depth_cells_ =\n        (size_t)rpg_common_ros::param<int>(nh_, \"num_depth_cells\", 64);\n\n    adaptive_threshold_kernel_size_ =\n        rpg_common_ros::param<int>(pnh_, \"adaptive_threshold_kernel_size\", 5);\n\n    adaptive_threshold_c_ =\n        rpg_common_ros::param<int>(pnh_, \"adaptive_threshold_c\", -10);\n\n    CHECK_GT(adaptive_threshold_kernel_size_, 0);\n    CHECK_EQ(adaptive_threshold_kernel_size_ % 2, 1);\n\n    CHECK_GT(min_depth, 0.0);\n    CHECK_GT(max_depth, min_depth);\n\n    CHECK_LE(num_depth_cells_, 256u) << \"Number of depth cells must be <= 256\";\n\n    //  depths_vec_ = LinearDepthVector(min_depth, max_depth, num_depth_cells_);\n    depths_vec_ = InverseDepthVector(min_depth, max_depth, num_depth_cells_);\n    raw_depths_vec_ = depths_vec_.getDepthVector();\n\n    min_depth_ = min_depth;\n    max_depth_ = max_depth;\n\n    ref_voxel_grid_.resize(num_depth_cells_ * virtual_width_ * virtual_height_,\n                           0);\n}\n\nvoid DepthFromDefocusNode::processEventArray(\n    const dvs_msgs::EventArray::ConstPtr& event_array) {\n    if (state_ == IDLE) {\n        return;\n    }\n\n    for (const dvs_msgs::Event& e : event_array->events)\n        event_queue_.push_back(e);\n\n    // Add initial pose\n    static bool sent_initial_pose = false;\n    if (!sent_initial_pose) {\n        tf::StampedTransform T(tf::Transform::getIdentity(), event_queue_[0].ts,\n                               world_frame_id_, frame_id_);\n        tf_->setTransform(T);\n        sent_initial_pose = true;\n    }\n}\n\nvoid DepthFromDefocusNode::clearEventQueue() {\n    static size_t event_history_size_ = 5000000;\n\n    size_t last_event = std::min(current_event_, last_kf_update_event_);\n\n    if (last_event > event_history_size_) {\n        size_t remove_events = last_event - event_history_size_;\n\n        event_queue_.erase(event_queue_.begin(),\n                           event_queue_.begin() + remove_events);\n        current_event_ -= remove_events;\n        last_kf_update_event_ -= remove_events;\n        newest_tracked_event_ -= remove_events;\n    }\n}\n\nvoid DepthFromDefocusNode::synthesizeAndPublishDepth() {\n    //  LOG(INFO) << \"Synthesize depth from voxel grid\";\n    cv::Mat depth, confidence;\n    synthesizePointCloudFromVoxelGrid(depth, confidence);\n\n    // Accumulate point cloud\n    const evo_utils::geometry::Transformation T_w_ref = T_ref_w_.inverse();\n    accumulatePointcloud(depth, confidence_mask_, confidence,\n                         T_w_ref.getRotation().getRotationMatrix(),\n                         T_w_ref.getPosition(),\n                         event_queue_[current_event_].ts);\n\n    publishVoxelGrid(T_w_ref);\n    publishDepthmap(depth, confidence_mask_);\n}\n\nbool DepthFromDefocusNode::getPoseAt(const ros::Time& t,\n                                     evo_utils::geometry::Transformation& T) {\n    std::string* error_msg = new std::string();\n    if (!tf_->canTransform(world_frame_id_, frame_id_, t, error_msg)) {\n        LOG(WARNING) << t.toNSec() << \" : \" << *error_msg;\n        return false;\n    } else {\n        tf::StampedTransform tr;\n        tf_->lookupTransform(world_frame_id_, frame_id_, t, tr);\n\n        tf::transformTFToKindr(tr, &T);\n\n        return true;\n    }\n}\n\nvoid DepthFromDefocusNode::precomputeRectifiedPoints() {\n    precomputed_rectified_points_ = Eigen::Matrix2Xf(2, height_ * width_);\n    for (int y = 0; y < height_; y++) {\n        for (int x = 0; x < width_; ++x) {\n            cv::Point2d rectified_point =\n                dvs_cam_.rectifyPoint(cv::Point2d(x, y));\n            precomputed_rectified_points_.col(y * width_ + x) =\n                Eigen::Vector2f(rectified_point.x, rectified_point.y);\n        }\n    }\n}\n\n/* // Generic way to try different focus measures, but slow.\nvoid DepthFromDefocusNode::synthesizePointCloudFromVoxelGridContrast(cv::Mat&\ndepth_cell_indices, cv::Mat &confidence)\n{\n  // Bell-shaped mask for a patch\n  const int half_patchsize = rpg_common_ros::param<int>(pnh_, \"half_patchsize\",\n3); const int patch_size = 2 * half_patchsize + 1; cv::Mat gaussian_kernel =\ncv::getGaussianKernel(patch_size, -1, CV_32F); cv::Mat gaussian_kernel_2d =\ngaussian_kernel * gaussian_kernel.t();\n\n  for(int y=half_patchsize; y<virtual_height_-half_patchsize; ++y)\n  {\n    for(int x=half_patchsize; x<virtual_width_-half_patchsize; ++x)\n    {\n      // Build vector containing the number of votes as a function of depth\n      for(size_t depth_plane=0; depth_plane<num_depth_cells_; ++depth_plane)\n      {\n        Vote *pgrid = &ref_voxel_grid_[depth_plane * virtual_width_ *\nvirtual_height_]; cv::Mat slice_dsi(virtual_height_, virtual_width_, CV_32F,\npgrid);\n\n        // Compute the contrast on a small patch around (x,y)\n        cv::Scalar mean, stddev;\n        cv::Mat patch = slice_dsi(cv::Rect(x-half_patchsize, y-half_patchsize,\npatch_size, patch_size)).mul(gaussian_kernel_2d); cv::meanStdDev(patch, mean,\nstddev);\n\n        // Select maximum contrast along the optical ray\n        if(stddev[0] > confidence.at<float>(y,x))\n        {\n          confidence.at<float>(y,x) = (float) stddev[0]; // max of contrast\nalong optical ray depth_cell_indices.at<uchar>(y,x) = depth_plane;\n        }\n      }\n    }\n  }\n}\n*/\n\nvoid DepthFromDefocusNode::synthesizePointCloudFromVoxelGridContrast(\n    cv::Mat& depth_cell_indices, cv::Mat& confidence) {\n    // Bell-shaped mask for a patch\n    const int half_patchsize =\n        rpg_common_ros::param<int>(pnh_, \"half_patchsize\", 3);\n    const int patch_size = 2 * half_patchsize + 1;\n\n    // Local mean, mean square and standard deviation of a depth slice of the\n    // DSI\n    cv::Mat slice_local_mean, slice_local_MS, slice_local_var;\n\n    for (size_t depth_plane = 0; depth_plane < num_depth_cells_;\n         ++depth_plane) {\n        // Get depth plane\n        Vote* pgrid =\n            &ref_voxel_grid_[depth_plane * virtual_width_ * virtual_height_];\n        cv::Mat slice_dsi(virtual_height_, virtual_width_, CV_32F, pgrid);\n\n        // Compute local variance (contrast) of current depth slice of the DSI\n        cv::GaussianBlur(slice_dsi, slice_local_mean,\n                         cv::Size(patch_size, patch_size), 0, 0);\n        cv::GaussianBlur(slice_dsi.mul(slice_dsi), slice_local_MS,\n                         cv::Size(patch_size, patch_size), 0, 0);\n        slice_local_var =\n            slice_local_MS - slice_local_mean.mul(slice_local_mean);\n\n        // Retain maximum local variance (contrast) per pixel (i.e., per optical\n        // ray)\n        for (int y = half_patchsize; y < virtual_height_ - half_patchsize;\n             ++y) {\n            for (int x = half_patchsize; x < virtual_width_ - half_patchsize;\n                 ++x) {\n                // Compute the contrast on a small patch around (x,y)\n                float contrast = slice_local_var.at<float>(y, x);\n\n                // Select maximum contrast along the optical ray\n                if (contrast > confidence.at<float>(y, x)) {\n                    confidence.at<float>(y, x) =\n                        contrast;  // max of contrast along optical ray\n                    depth_cell_indices.at<uchar>(y, x) = depth_plane;\n                }\n            }\n        }\n    }\n\n    // Return standard deviation instead of variance\n    cv::sqrt(confidence, confidence);\n}\n\nvoid DepthFromDefocusNode::synthesizePointCloudFromVoxelGridGradMag(\n    cv::Mat& depth_cell_indices, cv::Mat& confidence) {\n    // Bell-shaped mask for a patch\n    const int half_patchsize =\n        rpg_common_ros::param<int>(pnh_, \"half_patchsize\", 3);\n    const int patch_size = 2 * half_patchsize + 1;\n\n    // Gradient of a depth slice of the DSI\n    cv::Mat grad_x, grad_y, grad_mag;\n\n    for (size_t depth_plane = 0; depth_plane < num_depth_cells_;\n         ++depth_plane) {\n        // Get depth plane\n        Vote* pgrid =\n            &ref_voxel_grid_[depth_plane * virtual_width_ * virtual_height_];\n        cv::Mat slice_dsi(virtual_height_, virtual_width_, CV_32F, pgrid);\n\n        // Compute local gradient magnitude (focus measure) of current depth\n        // slice of the DSI\n        cv::Sobel(slice_dsi, grad_x, CV_32F, 1, 0, patch_size);\n        cv::Sobel(slice_dsi, grad_y, CV_32F, 0, 1, patch_size);\n        grad_mag = grad_x.mul(grad_x) + grad_y.mul(grad_y);\n\n        // Retain maximum local focus per pixel (i.e., per optical ray)\n        for (int y = half_patchsize; y < virtual_height_ - half_patchsize;\n             ++y) {\n            for (int x = half_patchsize; x < virtual_width_ - half_patchsize;\n                 ++x) {\n                // Compute the focus measure on a small patch around (x,y)\n                float focus = grad_mag.at<float>(y, x);\n\n                // Select maximum focus value along the optical ray\n                if (focus > confidence.at<float>(y, x)) {\n                    confidence.at<float>(y, x) =\n                        focus;  // max focus along optical ray\n                    depth_cell_indices.at<uchar>(y, x) = depth_plane;\n                }\n            }\n        }\n    }\n\n    // Return gradient magnitude instead of its square\n    cv::sqrt(confidence, confidence);\n}\n\nvoid DepthFromDefocusNode::synthesizePointCloudFromVoxelGridLinf(\n    cv::Mat& depth_cell_indices, cv::Mat& confidence) {\n    // Storage for 1-D slice of the DSI (along optical ray), i.e.,\n    // vector containing the number of votes as a function of depth\n    std::vector<float> num_votes_vec(num_depth_cells_);\n\n    for (int y = 0; y < virtual_height_; ++y) {\n        for (int x = 0; x < virtual_width_; ++x) {\n            // Build vector containing the number of votes as a function of\n            // depth\n            for (size_t depth_plane = 0; depth_plane < num_depth_cells_;\n                 ++depth_plane) {\n                num_votes_vec.at(depth_plane) =\n                    voxelGridAt(ref_voxel_grid_, x, y, depth_plane);\n            }\n\n            // Look for inv_depth* = argmax(sharpness(inv_depth))\n            auto max = std::max_element(std::begin(num_votes_vec),\n                                        std::end(num_votes_vec));\n\n            confidence.at<float>(y, x) =\n                *max;  // max number of votes along optical ray\n            depth_cell_indices.at<uchar>(y, x) =\n                std::distance(std::begin(num_votes_vec), max);\n        }\n    }\n}\n\nvoid DepthFromDefocusNode::synthesizePointCloudFromVoxelGrid(\n    cv::Mat& depth, cv::Mat& confidence) {\n    confidence = cv::Mat::zeros(virtual_height_, virtual_width_, CV_32F);\n    cv::Mat depth_cell_indices =\n        cv::Mat::zeros(virtual_height_, virtual_width_, CV_8U);\n\n    // Choose method to obtain depth and confidence maps from the DSI\n    const int type_focus_measure =\n        rpg_common_ros::param<int>(pnh_, \"type_focus_measure\", 0);\n\n#ifdef MAPPING_PERF\n    TIMER_START(t1);\n#endif\n\n    if (type_focus_measure == 1) {\n        // LOG(INFO) << \"Depth estimation by maximum local variance of DSI\";\n        // Maximum patch contrast (variance) along optical ray\n        synthesizePointCloudFromVoxelGridContrast(depth_cell_indices,\n                                                  confidence);\n    } else if (type_focus_measure == 2) {\n        // LOG(INFO) << \"Depth estimation by maximum local gradient magnitude of\n        // DSI\"; Maximum patch focus along optical ray\n        synthesizePointCloudFromVoxelGridGradMag(depth_cell_indices,\n                                                 confidence);\n    } else {\n        // LOG(INFO) << \"Depth estimation by maximum of DSI\";\n        // Maximum number of votes along optical ray\n        synthesizePointCloudFromVoxelGridLinf(depth_cell_indices, confidence);\n    }\n\n#ifdef MAPPING_PERF\n    TIMER_STOP(t1, t2, duration);\n    LOG(INFO) << \"[Focus measure] comp. time: \" << duration << \" milliseconds\";\n#endif\n\n    // Adaptive thresholding to get the confidence map\n    cv::Mat confidence_map;\n    cv::normalize(confidence, confidence_map, 0.0, 255.0, cv::NORM_MINMAX);\n    confidence_map.convertTo(confidence_map, CV_8U);\n\n    cv::adaptiveThreshold(confidence_map, confidence_mask_, 1,\n                          cv::ADAPTIVE_THRESH_GAUSSIAN_C, cv::THRESH_BINARY,\n                          adaptive_threshold_kernel_size_,\n                          -adaptive_threshold_c_);\n\n    //  LOG(INFO) << \"Median filtering depth map...\";\n    cv::Mat depth_cell_indices_filtered;\n    // rpg_common::Timer median_filtering_timer;\n    // median_filtering_timer.start();\n    evo_utils::geometry::huangMedianFilter(\n        depth_cell_indices, depth_cell_indices_filtered, confidence_mask_,\n        median_filter_size_);\n    //  LOG(INFO) << \"Done in \" << median_filtering_timer.stop() << \" s\";\n\n    depth = cv::Mat(virtual_height_, virtual_width_, CV_32F,\n                    cv::Scalar(max_depth_));\n    for (int y = 0; y < virtual_height_; ++y) {\n        for (int x = 0; x < virtual_width_; ++x) {\n            depth.at<float>(y, x) = depths_vec_.cellIndexToDepth(\n                depth_cell_indices_filtered.at<uchar>(y, x));\n        }\n    }\n\n#ifdef DEBUG_SHOW_FILTERED_DEPTHMAP\n    cv::Mat norm_depth;\n    cv::normalize(depth, norm_depth, 0.f, 1.f, cv::NORM_MINMAX);\n    cv::imshow(\"Raw depthmap\", norm_depth);\n\n    // cv::Mat norm_filtered_depth;\n    // cv::normalize(filtered_depth, norm_filtered_depth, 0.f, 1.f,\n    //               cv::NORM_MINMAX);\n    // cv::imshow(\"Filtered depthmap\", norm_filtered_depth);\n    cv::waitKey(0);\n#endif\n}\n\nvoid DepthFromDefocusNode::accumulatePointcloud(\n    const cv::Mat& depth, const cv::Mat& mask, const cv::Mat& confidence,\n    const Eigen::Matrix3d R_world_ref, const Eigen::Vector3d t_world_ref,\n    const ros::Time& timestamp) {\n    pc_->clear();\n\n    for (int y = 0; y < virtual_height_; ++y) {\n        for (int x = 0; x < virtual_width_; ++x) {\n            if (mask.at<uint8_t>(y, x) > 0) {\n                BearingVector f_ref =\n                    virtual_cam_.projectPixelTo3dRay(Keypoint(x, y));\n                f_ref.normalize();\n                Eigen::Vector3d xyz_world =\n                    R_world_ref * (f_ref / f_ref[2] * depth.at<float>(y, x)) +\n                    t_world_ref;\n\n                pcl::PointXYZI p_world;\n                p_world.x = xyz_world.x();\n                p_world.y = xyz_world.y();\n                p_world.z = xyz_world.z();\n                p_world.intensity = 1.0 / p_world.z;\n                pc_->push_back(p_world);\n            }\n        }\n    }\n\n    // filter point cloud to remove outliers\n    PointCloud::Ptr cloud_filtered(new PointCloud);\n    pcl::RadiusOutlierRemoval<PointType> outrem;\n    outrem.setInputCloud(pc_);\n    outrem.setRadiusSearch(radius_search_);\n    outrem.setMinNeighborsInRadius(min_num_neighbors_);\n    outrem.filter(*cloud_filtered);\n\n    pc_->swap(*cloud_filtered);\n    std_msgs::Header ros_header = pcl_conversions::fromPCL(pc_->header);\n    ros_header.stamp = timestamp;\n    pcl_conversions::toPCL(ros_header, pc_->header);\n\n    sensor_msgs::PointCloud2::Ptr pc_to_publish(new sensor_msgs::PointCloud2);\n\n    if (!pc_->empty()) {\n        pcl::toROSMsg(*pc_, *pc_to_publish);\n        pc_to_publish->header.stamp = timestamp;\n        pub_pc_.publish(pc_to_publish);\n        //    std::cout << \"Publish pointcloud (\" << pc_->size() << \" points)\"\n        //    << std::endl;\n    }\n\n    // Print statistics\n    //  Vote max = 0;\n    //  int count = 0;\n    //  float avg = 0;\n    //  for (const Vote &v: ref_voxel_grid_)\n    //  {\n    //    if (v > 0)\n    //    {\n    //      avg += v;\n    //      ++count;\n    //    }\n    //    if (v > max)\n    //      max = v;\n    //  }\n    //  avg /= count;\n    //  LOG(INFO) << \"VoxelGrid: max: \" << max << \", avg: \" << avg << std::endl;\n}\n\nvoid DepthFromDefocusNode::publishDepthmap(const cv::Mat& depth,\n                                           const cv::Mat& mask) {\n    static image_transport::Publisher pub =\n        it_.advertise(\"/dvs_mapping/depthmap\", 1);\n\n    if (pub.getNumSubscribers() == 0) return;\n\n    double min, max;\n    int min_idx, max_idx;\n    cv::minMaxIdx(depth, &min, &max, &min_idx, &max_idx, mask);\n\n    cv::Mat img = 255.f * (depth - min) / (max - min);\n    img.convertTo(img, CV_8U);\n    cv::applyColorMap(img, img, cv::COLORMAP_JET);\n    img.setTo(255, 1 - mask);\n    //  cv::GaussianBlur(img, img, cv::Size(3,3), 0);\n\n    std_msgs::Header header;\n    header.stamp = event_queue_[current_event_].ts;\n    sensor_msgs::ImagePtr msg =\n        cv_bridge::CvImage(header, \"bgr8\", img).toImageMsg();\n    pub.publish(msg);\n}\n\nvoid DepthFromDefocusNode::publishVoxelGrid(\n    const evo_utils::geometry::Transformation& T_w_ref) const {\n    if (pub_voxel_grid_.getNumSubscribers() > 0) {\n        std_msgs::Float32MultiArray array;\n\n        array.layout.dim.push_back(std_msgs::MultiArrayDimension());\n        array.layout.dim.push_back(std_msgs::MultiArrayDimension());\n        array.layout.dim.push_back(std_msgs::MultiArrayDimension());\n\n        array.layout.data_offset = (uint32_t)0;\n\n        array.layout.dim[0].label = \"height\";\n        array.layout.dim[0].size = virtual_height_;\n        array.layout.dim[0].stride =\n            num_depth_cells_ * virtual_height_ * virtual_width_;\n\n        array.layout.dim[1].label = \"width\";\n        array.layout.dim[1].size = virtual_width_;\n        array.layout.dim[1].stride = num_depth_cells_ * virtual_width_;\n\n        array.layout.dim[2].label = \"depth\";\n        array.layout.dim[2].size = num_depth_cells_;\n        array.layout.dim[2].stride = num_depth_cells_;\n\n        for (int y = 0; y < virtual_height_; ++y) {\n            for (int x = 0; x < virtual_width_; ++x) {\n                for (size_t k = 0; k < num_depth_cells_; ++k) {\n                    array.data.push_back(voxelGridAt(ref_voxel_grid_, x, y, k));\n                }\n            }\n        }\n\n        geometry_msgs::Pose T_w_ref_msg;\n        dvs_slam_msgs::VoxelGrid voxel_grid_msg;\n\n        geometry_msgs::Point pos;\n        geometry_msgs::Quaternion quat;\n        pos.x = T_w_ref.getPosition()[0];\n        pos.y = T_w_ref.getPosition()[1];\n        pos.z = T_w_ref.getPosition()[2];\n        quat.x = T_w_ref.getRotation().x();\n        quat.y = T_w_ref.getRotation().y();\n        quat.z = T_w_ref.getRotation().z();\n        quat.w = T_w_ref.getRotation().w();\n        T_w_ref_msg.position = pos;\n        T_w_ref_msg.orientation = quat;\n        voxel_grid_msg.voxel_grid = array;\n        voxel_grid_msg.T_w_ref = T_w_ref_msg;\n        pub_voxel_grid_.publish(voxel_grid_msg);\n    }\n}\n\nvoid DepthFromDefocusNode::publishGlobalMap() {\n    static const int accumulate_once_every =\n        rpg_common_ros::param<int>(pnh_, \"accumulate_local_map_once_every\", 1);\n    static const int skip_first =\n        rpg_common_ros::param<int>(pnh_, \"global_point_cloud_skip_first\", 0);\n    static int accumulation_cnt = 0;\n    static int skipped = 0;\n\n    if (pub_pc_global_.getNumSubscribers() > 0 && skipped >= skip_first &&\n        (accumulation_cnt % accumulate_once_every == 0)) {\n        *pc_global_ += *pc_;\n        pc_global_->header.stamp = pc_->header.stamp;\n\n        pcl::PCLPointCloud2::Ptr cloud(new pcl::PCLPointCloud2());\n        pcl::PCLPointCloud2::Ptr cloud_filtered(new pcl::PCLPointCloud2());\n        pcl::toPCLPointCloud2(*pc_global_, *cloud);\n\n        static const float voxel_filter_leaf_size =\n            rpg_common_ros::param<float>(pnh_, \"voxel_filter_leaf_size\", .0f);\n\n        if (voxel_filter_leaf_size > 0.0001f) {\n            // apply voxel grid filter\n            LOG(INFO) << \"Global point cloud before filtering: \"\n                      << cloud->width * cloud->height << \" data points (\"\n                      << pcl::getFieldsList(*cloud) << \").\";\n\n            // Create the filtering object\n            pcl::VoxelGrid<pcl::PCLPointCloud2> sor;\n            sor.setInputCloud(cloud);\n\n            sor.setLeafSize(voxel_filter_leaf_size, voxel_filter_leaf_size,\n                            voxel_filter_leaf_size);\n            sor.filter(*cloud_filtered);\n            LOG(INFO) << \"Global point cloud after filtering: \"\n                      << cloud_filtered->width * cloud_filtered->height\n                      << \" data points (\" << pcl::getFieldsList(*cloud_filtered)\n                      << \").\";\n\n            pcl::fromPCLPointCloud2(*cloud_filtered, *pc_global_);\n        } else {\n            pcl::fromPCLPointCloud2(*cloud, *pc_global_);\n        }\n\n        static const float radius_search =\n            rpg_common_ros::param<float>(pnh_, \"radius_search_global_map\", .02);\n        static const int min_num_neighbors =\n            rpg_common_ros::param<int>(pnh_, \"min_num_neighbors_global_map\", 5);\n\n        if (radius_search > 0) {\n            // filter point cloud to remove outliers\n            PointCloud::Ptr cloud_filtered(new PointCloud);\n            pcl::RadiusOutlierRemoval<PointType> outrem;\n            outrem.setInputCloud(pc_global_);\n            outrem.setRadiusSearch(radius_search);\n            outrem.setMinNeighborsInRadius(min_num_neighbors);\n            outrem.filter(*cloud_filtered);\n\n            pc_global_->swap(*cloud_filtered);\n        }\n\n        sensor_msgs::PointCloud2 pc_to_publish;\n        pcl::toROSMsg(*pc_global_, pc_to_publish);\n        pub_pc_global_.publish(pc_to_publish);\n    }\n    if (skipped++ >= skip_first)\n        accumulation_cnt = (accumulation_cnt + 1) % accumulate_once_every;\n}\n\n}  // namespace depth_from_defocus\n"
  },
  {
    "path": "dvs_mapping/src/dvs_mapping_nodelet.cpp",
    "content": "#include <camera_info_manager/camera_info_manager.h>\n#include <dvs_depth_from_defocus/dvs_mapping_nodelet.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <pluginlib/class_list_macros.h>\n#include <ros/package.h>\n\n#include \"evo_utils/camera.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace depth_from_defocus {\n\nvoid DvsMappingNodelet::onInit() {\n    ros::NodeHandle nh(getNodeHandle());\n\n    // Load camera calibration\n    image_geometry::PinholeCameraModel cam =\n        evo_utils::camera::loadPinholeCamera(nh);\n\n    node_ = new DepthFromDefocusNode(nh, getPrivateNodeHandle(), cam);\n\n    NODELET_INFO_STREAM(\"Initialized \" << getName() << \" nodelet.\");\n}\n\nPLUGINLIB_EXPORT_CLASS(depth_from_defocus::DvsMappingNodelet, nodelet::Nodelet)\n\n}  // namespace depth_from_defocus\n"
  },
  {
    "path": "dvs_mapping/src/dvs_mapping_ros.cpp",
    "content": "#include <camera_info_manager/camera_info_manager.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <ros/package.h>\n\n#include <dvs_depth_from_defocus/depth_defocus_node.hpp>\n\n#include \"evo_utils/camera.hpp\"\n#include \"evo_utils/geometry.hpp\"\n#include \"evo_utils/main.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nusing namespace evo_utils::geometry;\n\nRPG_COMMON_MAIN {\n    ros::init(argc, argv, \"dvs_mapping\");\n    ros::NodeHandle nh;\n    ros::NodeHandle pnh(\"~\");\n\n    // Load camera calibration\n    image_geometry::PinholeCameraModel cam =\n        evo_utils::camera::loadPinholeCamera(nh);\n\n    depth_from_defocus::DepthFromDefocusNode depth_defocus_node(nh, pnh, cam);\n\n    ros::spin();\n\n    return 0;\n}\n"
  },
  {
    "path": "dvs_mapping/src/tf_broadcaster.py",
    "content": "#!/usr/bin/env python\n\nimport rospy\nimport tf\nfrom geometry_msgs.msg import PoseStamped\n\n\ndef handle_dvs_pose(msg):\n    br = tf.TransformBroadcaster()\n    t = msg.pose.position\n    q = msg.pose.orientation\n    br.sendTransform((t.x, t.y, t.z),\n                     (q.x, q.y, q.z, q.w),\n                     msg.header.stamp,\n                     \"dvs\",\n                     \"world\")\n\n\nif __name__ == '__main__':\n\n    rospy.init_node('tf_broadcaster')\n    rospy.Subscriber('/dvs/pose',\n                     PoseStamped,\n                     handle_dvs_pose)\n\n    rospy.spin()\n"
  },
  {
    "path": "dvs_mapping/src/trigger_map_expansion.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport rospy\nimport rospkg\nimport numpy as np\nfrom rospy.numpy_msg import numpy_msg\nimport sensor_msgs.point_cloud2 as pc2\nfrom sensor_msgs.msg import PointCloud2, PointField, Image, CameraInfo\nfrom std_msgs.msg import String\nfrom tf import TransformListener\nfrom tf.transformations import quaternion_matrix\nimport cv2\nimport time\nimport yaml\n\n# import datetime\n\n# States\nDISABLED = 'DISABLED'\nWAIT_FOR_MAP = 'WAIT_FOR_MAP'\nCHECKING = 'CHECKING'\n\n\"\"\"\nEvaluates the quality of the map and eventually trigger an update request to the mapper\n\ntopics:\n\nPublishes \"remote_key\" -> \"update\" when an update is necessary\n\nListens  \"remote_key\" -> \"enable_map_expansion\" and \"disable_map_expansion\"\nto enable/disable this service\n\n    ROS params:\n        ~rate) rate at which the node checks whether an expansion is needed\n        ~visibility_threshold) visibility of the map below which the update is triggered\n        ~baseline_threshold) baseline / mean depth ration above which the update is triggered\n        ~coverage_threshold) minimum amount of pixels covered by reprojected map threshold\n        dvs_frame_id) frame id of the camera\n        world_frame_id) world frame used\n        calib_file) calibration file for the camera\n        camera_info) topic where camera info are published\n        number_of_initial_maps_to_skip) starts checking updates conditions after this # of maps\n\"\"\"\n\n\nclass TriggerMapExpansion:\n    _state = WAIT_FOR_MAP\n    _map = None\n    _t_map = None\n    _got_camera_info = False\n\n    def __init__(self):\n        self._rate = rospy.get_param('~rate', 3)\n        self._visibility_th = rospy.get_param('~visibility_threshold', .75)\n        self._coverage_th = rospy.get_param('~coverage_threshold', .3)\n        self._baseline_th = rospy.get_param('~baseline_threshold', .1)\n        self._dvs_frame_id = rospy.get_param('dvs_frame_id', 'dvs_evo')\n        self._world_frame_id = rospy.get_param('world_frame_id', 'world')\n        self._map_to_skip = rospy.get_param(\n            'number_of_initial_maps_to_skip', 0)\n\n        with open(rospy.get_param('calib_file', ''), 'r') as stream:\n            try:\n                cam_info = yaml.load(stream, yaml.SafeLoader)\n                self._w = cam_info['image_width']\n                self._h = cam_info['image_height']\n                self._K = np.array(\n                    cam_info['camera_matrix']['data']).reshape((3, 3))\n            except yaml.YAMLError as exc:\n                print(exc)\n\n        self._remote = rospy.Publisher('remote_key', String, queue_size=1)\n\n        self._tf = TransformListener(True)\n        rospy.Subscriber(\"pointcloud\", PointCloud2, self._MapCallback)\n        rospy.Subscriber(\"remote_key\", String, self._RemoteKeyCallback)\n        rospy.Subscriber(\"camera_info\", CameraInfo, self._CameraInfoCallback)\n        rospy.Timer(rospy.Duration(1./self._rate), self._CheckNewMapNeeded)\n\n        # cv2.namedWindow('mask', cv2.WINDOW_NORMAL)\n\n    def _CameraInfoCallback(self, msg):\n        \"\"\"\n        Update camera calibration once from topic \"camera_info\"\n        \"\"\"\n        if self._got_camera_info:\n            return\n\n        self._w = msg.width\n        self._h = msg.height\n        self._K = np.array(msg.K).reshape((3, 3))\n\n        self._got_camera_info = True\n\n    def _RemoteKeyCallback(self, msg):\n        \"\"\"\n        Listens to enable and disable map expansion commands\n        topic: remote_key\n\n        \"disable_map_expansion\" -> does not check whether a map update is needed\n        \"enable_map_expansion\" -> checks whether a map update is needed\n\n        @param msg remote key message\n        \"\"\"\n        m = msg.data\n\n        if (m == 'disable_map_expansion'):\n            self._state = DISABLED\n        if (m == 'enable_map_expansion'):\n            self._state = CHECKING\n\n    def _MapCallback(self, msg):\n        \"\"\"\n        Store last published map\n\n        @param msg message containing the last published map\n        \"\"\"\n        if self._state == DISABLED:\n            return\n\n        map = []\n        for p in pc2.read_points(msg):\n            map.append([p[0], p[1], p[2], 1.])\n\n        self._map = np.array(map).T\n        rospy.loginfo('Received map: {} points'.format(len(map)))\n\n        try:\n            now = rospy.Time(0)\n            self._tf.waitForTransform(\n                self._dvs_frame_id, self._world_frame_id, now, rospy.Duration(1.))\n            (self._t_map, q) = self._tf.lookupTransform(\n                self._dvs_frame_id, self._world_frame_id, now)\n            self._state = CHECKING\n        except:\n            self._t_map = None\n\n    def _CheckNewMapNeeded(self, event):\n        \"\"\"\n        Regularly check whether a map update is needed if self._state == CHECKING\n        and a map has already been received\n\n        @param rospy.Timer event\n\n        @see _MapVisibility, _BaselineOverDepth\n        \"\"\"\n\n        if self._state != CHECKING:\n            return\n\n        if (self._t_map and self._map.size == 0):\n            return\n\n        try:\n            now = rospy.Time(0)\n            self._tf.waitForTransform(\n                self._dvs_frame_id, self._world_frame_id, now, rospy.Duration(1.))\n        except:\n            return\n\n        (t, q) = self._tf.lookupTransform(\n            self._dvs_frame_id, self._world_frame_id, now)\n\n        T = quaternion_matrix(q)\n        T[:3, 3] = t\n\n        # Project map into camera frame\n        pts = T.dot(self._map)[:3, ]\n\n        # t1 = datetime.datetime.now()\n        coverage, visibility = self._MapVisibility(pts)\n        # t2 = datetime.datetime.now()\n        BoD = self._BaselineOverDepth(\n            pts, np.subtract(t, self._t_map)) if self._t_map else 0.\n        # t3 = datetime.datetime.now()\n\n        # t21 = t2 - t1\n        # t32 = t3 - t2\n        # print(\n        #     'Map visibility: {}% -- {}ms, baseline/depth: {}% -- {}ms'.format(visibility,\n        #       t21.total_seconds()*1000, BoD, t32.total_seconds()*1000))\n\n        if coverage < self._coverage_th or visibility < self._visibility_th or BoD > self._baseline_th:\n            rospy.loginfo(\n                'Sending update, coverage: {} %, map visibility: {} %, baseline/depth: {}'.format(coverage * 100, visibility * 100, BoD))\n            self._state = WAIT_FOR_MAP\n            self._remote.publish('update')\n\n    def _MapVisibility(self, pts):\n        \"\"\"\n        Computes the map visibility as the number of points that are projected\n        onto the new frame over the total number of points.\n\n        @param pts map points\n\n        @return the map visibility\n        \"\"\"\n\n        pts = pts[:, pts[2, ] > 0]\n        pts = self._K.dot(pts/pts[2, ]).T\n\n        N = len(pts)\n\n        if N == 0:\n            return 0.\n\n        mask = np.zeros((self._h, self._w), np.uint8)\n        cnt = 0.\n        for i in xrange(N):\n            x, y = pts[i][:2]\n            cv2.circle(mask, (int(x), int(y)), 7, 255, -1)\n            if x >= 0 and y >= 0 and x < self._w and y < self._h:\n                cnt += 1.\n\n        # cv2.imshow('mask', mask)\n        # cv2.waitKey(3)\n\n        return float(cv2.countNonZero(mask))/(self._w*self._h), float(cnt) / N\n\n    def _BaselineOverDepth(self, pts, t):\n        \"\"\"\n        Computes the heuristic baseline / average depth\n\n        @param pts map point cloud (3d points: 3xN)\n        @patam t translation vector between the two poses\n        \"\"\"\n        avg_depth = np.average(np.linalg.norm(pts, axis=0))\n        baseline = np.linalg.norm(t)\n\n        return baseline / avg_depth\n\n\nif __name__ == '__main__':\n    rospy.init_node('trigger_map_expansion')\n    node = TriggerMapExpansion()\n    rospy.spin()\n"
  },
  {
    "path": "dvs_mapping/test/test_depth_vector.cpp",
    "content": "#include <aslam/common/entrypoint.h>\n#include <gtest/gtest.h>\n\n#include <dvs_depth_from_defocus/depth_vector.hpp>\n\nusing namespace depth_from_defocus;\n\nTEST(DepthVectorTest, LinearDepth) {\n    size_t num_depth_cells = 5;\n    evo_utils::geometry::Depth min_depth = 1.0;\n    evo_utils::geometry::Depth max_depth = 5.0;\n    DepthVector depth_vec(min_depth, max_depth, num_depth_cells);\n\n    EXPECT_NEAR(depth_vec.cellIndexToDepth(0), 1.0, 1e-4);\n    EXPECT_NEAR(depth_vec.cellIndexToDepth(1), 2.0, 1e-4);\n    EXPECT_NEAR(depth_vec.cellIndexToDepth(2), 3.0, 1e-4);\n    EXPECT_NEAR(depth_vec.cellIndexToDepth(3), 4.0, 1e-4);\n    EXPECT_NEAR(depth_vec.cellIndexToDepth(4), 5.0, 1e-4);\n}\n\nTEST(DepthVectorTest, ForwardBackward) {\n    size_t num_tests = 5;\n    size_t num_depth_cells = 10;\n\n    std::random_device rand_dev;\n    std::mt19937 generator(rand_dev());\n    std::uniform_real_distribution<double> distr(1.0, 50.0);\n\n    // depth\n    for (size_t n = 0; n < num_tests; ++n) {\n        evo_utils::geometry::Depth min_depth = distr(generator);\n        evo_utils::geometry::Depth max_depth = distr(generator);\n        DepthVector depth_vector(min_depth, max_depth, num_depth_cells);\n\n        for (size_t i = 0; i < depth_vector.size(); ++i) {\n            const evo_utils::geometry::Depth d_i =\n                depth_vector.cellIndexToDepth(i);\n            const size_t rec_i = depth_vector.depthToCellIndex(d_i);\n            EXPECT_EQ(i, rec_i) << \"Forward-Backward index mismatch\";\n        }\n    }\n}\n"
  },
  {
    "path": "dvs_mapping/test/test_median_filter.cpp",
    "content": "#include <aslam/common/entrypoint.h>\n#include <gtest/gtest.h>\n\n#include <opencv2/core/core.hpp>\n\n#include \"evo_utils/geometry.hpp\"\n\nusing namespace evo_utils::geometry;\n\nclass MedianFilterTest : public ::testing::Test {\n   protected:\n    virtual void SetUp() {\n        rng_ = cv::RNG();\n\n        img_ = cv::Mat(6, 6, CV_8U);\n\n        img_.at<uchar>(0, 0) = 3;\n        img_.at<uchar>(0, 1) = 1;\n        img_.at<uchar>(0, 2) = 2;\n        img_.at<uchar>(0, 3) = 9;\n        img_.at<uchar>(0, 4) = 8;\n        img_.at<uchar>(0, 5) = 3;\n\n        img_.at<uchar>(1, 0) = 1;\n        img_.at<uchar>(1, 1) = 4;\n        img_.at<uchar>(1, 2) = 5;\n        img_.at<uchar>(1, 3) = 2;\n        img_.at<uchar>(1, 4) = 0;\n        img_.at<uchar>(1, 5) = 0;\n\n        img_.at<uchar>(2, 0) = 9;\n        img_.at<uchar>(2, 1) = 8;\n        img_.at<uchar>(2, 2) = 1;\n        img_.at<uchar>(2, 3) = 2;\n        img_.at<uchar>(2, 4) = 5;\n        img_.at<uchar>(2, 5) = 5;\n\n        img_.at<uchar>(3, 0) = 1;\n        img_.at<uchar>(3, 1) = 5;\n        img_.at<uchar>(3, 2) = 8;\n        img_.at<uchar>(3, 3) = 1;\n        img_.at<uchar>(3, 4) = 8;\n        img_.at<uchar>(3, 5) = 8;\n\n        img_.at<uchar>(4, 0) = 5;\n        img_.at<uchar>(4, 1) = 4;\n        img_.at<uchar>(4, 2) = 3;\n        img_.at<uchar>(4, 3) = 2;\n        img_.at<uchar>(4, 4) = 1;\n        img_.at<uchar>(4, 5) = 0;\n\n        img_.at<uchar>(5, 0) = 9;\n        img_.at<uchar>(5, 1) = 9;\n        img_.at<uchar>(5, 2) = 8;\n        img_.at<uchar>(5, 3) = 7;\n        img_.at<uchar>(5, 4) = 6;\n        img_.at<uchar>(5, 5) = 5;\n\n        //    print_array(img_, 6, 6);\n    }\n\n    void print_array(const cv::Mat& arr, int cols, int rows) {\n        for (int y = 0; y < rows; ++y) {\n            for (int x = 0; x < cols; ++x) {\n                std::cout << (int)arr.at<uchar>(y, x) << \" \";\n            }\n            std::cout << std::endl;\n        }\n        std::cout << std::endl;\n    }\n\n    cv::Mat img_;\n    cv::RNG rng_;\n};\n\nTEST_F(MedianFilterTest, NaiveFilterWithoutMask) {\n    cv::Mat mask = cv::Mat::ones(6, 6, CV_8U);\n    cv::Mat filtered_img;\n    naiveMedianFilter(img_, filtered_img, mask, 3);\n\n    //  print_array(filtered_img, 6, 6);\n\n    // Note: we don't check the boundaries\n    EXPECT_EQ(filtered_img.at<uchar>(1, 1), 3);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 2), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 3), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 4), 3);\n\n    EXPECT_EQ(filtered_img.at<uchar>(2, 1), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 2), 4);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 3), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 4), 2);\n\n    EXPECT_EQ(filtered_img.at<uchar>(3, 1), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 2), 3);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 3), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 4), 2);\n\n    EXPECT_EQ(filtered_img.at<uchar>(4, 1), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 2), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 3), 6);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 4), 5);\n}\n\nTEST_F(MedianFilterTest, NaiveMedianFilterWithMask) {\n    cv::Mat mask = cv::Mat::ones(6, 6, CV_8U);\n\n    mask.at<uchar>(0, 1) = 0;\n    mask.at<uchar>(0, 4) = 0;\n    mask.at<uchar>(1, 1) = 0;\n    mask.at<uchar>(1, 2) = 0;\n    mask.at<uchar>(1, 4) = 0;\n    mask.at<uchar>(2, 3) = 0;\n    mask.at<uchar>(3, 2) = 0;\n    mask.at<uchar>(3, 3) = 0;\n    mask.at<uchar>(4, 1) = 0;\n    mask.at<uchar>(4, 3) = 0;\n    mask.at<uchar>(4, 4) = 0;\n    mask.at<uchar>(4, 5) = 0;\n    mask.at<uchar>(5, 2) = 0;\n\n    //  print_array(mask, 6, 6);\n\n    cv::Mat filtered_img;\n    naiveMedianFilter(img_, filtered_img, mask, 3);\n\n    //  print_array(filtered_img, 6, 6);\n\n    EXPECT_EQ(filtered_img.at<uchar>(1, 1), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 2), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 3), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(1, 4), 3);\n\n    EXPECT_EQ(filtered_img.at<uchar>(2, 1), 1);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 2), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 3), 2);\n    EXPECT_EQ(filtered_img.at<uchar>(2, 4), 5);\n\n    EXPECT_EQ(filtered_img.at<uchar>(3, 1), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 2), 3);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 3), 3);\n    EXPECT_EQ(filtered_img.at<uchar>(3, 4), 5);\n\n    EXPECT_EQ(filtered_img.at<uchar>(4, 1), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 2), 5);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 3), 6);\n    EXPECT_EQ(filtered_img.at<uchar>(4, 4), 7);\n}\n\nTEST_F(MedianFilterTest, HuangFilterWithoutMask) {\n    // Create random image filled with values for 0 to 255\n    int width = 200;\n    int height = 200;\n    cv::Mat img(height, width, CV_8U);\n    rng_.fill(img, cv::RNG::UNIFORM, 0, 256, true);\n\n    cv::Mat filtered_img_naive, filtered_img_huang;\n    naiveMedianFilter(img, filtered_img_naive,\n                      cv::Mat::ones(height, width, CV_8U), 17);\n    huangMedianFilter(img, filtered_img_huang,\n                      cv::Mat::ones(height, width, CV_8U), 17);\n\n    const int p = 8;  // 8*2+1 = 17\n    for (int y = p; y < height - p; ++y) {\n        for (int x = p; x < width - p; ++x) {\n            EXPECT_EQ(filtered_img_naive.at<uchar>(y, x),\n                      filtered_img_huang.at<uchar>(y, x));\n        }\n    }\n}\n\nTEST_F(MedianFilterTest, HuangFilterWithMask) {\n    // Create random image filled with values for 0 to 255\n    int width = 200;\n    int height = 200;\n    cv::Mat img(height, width, CV_8U);\n    rng_.fill(img, cv::RNG::UNIFORM, 0, 256, true);\n\n    cv::Mat mask(height, width, CV_8U);\n    rng_.fill(mask, cv::RNG::UNIFORM, 0, 2, false);\n\n    //  print_array(img, height, width);\n    //  print_array(mask, height, width);\n\n    cv::Mat filtered_img_naive, filtered_img_huang;\n    naiveMedianFilter(img, filtered_img_naive, mask, 17);\n    huangMedianFilter(img, filtered_img_huang, mask, 17);\n\n    const int p = 8;  // 8*2+1 = 17\n    for (int y = p; y < height - p; ++y) {\n        for (int x = p; x < width - p; ++x) {\n            EXPECT_EQ(filtered_img_naive.at<uchar>(y, x),\n                      filtered_img_huang.at<uchar>(y, x));\n        }\n    }\n}\n\nVIKIT_UNITTEST_ENTRYPOINT\n"
  },
  {
    "path": "dvs_reconstruction/CMakeLists.txt",
    "content": "project(dvs_reconstruction)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\n\nSET(CMAKE_BUILD_TYPE RelWithDebInfo) # Release, RelWithDebInfo\nADD_DEFINITIONS(\n    -std=c++11\n    # -O3\n)\n\n\n################################################################################\nset(HEADERS\n  include/dvs_reconstruction/poisson_solver/laplace.h\n  include/dvs_reconstruction/mosaic.hpp\n)\n\nset(SOURCES\n  src/mosaic.cpp\n  src/poisson_solver/laplace.cpp\n)\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n# Nodes\n################################################################################\n\ncs_add_executable(dvs_reconstruction_ros src/dvs_reconstruction_ros.cpp)\ntarget_link_libraries(dvs_reconstruction_ros ${PROJECT_NAME}\n  ${OpenCV_LIBS}\n  ${PCL_LIBRARIES}\n  fftw3 fftw3_threads\n)\n\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "dvs_reconstruction/include/dvs_reconstruction/mosaic.hpp",
    "content": "#ifndef GRADIENT_ESTIMATION_H\n#define GRADIENT_ESTIMATION_H\n\n#include <dvs_msgs/Event.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <image_transport/image_transport.h>\n#include <pcl/point_cloud.h>\n#include <pcl/point_types.h>\n#include <tf/tf.h>\n#include <tf/transform_listener.h>\n\n#include <opencv2/opencv.hpp>\n\n// #define MOSAIC_PERF ///< uncomment to measure performance\n\n/**\n * Reconstructs image from events using poisson equation solver\n *\n * @see laplace.h\n */\nclass Mosaic {\n   public:\n    typedef cv::Vec2f Velocity;\n    typedef cv::Vec2f Gradient;\n    typedef cv::Matx<float, 2, 2> Covariance;\n    typedef cv::Matx<float, 1, 1> Scalar;\n    typedef double Time;\n\n    /**\n     * Constructor of image reconstructor\n     *\n     * @param sigma_m sigma_m for the EKF\n     * @param init_cov initial guess for the EKF covariance\n     * @param window_size window of events between EKF update\n     * @param map_blur kernel of map reprojection blur\n     * @param tf ros transform listener\n     * @param nh node handle\n     * @param nhp private node handle\n     */\n    Mosaic(const float sigma_m, const float init_cov, int window_size,\n           int map_blur, tf::TransformListener &tf, ros::NodeHandle &nh,\n           ros::NodeHandle &nhp);\n\n    /**\n     * Setups camera model, store intrinsic matrix, prepare virtual camera\n     * (super-resolution) and pre-compute rectification map.\n     *\n     *      ROS params:\n     *          super_resolution_factor) super resolution of the reconstruction\n     *              algorithm\n     *\n     * @param c pinhole camera model\n     *\n     * @see precomputeRectificationMap\n     */\n    void setCamModel(image_geometry::PinholeCameraModel &c);\n\n    /**\n     * Processes a batch of events and compute image reconstruction\n     *\n     *      ROS params:\n     *          dvs_frame_id) frame id of the estimated pose\n     *          world_frame_id) world frame id\n     *\n     * @param evs events to process in order to reconstruct the image\n     * @param map scene map used to get 3d information\n     *\n     * @see update, reprojectDepthmap\n     */\n    void compute(const std::vector<dvs_msgs::Event> &evs,\n                 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &map);\n\n    /**\n     * Returns the magnitude of the gradient values stored in grad, normalized\n     * (MINMAX) between 0 and 1.\n     *\n     * @return the magnitude of the normalized (MINMAX) gradient at each pixel\n     */\n    cv::Mat getAbsoluteGradient();\n\n    /**\n     * Calculate second derivative (adjacent differences) and solve for\n     * M_xx + M_yy = F using Poisson solver\n     *\n     * @see pde::poisolve\n     */\n    cv::Mat getReconstructedImage();\n\n    /**\n     * Reproject the map and compute the depth\n     *\n     * For each point, its depth is distributed in a patch around its projection\n     * in the current image accordingly to a gaussian scheme. The total depth is\n     * then normalized with the total sum of the weights used in each pixel.\n     * Each pixel with a value smaller then 0.1 is filled with the median depth\n     * value. Finally, a median filtering is performed.\n     *\n     * @param T from reference frame of the map to current frame\n     * @param _depthmap [output] resulting depth map\n     * @param virtual_cam whether to use or not super resolution\n     */\n    void reprojectDepthmap(const tf::Transform &T, cv::Mat &_depthmap,\n                           bool virtual_cam = false);\n\n    cv::Mat_<Gradient> grad;   ///< gradient map (2 channels of float)\n    cv::Mat_<Covariance> cov;  ///< gradient covariances (2x2 matrix stored in 4\n                               ///< channels of float)\n    cv::Mat depthmap;          ///< Dense Depthmap projected in Map Frame\n    cv::Mat image;             ///< Reconstructed Image\n   protected:\n    /* ROS */\n    ros::NodeHandle &nh_, &nhp_;\n    tf::TransformListener &tf_;\n    image_transport::ImageTransport it_;\n\n    Scalar R_;\n    float init_cov_;      ///< initial guess for the covariance of the EKF\n    size_t window_size_;  ///< window of events between EKF updates\n    size_t map_blur_;     ///< gaussian blur kernel size\n    float depth_median_;  ///< median scene depth\n\n    image_transport::Publisher pub_img_;    ///< @see publishImageReconstruction\n    image_transport::Publisher pub_depth_;  ///< @see publishDepthmap\n\n    ros::Time ts_ref_;  ///< reference timestamp, used to recover the pose and\n                        ///< re-construct the image\n\n    std::string frame_id_;  ///< camera transformation frame id, \"dvs_frame_id\"\n    std::string world_frame_id_;  ///< The root of the tf system\n\n    std::vector<cv::Point2d>\n        rectification_map_;  ///< @see precomputeRectificationMap\n\n    image_geometry::PinholeCameraModel c_;  ///< camera model\n    size_t w_;                              ///< image width\n    size_t h_;                              ///< image height\n    tf::Matrix3x3 K_;                       ///< intrinsic camera matrix\n    tf::Matrix3x3 KInv_;                    ///< inverse of K_\n\n    /* virtual camera -> super resolution s, param: \"super_resolution_factor */\n    size_t w_virt_;            ///< virtual camera width = s * w_\n    size_t h_virt_;            ///< virtual camera height = s * h_\n    tf::Matrix3x3 K_virt_;     ///< intrinsic camera matrix of virtual camera\n    tf::Matrix3x3 KInv_virt_;  ///< inverse of K_virt_\n\n    std::vector<tf::Vector3> map_;  ///< 3D Point Cloud for Depthmap\n\n    /**\n     * Performs the update step of the EKF (update grad, cov) for each pixel\n     *\n     *      ROS params:\n     *          dvs_frame_id) frame id of the estimated pose\n     *          world_frame_id) world frame id\n     *\n     * @param new_grad new gradient of the image\n     * @param t0 time of last update\n     * @param t1 time of current update\n     */\n    void update(const cv::Mat &new_grad, const ros::Time &t0,\n                const ros::Time &t1);\n\n    /**\n     * Computes values for rectification_map_, that maps the pixel values to\n     * their corresponding rectified. If outside boundaries (-1, -1) is used.\n     */\n    void precomputeRectificationMap();\n\n    /**\n     * Publishes image reconstruction\n     *\n     * Topic: \"dvs_reconstruction/image\"\n     *\n     * @see getReconstructedImage()\n     */\n    void publishImageReconstruction();\n\n    /**\n     * Publishes depthmap (normalized) with colormap: cv::COLORMAP_JET\n     *\n     * Topic: \"dvs_reconstruction/depthmap\"\n     *\n     * @param depth depthmap to publish\n     */\n    void publishDepthmap(const cv::Mat &depth);\n};\n\n#endif  // GRADIENT_ESTIMATION_H\n"
  },
  {
    "path": "dvs_reconstruction/include/dvs_reconstruction/poisson_solver/laplace.h",
    "content": "/*\n * ---------------------------------------------------------------------\n * Copyright (C) 2012, 2014 Tino Kluge (ttk448 at gmail.com)\n *\n *  This program is free software; you can redistribute it and/or\n *  modify it under the terms of the GNU General Public License\n *  as published by the Free Software Foundation; either version 2\n *  of the License, or (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n * ---------------------------------------------------------------------\n */\n\n#ifndef _laplace_h\n#define _laplace_h\n\n#include <cstdio>\n#include <cstdlib>\n#include <vector>\n#include <boost/multi_array.hpp>\n\n\n// 2d-array utility functions\n// ---------------------------\nnamespace arr\n{\n\n// helper function: [0,1] uniform random generator\ndouble runif();\n\n// fill vector with random values\nvoid runif(std::vector<double>& X);\n\n// fill 2d-array with random values\nvoid runif(boost::multi_array<double,2>& X);\n\n// L^2 difference between two 2d-arrays\n// allow_shift: removes a constant shift between 2 matrices,\n//    i.e.  comparing X[][] and Y[][] + (X[1][1]-Y[1][1])\n// ignore_corner: ignores all 4 corners, X[0][0], ...\ndouble diff(const boost::multi_array<double,2>& X,\n            const boost::multi_array<double,2>& Y,\n            bool allow_shift, bool ignore_corner);\n\n// L^2 difference between two vectors\ndouble diff(const std::vector<double>& X,\n            const std::vector<double>& Y,\n            bool allow_shift=false);\n\n// L^2 difference between vector and a constant\ndouble diff(const std::vector<double>& X, double c);\n\n\n// print the matrix\nvoid print(const boost::multi_array<double,2>& X);\n\n} // namespace arr\n\n\n\n\n// PDE functions (Laplace/Poisson)\n// -------------------------------\nnamespace pde\n{\n\nnamespace types\n{\n// boundary type\nenum boundary {\n   Dirichlet = 0,        // value fixed\n   Neumann   = 1,        // first derivative fixed\n};\n} // namespace types\n\n\n// sets the number of threads for the fftw solver\nint fftw_threads(int n);\n// cleans up memory used by fftw for threads\nvoid fftw_clean();\n\n\n// saves the 4 boundaries/edges of a 2-d array as individual vectors\n// note, the 4 corners/vertices are not saved and the resulting\n// vectors are of size n-2\nvoid get_boundary(std::vector<double>& bd1a, std::vector<double>& bd1b,\n                  std::vector<double>& bd2a, std::vector<double>& bd2b,\n                  const boost::multi_array<double,2>& X,\n                  double h1, double h2, types::boundary boundary);\n\n// set boundary of matrix X according to conditions\n// can either add boundaries to the array (resize), or overwrite the\n// current boundary values\n// boundary vectors shall not contain the 4 corners (vertices), ie need to\n// be of size n-2 of the resulting array\nvoid set_boundary(boost::multi_array<double,2>& X, double h1, double h2,\n                  const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n                  const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n                  pde::types::boundary boundary, bool add=false);\n// specialised version where all boundaries have the same value\nvoid set_boundary(boost::multi_array<double,2>& X, double h1, double h2,\n                  double bdvalue, types::boundary bdcond, bool add=false);\n\n// PDE functions to solve the discrete Poisson's Equation\n// ------------------------------------------------------\n\n// discrete Gradient operator on a uniform grid\n// given u(x,y), it returns DX = a_1 du/dx, DY = a_2 du/dy,\n// using one-sided finite differences\n// U[i][j]  = u(x_i, y_j), i=0...n-1\n// DX[i][j] = a1*(U[i+1][j]-U[i][j])/h, i=0...n-2\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2);\n// same as above, but the input U is assumed to contain only inner grid points\n// and the boundary grid points are inferred from the boundary condition\n// U[i][j] = u(x_i, y_j), i=0...n-1\n// DX[i][j] = a1*(U[i][j]-U[i-1][j])/h, i=0...n+1\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2,\n          const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n          const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n          types::boundary boundary);\n// simplified version where only one boundary value can be specified\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2,\n          double bdvalue, types::boundary bdcond);\n\n// discrete Divergence operator on a uniform grid\n// given u(x,y), v(x,y), it returns f = a_1 du/dx + a_2 dv/dx,\n// using one-sided finite differences\nvoid div(boost::multi_array<double,2>& F,\n         const boost::multi_array<double,2>& U,\n         const boost::multi_array<double,2>& V,\n         double a1, double a2, double h1, double h2);\n\n// discrete Laplace operator on a uniform grid\n// given u, it returns f = a_1 u_xx + a_2 u_yy\n// note, the Laplace operator can only be applied to inner grid points\n// and so the result F has two grid points less in each dimension, i.e.\n// U[i][j] = u(x_i, y_j)\n// F[i][j] = f(x_{i+1}, y_{i+1})\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2);\n// discrete Laplace operator on a uniform grid\n// the input U is assumed to contain only inner grid points and the\n// boundary grid points are inferred from the boundary condition\n// U[i][j] = u(x_i, y_j)\n// F[i][j] = f(x_i, y_i)\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2,\n             const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n             const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n             types::boundary boundary);\n// simplified version where only one boundary value can be specified\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2,\n             double bdvalue, types::boundary bdcond);\n\n// Neumann boundary condition with a general right hand side F will not\n// have a solution, however by looking at F we can say what the minimum\n// L2-norm error will be for 0-Neumann boundary conditions:\n// return = min ||Laplace U - F||\n// min is taken over all U consistent with 0-Neumann condition\ndouble neumann_error(const boost::multi_array<double,2>& F);\n\n// given a right hand side F, we can find a constant Neumann-boundary\n// value which will have a solution U, so that Laplace U = F,\n// returns the boundary value\ndouble neumann_compat(const boost::multi_array<double,2>& F,\n                      double a1, double a2, double h1, double h2);\n\n\n\n\n// solves the 2D Poisson equation: a1 u_xx + a2 u_yy = f\n//\n// discretised with uniform grid, x_{i+1} = x_i + h1, y_{i+1} = y_i + h2\n// input: rhs       F[i][j] = f(x_i, y_j)\n// output: solution  U[i][j] = u(x_i, y_j), ie only inner points by default\n//\n// boundary condition:\n// - lower and upper boundary in dimension 1: bd1a, bd1b\n// - lower and upper boundary in dimension 2: bd2a, bd2b\n// - e.g. bd1a[i] refers to U[-1][i]\ndouble poisolve( boost::multi_array<double,2>& U,\n                 const boost::multi_array<double,2>& F,\n                 double a1, double a2, double h1, double h2,\n                 const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n                 const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n                 types::boundary boundary, bool add_boundary_to_solution=false );\n// Poisson solver, assuming uniform boundary\ndouble poisolve(boost::multi_array<double,2>& U,\n                const boost::multi_array<double,2>& F,\n                double a1, double a2, double h1, double h2,\n                double bound_value,\n                types::boundary boundarycondition,\n                bool add_boundary_to_solution=false);\n\n} // namespace pde\n\n\n#endif /* _laplace_h */\n"
  },
  {
    "path": "dvs_reconstruction/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>dvs_reconstruction</name>\n  <version>0.0.1</version>\n  <description>\n    Implementation of DVS Reconstruction\n  </description>\n  <author>Timo Horstschaefer</author>\n  <license>tbd</license>\n  <maintainer email=\"mail@timo-horstschaefer.de\">Timo Horstschaefer</maintainer>\n  <maintainer email=\"aterpin@ethz.ch\">Antonio Terpin</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>cv_bridge</depend>\n  <depend>glog_catkin</depend>\n  <depend>gflags_catkin</depend>\n  <depend>image_geometry</depend>\n  <depend>camera_info_manager</depend>\n  <depend>pcl_ros</depend>\n  <depend>tf_conversions</depend>\n  <depend>eigen_conversions</depend>\n  <depend>image_transport</depend>\n  <depend>dvs_msgs</depend>\n  <depend>dvs_slam_msgs</depend>\n  <depend>evo_utils</depend>\n  \n\n  </package>\n"
  },
  {
    "path": "dvs_reconstruction/src/dvs_reconstruction_ros.cpp",
    "content": "#include <camera_info_manager/camera_info_manager.h>\n#include <dvs_msgs/EventArray.h>\n#include <pcl/conversions.h>\n#include <pcl/filters/voxel_grid.h>\n#include <pcl/registration/icp.h>\n#include <pcl_conversions/pcl_conversions.h>\n#include <ros/package.h>\n#include <sensor_msgs/CameraInfo.h>\n#include <sensor_msgs/PointCloud2.h>\n#include <std_msgs/Bool.h>\n#include <tf/tf.h>\n#include <tf/transform_listener.h>\n#include <tf_conversions/tf_eigen.h>\n\n#include <map>\n#include <opencv2/highgui/highgui.hpp>\n\n#include \"dvs_reconstruction/mosaic.hpp\"\n#include \"evo_utils/camera.hpp\"\n#include \"evo_utils/interpolation.hpp\"\n#include \"evo_utils/main.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\n/**\n * Node reconstructing images from events\n *\n * @see Mosaic\n */\nclass DvsReconstruction {\n   public:\n    DvsReconstruction(ros::NodeHandle& nh, ros::NodeHandle nh_private);\n\n   protected:\n    /* ROS */\n    ros::NodeHandle nh_;\n    ros::NodeHandle nhp_;\n\n    tf::TransformListener tf_;  ///< listen to camera poses, \"tf\"\n    std::string\n        frame_id_;  ///< camera transform frame id, ROS param: \"dvs_frame_id\"\n\n    ros::Subscriber event_sub_;           ///< listen to events, \"events\"\n    ros::Subscriber camera_info_sub_;     ///< @see cameraInfoCallback\n                                          ///< topic: \"camera_info\"\n    std::deque<dvs_msgs::Event> events_;  ///< incoming events\n    size_t events_for_reconstruction_;  ///< events required to reconstruct the\n                                        ///< image, \"events_for_reconstruction\"\n\n    ros::Subscriber map_sub_;                  ///< listen to map updates, \"map\"\n    pcl::PointCloud<pcl::PointXYZ>::Ptr map_;  ///< last published map\n\n    Mosaic mosaic_;\n\n    image_geometry::PinholeCameraModel c_;  ///< camera model\n\n    size_t cur_ev_ = 0;  ///< current event\n\n    /**\n     * Enqueue incoming events for later processing\n     *\n     * @param msg incoming events\n     */\n    void eventCallback(const dvs_msgs::EventArray::ConstPtr& msg);\n\n    /**\n     * Update camera info on first received message\n     *\n     * @param msg Message containing camera info\n     */\n    void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr& msg);\n\n    /**\n     * Update current stored map and perform reconstruction\n     *\n     * @param msg updated map\n     *\n     * @see doReconstruction\n     */\n    void mapCallback(const sensor_msgs::PointCloud2::ConstPtr& msg);\n\n    /**\n     * Compute the reconstruction using at most events_for_reconstruction_\n     * events.\n     *\n     * @see Mosaic::compute\n     */\n    void doReconstruction();\n\n   private:\n    std::string world_frame_id_;  ///< The root frame id of the tf system\n};\n\nvoid DvsReconstruction::cameraInfoCallback(\n    const sensor_msgs::CameraInfo::ConstPtr& msg) {\n    static bool got_camera_info = false;\n\n    if (!got_camera_info) {\n        c_.fromCameraInfo(*msg);\n        mosaic_.setCamModel(c_);\n\n        // Currently, done only once\n        got_camera_info = true;\n    }\n}\n\nDvsReconstruction::DvsReconstruction(ros::NodeHandle& nh,\n                                     ros::NodeHandle nh_private)\n    : nh_(nh),\n      nhp_(nh_private),\n      tf_(ros::Duration(1000.)),\n\n      map_(new pcl::PointCloud<pcl::PointXYZ>),\n      mosaic_(rpg_common_ros::param<float>(nh_private, \"sigma_m\", 100.),\n              rpg_common_ros::param<float>(nh_private, \"init_cov\", 10.),\n              rpg_common_ros::param<int>(nh_private, \"window_size\", 5000),\n              rpg_common_ros::param<int>(nh_private, \"map_blur\", 5), tf_, nh_,\n              nhp_) {\n    // Load camera calibration\n    c_ = evo_utils::camera::loadPinholeCamera(nh);\n    mosaic_.setCamModel(c_);\n\n    frame_id_ = rpg_common_ros::param(nh_, \"dvs_frame_id\", std::string(\"dvs\"));\n\n    // Setup Subscribers\n    event_sub_ =\n        nh_.subscribe(\"events\", 0, &DvsReconstruction::eventCallback, this);\n    map_sub_ = nh_.subscribe(\"map\", 0, &DvsReconstruction::mapCallback, this);\n    camera_info_sub_ = nh_.subscribe(\n        \"camera_info\", 1, &DvsReconstruction::cameraInfoCallback, this);\n    world_frame_id_ =\n        rpg_common_ros::param<std::string>(nh_, \"world_frame_id\", \"world\");\n}\n\nvoid DvsReconstruction::eventCallback(\n    const dvs_msgs::EventArray::ConstPtr& msg) {\n    for (const dvs_msgs::Event& e : msg->events) events_.push_back(e);\n}\n\nvoid DvsReconstruction::mapCallback(\n    const sensor_msgs::PointCloud2::ConstPtr& msg) {\n    // Convert to PCL\n    pcl::PointCloud<pcl::PointXYZ>::Ptr map(new pcl::PointCloud<pcl::PointXYZ>);\n    pcl::PCLPointCloud2 pcl_pc;\n    pcl_conversions::toPCL(*msg, pcl_pc);\n    pcl::fromPCLPointCloud2(pcl_pc, *map);\n\n    map_ = map;\n\n    doReconstruction();\n}\n\nvoid DvsReconstruction::doReconstruction() {\n    static const size_t events_for_reconstruction =\n        nhp_.param(\"events_for_reconstruction\", 100000);\n\n    // Advance event index\n    ros::Time t = pcl_conversions::fromPCL(map_->header.stamp);\n    while (cur_ev_ < events_.size() && events_[cur_ev_].ts < t) ++cur_ev_;\n\n    // Clear event queue\n    if (cur_ev_ > events_for_reconstruction) {\n        size_t remove_events = cur_ev_ - events_for_reconstruction;\n\n        events_.erase(events_.begin(), events_.begin() + remove_events);\n        cur_ev_ -= remove_events;\n    }\n\n    if (!tf_.canTransform(world_frame_id_, frame_id_, events_[0].ts) ||\n        !tf_.canTransform(world_frame_id_, frame_id_, events_[cur_ev_].ts))\n        return;\n\n    std::vector<dvs_msgs::Event> evs(events_.begin(),\n                                     events_.begin() + cur_ev_);\n    mosaic_.compute(evs, map_);\n}\n\nRPG_COMMON_MAIN {\n    ros::init(argc, argv, \"dvs_reconstruction\");\n\n    ros::NodeHandle nh;\n    ros::NodeHandle nh_private(\"~\");\n\n    DvsReconstruction test(nh, nh_private);\n    ros::spin();\n\n    return 0;\n}\n"
  },
  {
    "path": "dvs_reconstruction/src/mosaic.cpp",
    "content": "#include \"dvs_reconstruction/mosaic.hpp\"\n\n#include <cv_bridge/cv_bridge.h>\n#include <image_transport/image_transport.h>\n#include <tf/transform_listener.h>\n\n// #define MOSAIC_PERF\n\n#ifdef MOSAIC_PERF\n#include \"evo_utils/main.hpp\">\n#endif\n\n#include \"dvs_reconstruction/poisson_solver/laplace.h\"\n#include \"evo_utils/interpolation.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nMosaic::Mosaic(const float sigma_m, const float init_cov, int window_size,\n               int map_blur, tf::TransformListener &tf, ros::NodeHandle &nh,\n               ros::NodeHandle &nhp)\n    : nh_(nh),\n      nhp_(nhp),\n      tf_(tf),\n      it_(nh),\n      R_(sigma_m),\n      init_cov_(init_cov),\n      window_size_(window_size),\n      map_blur_(map_blur) {\n    frame_id_ = rpg_common_ros::param(nh_, \"dvs_frame_id\", std::string(\"dvs\"));\n    world_frame_id_ =\n        rpg_common_ros::param(nh_, \"world_frame_id\", std::string(\"world\"));\n}\n\nvoid Mosaic::setCamModel(image_geometry::PinholeCameraModel &c) {\n    static const float s = nhp_.param(\"super_resolution_factor\", 1.);\n    c_ = c;\n    K_ = tf::Matrix3x3(c.fx(), 0., c.cx(), 0., c.fy(), c.cy(), 0., 0., 1.);\n    KInv_ = K_.inverse();\n    w_ = c.fullResolution().width;\n    h_ = c.fullResolution().height;\n\n    K_virt_ = tf::Matrix3x3(s * c.fx(), 0., s * c.cx(), 0., s * c.fy(),\n                            s * c.cy(), 0., 0., 1.);\n    KInv_virt_ = K_virt_.inverse();\n    w_virt_ = s * c.fullResolution().width;\n    h_virt_ = s * c.fullResolution().height;\n\n    precomputeRectificationMap();\n}\n\nvoid Mosaic::compute(const std::vector<dvs_msgs::Event> &evs,\n                     const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &map) {\n    int pose_update_step = 500, map_update_step = 10000;\n\n    if (evs.size() == 0) return;\n\n    ros::Time t1 = ts_ref_ = evs.back().ts;\n\n    cv::Mat img(h_virt_, w_virt_, CV_32F, cv::Scalar(0.));\n    cv::Mat depth(h_, w_, CV_32F, cv::Scalar(0.));\n\n    tf::StampedTransform T;\n\n    // Convert Map\n    map_.clear();\n    for (size_t i = 0; i != map->size(); ++i) {\n        const pcl::PointXYZ &p = map->points[i];\n        map_.push_back(tf::Point(p.x, p.y, p.z));\n    }\n    tf::StampedTransform T_map;\n    tf_.waitForTransform(world_frame_id_, frame_id_, ts_ref_,\n                         ros::Duration(0.1));\n    tf_.lookupTransform(world_frame_id_, frame_id_, ts_ref_, T_map);\n    reprojectDepthmap(T_map, depthmap, true);\n    // publishDepthmap();\n\n    grad = cv::Mat_<cv::Vec2f>(h_virt_, w_virt_, cv::Vec2f(0., 0.));\n    cov = cv::Mat_<cv::Vec4f>(h_virt_, w_virt_,\n                              cv::Vec4f(init_cov_, 0., 0., init_cov_));\n\n#ifdef MOSAIC_PERF\n    TIMER_START(t1);\n#endif\n\n    for (size_t i = 0; i != evs.size(); ++i) {\n        int idx = evs.size() - 1 - i;\n        const dvs_msgs::Event &e = evs[idx];\n\n        if (i % map_update_step == 0) {\n            tf::StampedTransform T_map;\n            tf_.lookupTransform(world_frame_id_, frame_id_, evs[idx].ts, T_map);\n            reprojectDepthmap(T_map, depth);\n        }\n\n        if (i % pose_update_step == 0) {\n            tf_.lookupTransform(frame_id_, ts_ref_, frame_id_, evs[idx].ts,\n                                world_frame_id_, T);\n        }\n\n        if (i != 0 && ((i + 1) % window_size_ == 0)) {\n            update(img, e.ts, t1);\n            img = cv::Scalar(0.);\n            t1 = e.ts;\n        }\n\n        cv::Point2d px = rectification_map_[e.x + w_ * e.y];\n\n        if (px.x < 0) continue;\n\n        float z = depth.at<float>(px);\n\n        // Project Event on Map\n        tf::Point p(px.x, px.y, 1.);\n        p = T * (z * (KInv_ * p));\n\n        if (p.z() < 0.01f) continue;\n\n        p = K_virt_ * (p / p.z());\n\n        float pol = e.polarity ? +1 : -1;\n        evo_utils::interpolate::draw(img, p.x(), p.y(), pol);\n    }\n\n#ifdef MOSAIC_PERF\n    TIMER_STOP(t1, t2, duration);\n    LOG(INFO) << \"Duration: \" << duration << \" [ms]\";\n#endif\n\n    publishImageReconstruction();\n    publishDepthmap(depthmap);\n}\n\nvoid Mosaic::publishImageReconstruction() {\n    static image_transport::Publisher img_pub =\n        it_.advertise(\"dvs_reconstruction/image\", 1);\n\n    if (img_pub.getNumSubscribers() > 0) {\n        cv::Mat img = getReconstructedImage();\n        cv::convertScaleAbs(img, img, 255);\n\n        std_msgs::Header header;\n        header.stamp = ts_ref_;\n\n        sensor_msgs::ImagePtr msg =\n            cv_bridge::CvImage(header, \"mono8\", img).toImageMsg();\n        img_pub.publish(msg);\n    }\n}\n\nvoid Mosaic::publishDepthmap(const cv::Mat &depth) {\n    static image_transport::Publisher depth_pub =\n        it_.advertise(\"dvs_reconstruction/depthmap\", 1);\n\n    if (depth_pub.getNumSubscribers() > 0) {\n        cv::Mat img;\n        // cv::normalize(depthmap, img, 0, 255, cv::NORM_MINMAX);\n        cv::normalize(depth, img, 0, 255, cv::NORM_MINMAX);\n        cv::convertScaleAbs(img, img);\n        cv::applyColorMap(img, img, cv::COLORMAP_JET);\n        sensor_msgs::ImagePtr msg =\n            cv_bridge::CvImage(std_msgs::Header(), \"bgr8\", img).toImageMsg();\n        depth_pub.publish(msg);\n    }\n}\n\nvoid Mosaic::reprojectDepthmap(const tf::Transform &T, cv::Mat &_depthmap,\n                               bool virtual_cam) {\n    const tf::Matrix3x3 &K = virtual_cam ? K_virt_ : K_;\n    const size_t h_orig = virtual_cam ? h_virt_ : h_,\n                 w_orig = virtual_cam ? w_virt_ : w_,\n                 h = h_orig + map_blur_ - 1, w = w_orig + map_blur_ - 1;\n\n    cv::Mat weights(h, w, CV_32F, cv::Scalar(0.));\n    cv::Mat depth(h, w, CV_32F, cv::Scalar(0.));\n\n    cv::Mat kern, patch;\n\n    kern = cv::getGaussianKernel(map_blur_, 0., CV_32F);\n    kern = kern * kern.t();\n    tf::Transform TInv = T.inverse();\n\n    static std::vector<float> z_values;\n    z_values.clear();\n\n    for (size_t i = 0; i != map_.size(); ++i) {\n        tf::Vector3 p = TInv * map_[i];\n        float z = p.z();\n        z_values.push_back(z);\n\n        if (z < 0.01f) continue;\n\n        p = K * (p / z);\n        if (p.x() < map_blur_ / 2 || p.y() < map_blur_ / 2) continue;\n\n        size_t x = p.x() + .5f, y = p.y() + .5f;\n\n        if (x >= w_orig || y >= h_orig) continue;\n\n        patch = z * kern;\n\n        cv::Rect dst(x, y, map_blur_, map_blur_);\n        depth(dst) += patch;\n        weights(dst) += kern;\n    }\n\n    depth /= weights;\n\n    // Fill with Median Depth\n    std::nth_element(z_values.begin(), z_values.begin() + z_values.size() / 2,\n                     z_values.end());\n    depth_median_ = z_values[z_values.size() / 2];\n\n    for (size_t y = 0; y != h; ++y)\n        for (size_t x = 0; x != w; ++x)\n            if (depth.at<float>(y, x) < .1f)\n                depth.at<float>(y, x) = depth_median_;\n\n    cv::medianBlur(depth, depth, 3);\n\n    int b2 = map_blur_ / 2;\n    _depthmap = depth(cv::Rect(b2, b2, w_orig, h_orig)).clone();\n\n    //  display_image_normalized(_depthmap);\n}\n\ncv::Mat Mosaic::getAbsoluteGradient() {\n    cv::Mat img(grad.size(), CV_32F);\n\n    for (size_t y = 0; y != h_virt_; ++y)\n        for (size_t x = 0; x != w_virt_; ++x)\n            img.at<float>(y, x) = cv::norm(grad(y, x));\n\n    cv::normalize(img, img, 0, 1, cv::NORM_MINMAX);\n\n    return img;\n}\n\ncv::Mat Mosaic::getReconstructedImage() {\n    int w_ = grad.cols, h_ = grad.rows;\n    boost::multi_array<double, 2> F(boost::extents[h_][w_]);\n    boost::multi_array<double, 2> U;\n\n    // Calculate Second Derivative\n    for (int y = 0; y != h_ - 1; ++y)\n        for (int x = 0; x != w_ - 1; ++x) {\n            float uxx = grad(y, x + 1)[0] - grad(y, x)[0],\n                  vxx = grad(y + 1, x)[1] - grad(y, x)[1];\n            F[y][x] = uxx + vxx;\n        }\n    F[h_ - 1][w_ - 1] = 0.;\n\n    // Solve for M_xx + M_yy = F using Poisson solver,\n    // with constant intensity boundary conditions\n    double boundary = 0.;\n    pde::poisolve(U, F, 1., 1., 1., 1., boundary,\n                  pde::types::boundary::Dirichlet, false);\n\n    // Copy Multiarray to cv::Mat\n    cv::Mat img(h_, w_, CV_32F);\n    for (int y = 0; y != h_; ++y)\n        for (int x = 0; x != w_; ++x) img.at<float>(y, x) = U[y][x];\n\n    cv::normalize(img, img, 0, 1, cv::NORM_MINMAX);\n\n    return img;\n}\n\nvoid Mosaic::precomputeRectificationMap() {\n    for (size_t y = 0; y != h_; ++y)\n        for (size_t x = 0; x != w_; ++x) {\n            cv::Point2d p(c_.rectifyPoint(cv::Point2d(x, y)));\n            cv::Point2i p_i = p;\n\n            if (p_i.x < 0 || p_i.x >= (int)w_ || p_i.y < 0 || p_i.y >= (int)h_)\n                rectification_map_.push_back(cv::Point2d(-1, -1));\n            else\n                rectification_map_.push_back(p);\n        }\n}\n\nvoid Mosaic::update(const cv::Mat &new_grad, const ros::Time &t0,\n                    const ros::Time &t1) {\n    float min_grad = .0001;\n\n    tf::StampedTransform T0, T1;\n    tf_.lookupTransform(frame_id_, t0, frame_id_, ts_ref_, world_frame_id_, T0);\n    tf_.lookupTransform(frame_id_, t1, frame_id_, ts_ref_, world_frame_id_, T1);\n\n    for (size_t y = 0; y != h_virt_; ++y)\n        for (size_t x = 0; x != w_virt_; ++x) {\n            const Scalar &z = new_grad.at<float>(y, x);\n\n            if (std::abs(z(0, 0)) < min_grad) continue;\n\n            const float depth = depthmap.at<float>(y, x);\n\n            Gradient &g = grad(y, x);\n            Covariance &P = cov(y, x);\n\n            // Velocity\n            tf::Point p_ref = depth * (KInv_virt_ * tf::Point(x, y, 1.)),\n                      p0 = T0 * p_ref, p1 = T1 * p_ref;\n\n            if (p0.z() < 0.01f || p1.z() < 0.01f) continue;\n\n            p0 = K_virt_ * (p0 / p0.z());\n            p1 = K_virt_ * (p1 / p1.z());\n\n            const Velocity v(p0.x() - p1.x(), p0.y() - p1.y());\n\n            // EKF Update Equations\n            const cv::Matx12f dhdg = v.t();\n            const Scalar h = g.dot(v), nu = z - h, S = dhdg * P * dhdg.t() + R_;\n            const cv::Matx21f W = P * dhdg.t() * S.inv();\n\n            // Apply Update\n            g += W * nu;\n            P -= W * S * W.t();\n        }\n}\n"
  },
  {
    "path": "dvs_reconstruction/src/poisson_solver/laplace.cpp",
    "content": "/*\n * ---------------------------------------------------------------------\n * Copyright (C) 2012, 2014 Tino Kluge (ttk448 at gmail.com)\n *\n *  This program is free software; you can redistribute it and/or\n *  modify it under the terms of the GNU General Public License\n *  as published by the Free Software Foundation; either version 2\n *  of the License, or (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n * ---------------------------------------------------------------------\n */\n\n#include <cstdio>\n#include <cstdlib>\n#include <cmath>\n#include <boost/multi_array.hpp>\n#include <fftw3.h>\n#include \"dvs_reconstruction/poisson_solver/laplace.h\"\n\n#ifdef TIME_REPORT\n#include <time.h>\n#include <sys/time.h>\nnamespace pde\n{\n\ndouble stoptime(void)\n{\n   struct timeval t;\n   gettimeofday(&t,NULL);\n   return (double) t.tv_sec + t.tv_usec/1000000.0;\n}\n}\n#endif // TIME_REPORT\n\n\nnamespace\n{\n\n// convenience function: square\ninline double sqr(double x)\n{\n   return x*x;\n}\n\n} // namespace\n\n\n// 2d-array utility functions\n// --------------------------\nnamespace arr\n{\n\n// helper function: [0,1] uniform random generator\ndouble runif()\n{\n   return (double) rand()/(RAND_MAX+1.0);\n}\n// fill vector with random values\nvoid runif(std::vector<double>& X)\n{\n   size_t n=X.size();\n   for(size_t i=0; i<n; i++) {\n      X[i]=runif();\n   }\n}\n// fill 2d-array with random values\nvoid runif(boost::multi_array<double,2>& X)\n{\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         X[i][j]=runif();\n      }\n   }\n}\n\n// print the matrix\nvoid print(const boost::multi_array<double,2>& X)\n{\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         printf(\"%9.5f \", X[i][j]);\n      }\n      printf(\"\\n\");\n   }\n}\n\n// L^2 difference between two vectors\ndouble diff(const std::vector<double>& X,\n            const std::vector<double>& Y,\n            bool allow_shift)\n{\n\n   assert(X.size()==Y.size());\n   size_t n=X.size();\n\n   double c=0.0;\n   if(allow_shift) {\n      c=X[1]-Y[1];\n   }\n   double sum=0.0;\n   for(size_t i=0; i<n; i++) {\n      sum+=sqr(X[i]-Y[i]-c);\n   }\n   return sqrt(sum);\n}\n\n// L^2 difference between vector and a constant\ndouble diff(const std::vector<double>& X, double c)\n{\n   size_t n=X.size();\n   double sum=0.0;\n   for(size_t i=0; i<n; i++) {\n      sum+=sqr(X[i]-c);\n   }\n   return sqrt(sum);\n}\n\n// L^2 difference between two 2d-arrays\n// allow_shift: removes a constant shift between 2 matrices,\n//    i.e.  comparing X[][] and Y[][] + (X[1][1]-Y[1][1])\n// ignore_corner: ignores all 4 corners, X[0][0], ...\ndouble diff(const boost::multi_array<double,2>& X,\n            const boost::multi_array<double,2>& Y,\n            bool allow_shift, bool ignore_corner)\n{\n\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n\n   assert(Y.shape()[0]==n1 && n1>1);\n   assert(Y.shape()[1]==n2 && n2>1);\n\n   double c=0.0;\n   if(allow_shift) {\n      c=X[1][1]-Y[1][1];\n   }\n   double sum=0.0;\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         if( !(ignore_corner==true && (i==0 || i==n1-1) && (j==0 || j==n2-1)) )\n            sum+=sqr(X[i][j]-Y[i][j]-c);\n      }\n   }\n   return sqrt(sum);\n}\n\n} // namespace arr\n\n\n\n\nnamespace pde\n{\n\n\n// sets the number of threads for the fftw solver\nint fftw_threads(int n)\n{\n   int ret=fftw_init_threads();\n   fftw_plan_with_nthreads(n);\n   return ret;\n}\n// cleans up memory used by fftw for threads\nvoid fftw_clean()\n{\n   fftw_cleanup();\n   fftw_cleanup_threads();\n}\n\n// sets boundary vectors to a uniform value\nvoid set_boundary_to_uniform(\n   std::vector<double>& bd1a, std::vector<double>& bd1b,\n   std::vector<double>& bd2a, std::vector<double>& bd2b,\n   double value, size_t n1, size_t n2)\n{\n\n   bd1a.resize(n2);\n   bd1b.resize(n2);\n   bd2a.resize(n1);\n   bd2b.resize(n1);\n   for(size_t i=0; i<n2; i++) {\n      bd1a[i]=value;\n      bd1b[i]=value;\n   }\n   for(size_t i=0; i<n1; i++) {\n      bd2a[i]=value;\n      bd2b[i]=value;\n   }\n}\n\n// saves the 4 boundaries/edges of a 2-d array as individual vectors\n// note, the 4 corners/vertices are not saved and the resulting\n// vectors are of size n-2\nvoid get_boundary(std::vector<double>& bd1a, std::vector<double>& bd1b,\n                  std::vector<double>& bd2a, std::vector<double>& bd2b,\n                  const boost::multi_array<double,2>& X,\n                  double h1, double h2, types::boundary boundary)\n{\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n   assert(n1>2 && n2>2);\n\n   // allocating memory for boundary vectors\n   bd1a.resize(n2-2);\n   bd1b.resize(n2-2);\n   bd2a.resize(n1-2);\n   bd2b.resize(n1-2);\n\n   // reading boundary values\n   if(boundary==types::Dirichlet) {\n      for(size_t i=1; i<n2-1; i++) {\n         bd1a[i-1] = X[0][i];\n         bd1b[i-1] = X[n1-1][i];\n      }\n      for(size_t i=1; i<n1-1; i++) {\n         bd2a[i-1] = X[i][0];\n         bd2b[i-1] = X[i][n2-1];\n      }\n   } else if(boundary==types::Neumann) {\n      for(size_t i=1; i<n2-1; i++) {\n         bd1a[i-1] = (X[0][i]-X[2][i]) / (2.0*h1);\n         bd1b[i-1] = (X[n1-1][i]-X[n1-3][i]) / (2.0*h1);\n      }\n      for(size_t i=1; i<n1-1; i++) {\n         bd2a[i-1] = (X[i][0]-X[i][2]) / (2.0*h2);\n         bd2b[i-1] = (X[i][n2-1]-X[i][n2-3]) / (2.0*h2);\n      }\n   } else {\n      assert(false);\n   }\n}\n\n\n// set boundary of matrix X according to conditions\n// can either add boundaries to the array (resize), or overwrite the\n// current boundary values\n// boundary vectors shall not contain the 4 corners (vertices), ie need to\n// be of size n-2 of the resulting array\nvoid set_boundary(boost::multi_array<double,2>& X, double h1, double h2,\n                  const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n                  const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n                  types::boundary boundary, bool add)\n{\n\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n   assert(n1>0 && n2>0);\n\n   if(add==true) {\n      // add boundary --> grow array\n      X.resize(boost::extents[n1+2][n2+2]);  // element preserving resize\n      n1=X.shape()[0];\n      n2=X.shape()[1];\n      // shifting numbers inside the array to make space for boundary\n      for(int i=n1-3; i>=0; i--) {\n         for(int j=n2-3; j>=0; j--) {\n            X[i+1][j+1]=X[i][j];\n         }\n      }\n   }\n\n   // check the boundary vectors are of the correct size\n   assert( bd1a.size()==bd1b.size() && bd1a.size()==n2-2 );\n   assert( bd2a.size()==bd2b.size() && bd2a.size()==n1-2 );\n\n   // setting boundary values\n   if(boundary==types::Dirichlet) {\n      for(int i=0; i<(int)n2; i++) {\n         // include corner cases, which are otherwise undetermined\n         int idx = std::min(std::max(i-1,0),(int)n2-3);\n         X[0][i]    = bd1a[idx];\n         X[n1-1][i] = bd1b[idx];\n      }\n      for(size_t i=1; i<n1-1; i++) {\n         X[i][0]    = bd2a[i-1];\n         X[i][n2-1] = bd2b[i-1];\n      }\n   } else if(boundary==types::Neumann) {\n      for(int i=0; i<(int)n2; i++) {\n         // include corner cases, which are otherwise undetermined\n         int idx = std::min(std::max(i-1,0),(int)n2-3);\n         X[0][i]    = X[2][i]    + 2.0*h1*bd1a[idx];\n         X[n1-1][i] = X[n1-3][i] + 2.0*h1*bd1b[idx];\n      }\n      for(size_t i=1; i<n1-1; i++) {\n         X[i][0]    = X[i][2]    + 2.0*h2*bd2a[i-1];\n         X[i][n2-1] = X[i][n2-3] + 2.0*h2*bd2b[i-1];\n      }\n   } else {\n      assert(false);\n   }\n}\n// specialised version where all boundaries have the same value\nvoid set_boundary(boost::multi_array<double,2>& X, double h1, double h2,\n                  double bdvalue, types::boundary bdcond, bool add)\n{\n   size_t n1=X.shape()[0];\n   size_t n2=X.shape()[1];\n   // set the correct size of the boundary vectors\n   size_t m1,m2;\n   if(add==true) {\n      m1=n1;\n      m2=n2;\n   } else {\n      assert(n1>=2 && n2>=2);\n      m1=n1-2;\n      m2=n2-2;\n   }\n   // fill boundary vectors\n   std::vector<double> bd1a,bd1b,bd2a,bd2b;\n   set_boundary_to_uniform(bd1a,bd1b,bd2a,bd2b,bdvalue,m1,m2);\n\n   // call the general routine\n   set_boundary(X,h1,h2,bd1a,bd1b,bd2a,bd2b,bdcond,add);\n}\n\n\n\n\n\n// PDE functions to solve the discrete Poisson's Equation\n// ------------------------------------------------------\n\n// discrete Gradient operator on a uniform grid\n// given u(x,y), it returns DX = a_1 du/dx, DY = a_2 du/dy,\n// using one-sided finite differences\n// U[i][j]  = u(x_i, y_j), i=0...n-1\n// DX[i][j] = a1*(U[i+1][j]-U[i][j])/h, i=0...n-2\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2)\n{\n   assert(U.shape()[0]>1 && U.shape()[1]>1);\n   size_t n1=U.shape()[0]-1;\n   size_t n2=U.shape()[1]-1;\n   DX.resize(boost::extents[n1][n2]);\n   DY.resize(boost::extents[n1][n2]);\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         DX[i][j] = (a1/h1) * (U[i+1][j]-U[i][j]);\n         DY[i][j] = (a2/h2) * (U[i][j+1]-U[i][j]);\n      }\n   }\n}\n// discrete Gradient operator on a uniform grid\n// same as above, but the input U is assumed to contain only inner grid points\n// and the boundary grid points are inferred from the boundary condition\n// U[i][j] = u(x_i, y_j), i=0...n-1\n// DX[i][j] = a1*(U[i][j]-U[i-1][j])/h, i=0...n+1\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2,\n          const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n          const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n          types::boundary boundary)\n{\n   // this is lazy and very memory inefficient\n   // TODO: replace with a direct calculation\n   boost::multi_array<double,2> V=U;\n   pde::set_boundary(V,h1,h2,bd1a,bd1b,bd2a,bd2b,boundary,true);\n   grad(DX,DY,V,a1,a2,h1,h2);\n}\n// simplified version where only one boundary value can be specified\nvoid grad(boost::multi_array<double,2>& DX, boost::multi_array<double,2>& DY,\n          const boost::multi_array<double,2>& U,\n          double a1, double a2, double h1, double h2,\n          double bdvalue, types::boundary bdcond)\n{\n   size_t n1=U.shape()[0];\n   size_t n2=U.shape()[1];\n\n   // fill boundary vectors\n   std::vector<double> bd1a,bd1b,bd2a,bd2b;\n   set_boundary_to_uniform(bd1a,bd1b,bd2a,bd2b,bdvalue,n1,n2);\n\n   // call the general routine\n   grad(DX,DY,U,a1,a2,h1,h2,bd1a,bd1b,bd2a,bd2b,bdcond);\n}\n\n// discrete Divergence operator on a uniform grid\n// given u(x,y), v(x,y), it returns f = a_1 du/dx + a_2 dv/dx,\n// using one-sided finite differences\nvoid div(boost::multi_array<double,2>& F,\n         const boost::multi_array<double,2>& U,\n         const boost::multi_array<double,2>& V,\n         double a1, double a2, double h1, double h2)\n{\n   assert(U.shape()[0]==V.shape()[0]);\n   assert(U.shape()[1]==V.shape()[1]);\n   assert(U.shape()[0]>1 && U.shape()[1]>1);\n   size_t n1=U.shape()[0]-1;\n   size_t n2=V.shape()[1]-1;\n   F.resize(boost::extents[n1][n2]);\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         F[i][j] = (a1/h1) * (U[i+1][j+1]-U[i][j+1])\n                   + (a2/h2) * (V[i+1][j+1]-V[i+1][j]);\n      }\n   }\n}\n\n// discrete Laplace operator on a uniform grid\n// given u, it returns f = a_1 u_xx + a_2 u_yy\n// note, the Laplace operator can only be applied to inner grid points\n// and so the result F has two grid points less in each dimension, i.e.\n// U[i][j] = u(x_i, y_j)\n// F[i][j] = f(x_{i+1}, y_{i+1})\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2)\n{\n   assert(U.shape()[0]>2 && U.shape()[1]>2);\n   size_t n1=U.shape()[0]-2;\n   size_t n2=U.shape()[1]-2;\n   F.resize(boost::extents[n1][n2]);\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         // index [i][j] in F corresponds to [i+1][j+1] in U\n         F[i][j] = a1 * (U[i][j+1] - 2.0*U[i+1][j+1] + U[i+2][j+1]) / (h1*h1)\n                   + a2 * (U[i+1][j] - 2.0*U[i+1][j+1] + U[i+1][j+2]) / (h2*h2);\n      }\n   }\n}\n// discrete Laplace operator on a uniform grid\n// the input U is assumed to contain only inner grid points and the\n// boundary grid points are inferred from the boundary condition\n// U[i][j] = u(x_i, y_j)\n// F[i][j] = f(x_i, y_i)\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2,\n             const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n             const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n             types::boundary boundary)\n{\n   size_t n1=U.shape()[0];\n   size_t n2=U.shape()[1];\n   assert(n1>0 && n2>0);\n   assert(bd1a.size()==bd1b.size() && bd1a.size()==n2);\n   assert(bd2a.size()==bd2b.size() && bd2a.size()==n1);\n\n   F.resize(boost::extents[n1][n2]);\n   for(int i=0; i<(int)n1; i++) {\n      for(int j=0; j<(int)n2; j++) {\n         double Um1, U0, Up1;       // U[i-1], U[i], U[i+1]\n\n         // first dimension\n         Um1 = U[std::max(i-1,0)][j];\n         U0  = U[i][j];\n         Up1 = U[std::min(i+1,(int)n1-1)][j];\n         if(i==0) {\n            if(boundary==types::Dirichlet) {\n               Um1 = bd1a[j];\n            } else if(boundary==types::Neumann) {\n               Um1 = U[1][j] + 2.0*h1*bd1a[j];\n            }\n         } else if(i==(int)n1-1) {\n            if(boundary==types::Dirichlet) {\n               Up1 = bd1b[j];\n            } else if(boundary==types::Neumann) {\n               Up1 = U[n1-2][j] + 2.0*h1*bd1b[j];\n            }\n         }\n         F[i][j] = a1 * (Um1 - 2.0*U0 + Up1) / (h1*h1);\n\n         // second dimension\n         Um1 = U[i][std::max(j-1,0)];\n         Up1 = U[i][std::min(j+1,(int)n2-1)];\n         if(j==0) {\n            if(boundary==types::Dirichlet) {\n               Um1 = bd2a[i];\n            } else if(boundary==types::Neumann) {\n               Um1 = U[i][1] + 2.0*h2*bd2a[i];\n            }\n         } else if(j==(int)n2-1) {\n            if(boundary==types::Dirichlet) {\n               Up1 = bd2b[i];\n            } else if(boundary==types::Neumann) {\n               Up1 = U[i][n2-2] + 2.0*h2*bd2b[i];\n            }\n         }\n         F[i][j] += a2 * (Um1 - 2.0*U0 + Up1) / (h2*h2);\n      }\n   }\n}\n// simplified version where only one boundary value can be specified\nvoid laplace(boost::multi_array<double,2>& F,\n             const boost::multi_array<double,2>& U,\n             double a1, double a2, double h1, double h2,\n             double bdvalue, types::boundary bdcond)\n{\n\n   size_t n1=U.shape()[0];\n   size_t n2=U.shape()[1];\n   assert(n1>0 && n2>0);\n\n   // fill boundary vectors\n   std::vector<double> bd1a,bd1b,bd2a,bd2b;\n   set_boundary_to_uniform(bd1a,bd1b,bd2a,bd2b,bdvalue,n1,n2);\n\n   // call the general routine\n   laplace(F,U,a1,a2,h1,h2,bd1a,bd1b,bd2a,bd2b,bdcond);\n}\n\n// Neumann boundary condition with a general right hand side F will not\n// have a solution, however by looking at F we can say what the minimum\n// L2-norm error will be for 0-Neumann boundary conditions:\n// return = min ||Laplace U - F||\n// min is taken over all U consistent with 0-Neumann condition\ndouble neumann_error(const boost::multi_array<double,2>& F)\n{\n   size_t n1=F.shape()[0];\n   size_t n2=F.shape()[1];\n   assert(n1>1 && n2>1);\n\n   // assuming 0 boundary conditions, otherwise would have to adjust\n   // right hand side F as in poisolve()\n\n   // calculate min L2 error ||Laplace U - F|| = |\\hat F[0]| * ||EV[0]||\n   // where \\hat F, are the coordinates of F in EV-space,\n   // and can simply be calculated as follows\n   double sum=0.0;\n   double fac=1.0;\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         fac=1.0;\n         if(j==0 || j==n2-1)\n            fac*=0.5;\n         if(i==0 || i==n1-1)\n            fac*=0.5;\n         sum+=fac*F[i][j];\n      }\n   }\n   double F00 = sum/((n1-1)*(n2-1));      // \\hat F [0][0] (EV space)\n   double norm_ev=sqrt((double)(n1*n2));  // EV[0]=(1,...,1) --> norm=sqrt(n)\n   double l2_error=F00*norm_ev;\n   return l2_error;\n}\n\n// given a right hand side F, we can find a constant Neumann-boundary\n// value which will have a solution U, so that Laplace U = F,\n// returns the boundary value\ndouble neumann_compat(const boost::multi_array<double,2>& F,\n                      double a1, double a2, double h1, double h2)\n{\n   size_t n1=F.shape()[0];\n   size_t n2=F.shape()[1];\n\n   double l2_error=neumann_error(F);\n   double norm_ev=sqrt((double)(n1*n2));  // EV[0]=(1,...,1) --> norm=sqrt(n)\n   double F00 = l2_error/norm_ev;         // \\hat F [0][0] (EV space)\n\n   // with non-zero Neumann boundary condition, rhs F is modified,\n   // as in poisolve(), so we can calculate the exact boundary\n   // value to make the l2_error zero\n   double bd = F00 / (2.0*a1/(h1*(n1-1)) + 2.0*a2/(h2*(n2-1)));\n\n   return bd;\n}\n\n\n\n\n// solves the 2D Poisson equation: a1 u_xx + a2 u_yy = f\n//\n// discretised with uniform grid, x_{i+1} = x_i + h1, y_{i+1} = y_i + h2\n// input: rhs       F[i][j] = f(x_i, y_j)\n// output: solution  U[i][j] = u(x_i, y_j), ie only inner points by default\n//\n//\n//\n// boundary condition:\n// - lower and upper boundary in dimension 1: bd1a, bd1b\n// - lower and upper boundary in dimension 2: bd2a, bd2b\n// - e.g. bd1a[i] refers to U[-1][i]\ndouble poisolve( boost::multi_array<double,2>& U,\n                 const boost::multi_array<double,2>& F,\n                 double a1, double a2, double h1, double h2,\n                 const std::vector<double>& bd1a, const std::vector<double>& bd1b,\n                 const std::vector<double>& bd2a, const std::vector<double>& bd2b,\n                 types::boundary boundary, bool add_boundary_to_solution)\n{\n\n#ifdef TIME_REPORT\n   double t0=stoptime();\n   double t1=t0;\n   double t2;\n#endif\n\n   size_t n1=F.shape()[0];\n   size_t n2=F.shape()[1];\n   assert(n1>0 && n2>0);\n\n\n   // adjust right hand side F with boundary condition (nothing to do for =0)\n   boost::multi_array<double,2> rhs = F;\n   assert( bd1a.size()==bd1b.size() && bd1a.size()==n2 );\n   assert( bd2a.size()==bd2b.size() && bd2a.size()==n1 );\n   {\n      // factors for boundary adjustment to rhs\n      double c1 = 0.0, c2 = 0.0;\n      if(boundary==types::Dirichlet) {\n         c1=a1/sqr(h1);\n         c2=a2/sqr(h2);\n      } else if(boundary==types::Neumann) {\n         c1=2.0*a1/h1;\n         c2=2.0*a2/h2;\n      } else {\n         assert(false);\n      }\n      // adjust rhs with boundary conditions\n      for(size_t i=0; i<n2; i++) {\n         rhs[0][i]    -= c1 * bd1a[i];\n         rhs[n1-1][i] -= c1 * bd1b[i];\n      }\n      for(size_t i=0; i<n1; i++) {\n         rhs[i][0]    -= c2 * bd2a[i];\n         rhs[i][n2-1] -= c2 * bd2b[i];\n      }\n   }\n\n\n#ifdef TIME_REPORT\n   t2=stoptime();\n   printf(\"poisolve(): %5.0f ms: rhs boundary conditions\\n\",(t2-t1)*1000.0);\n   t1=t2;\n#endif\n\n\n   // transform rhs into EV space (inverse fft, in-place)\n   {\n      fftw_plan p;\n      double fft_norm=0.0;  // i.e. FFT(FFT(x)) = fft_norm * x\n\n      if(boundary==types::Dirichlet) {\n         // DST-I = FFTW_RODFT00 (note, additional factor of 2 in fftw)\n         p=fftw_plan_r2r_2d(n1, n2, &(rhs[0][0]), &(rhs[0][0]),\n                            FFTW_RODFT00, FFTW_RODFT00, FFTW_ESTIMATE);\n         fftw_execute(p);\n         fftw_destroy_plan(p);\n         fft_norm = 4.0*((n1+1)*(n2+1));\n\n      } else if(boundary==types::Neumann) {\n         // EV space is similar to DCT-I but without the factor of 1/2\n         // for the 1st and last element\n\n         // DCT-I = REDFT00 (note, additional factor of 2 in fftw)\n         // so that DCT-I*DCT-I = 2(n-1) I (and not the usual (n-1)/2)\n         p=fftw_plan_r2r_2d(n1, n2, &(rhs[0][0]), &(rhs[0][0]),\n                            FFTW_REDFT00, FFTW_REDFT00, FFTW_ESTIMATE);\n         fftw_execute(p);\n         fftw_destroy_plan(p);\n\n         for(size_t i=0; i<n1; i++) {\n            rhs[i][0]    *= 0.5;\n            rhs[i][n2-1] *= 0.5;\n         }\n         for(size_t j=0; j<n2; j++) {\n            rhs[0][j]    *= 0.5;\n            rhs[n1-1][j] *= 0.5;\n         }\n         fft_norm = 4.0*((n1-1)*(n2-1));\n\n      } else {\n         assert(false);\n      }\n      // scale so we get the inverse fft\n      for(size_t i=0; i<n1; i++) {\n         for(size_t j=0; j<n2; j++) {\n            rhs[i][j] *= (1.0/fft_norm);      // div is more expensive than mul\n         }\n      }\n   }\n\n\n#ifdef TIME_REPORT\n   t2=stoptime();\n   printf(\"poisolve(): %5.0f ms: rhs to EV space (inv fft)\\n\",(t2-t1)*1000.0);\n   t1=t2;\n#endif\n\n\n   // calculate eigenvalues of the linear operators L\n   std::vector<double> lambda1(n1);\n   std::vector<double> lambda2(n2);\n   if(boundary==types::Dirichlet) {\n      for(size_t i=0; i<n1; i++)\n         lambda1[i] = -4.0*sqr( sin((M_PI*(i+1))/(2.0*(n1+1))) );\n      for(size_t i=0; i<n2; i++)\n         lambda2[i] = -4.0*sqr( sin((M_PI*(i+1))/(2.0*(n2+1))) );\n   } else if(boundary==types::Neumann) {\n      for(size_t i=0; i<n1; i++)\n         lambda1[i] = -4.0*sqr( sin((M_PI*i)/(2.0*(n1-1))) );\n      for(size_t i=0; i<n2; i++)\n         lambda2[i] = -4.0*sqr( sin((M_PI*i)/(2.0*(n2-1))) );\n   } else {\n      assert(false);\n   }\n\n\n   // solve the equation for U in EV space\n   double error=0.0;\n   U.resize(boost::extents[n1][n2]);\n   for(size_t i=0; i<n1; i++) {\n      for(size_t j=0; j<n2; j++) {\n         double div = (a1*lambda1[i]/(h1*h1) + a2*lambda2[j]/(h2*h2));\n         if(div==0.0) {\n            // here we need rhs[i][j] == 0 or else there is no solution\n            // calculate the L2-norm of the error, need to know norm of EV\n            // we know div==0.0, only for Neumann and EV 0, ||EV[0]||^2=n\n            // however, since fftw has an extra factor 2, ||EV[0]||^2=4n\n            double norm_ev = 16.0*n1*n2;     // TODO: make this more general\n            error+=sqr(rhs[i][j])*norm_ev;\n            // U[i][j] is arbitrary here\n            U[i][j] = 0.0;\n         } else {\n            U[i][j] = rhs[i][j] / div;\n         }\n      }\n   }\n\n   // free rhs memory as it's no longer needed\n   rhs.resize(boost::extents[0][0]);\n\n#ifdef TIME_REPORT\n   t2=stoptime();\n   printf(\"poisolve(): %5.0f ms: solve equation in EV space\\n\",(t2-t1)*1000.0);\n   t1=t2;\n#endif\n\n\n   // transform U from EV space into canonical space (fft, in-place)\n   {\n      fftw_plan p = nullptr;\n\n      if(boundary==types::Dirichlet) {\n         // DST-I = FFTW_RODFT00 (note, additional factor of 2 in fftw)\n         // so that DST-I*DST-I = 2(n+1) I (and not the usual (n+1)/2)\n         p=fftw_plan_r2r_2d(n1, n2, &(U[0][0]), &(U[0][0]),\n                            FFTW_RODFT00, FFTW_RODFT00, FFTW_ESTIMATE);\n         fftw_execute(p);\n\n      } else if(boundary==types::Neumann) {\n         // EV space is similar to DCT-I but without the factor of 1/2\n         // for the 1st and last element\n\n         // apply factor 2\n         for(size_t i=0; i<n1; i++) {\n            U[i][0]    *= 2.0;\n            U[i][n2-1] *= 2.0;\n         }\n         for(size_t j=0; j<n2; j++) {\n            U[0][j]    *= 2.0;\n            U[n1-1][j] *= 2.0;\n         }\n         // DCT-I = REDFT00 (note, additional factor of 2 in fftw)\n         p=fftw_plan_r2r_2d(n1, n2, &(U[0][0]), &(U[0][0]),\n                            FFTW_REDFT00, FFTW_REDFT00, FFTW_ESTIMATE);\n         fftw_execute(p);\n\n      } else {\n         assert(false);\n      }\n      fftw_destroy_plan(p);\n   }\n\n#ifdef TIME_REPORT\n   t2=stoptime();\n   printf(\"poisolve(): %5.0f ms: solution to normal space (fft)\\n\",(t2-t1)*1000.0);\n   t1=t2;\n#endif\n\n   // by default, U only contains the inner grid points of the solution\n   // however, we can also add the boundary if needed (inefficient)\n   if(add_boundary_to_solution) {\n      set_boundary(U,h1,h2,bd1a,bd1b,bd2a,bd2b,boundary,true);\n   }\n\n#ifdef TIME_REPORT\n   t2=stoptime();\n   printf(\"poisolve(): %5.0f ms: total time\\n\", (t2-t0)*1000.0);\n#endif\n\n   return sqrt(error);\n}\n\n\n// Poisson solver, assuming uniform boundary\ndouble poisolve(boost::multi_array<double,2>& U,\n                const boost::multi_array<double,2>& F,\n                double a1, double a2, double h1, double h2,\n                double bound_value,\n                types::boundary boundarycondition,\n                bool add_boundary_to_solution)\n{\n\n   size_t n1=F.shape()[0];\n   size_t n2=F.shape()[1];\n\n   // fill boundary vectors\n   std::vector<double> bd1a,bd1b,bd2a,bd2b;\n   set_boundary_to_uniform(bd1a,bd1b,bd2a,bd2b,bound_value,n1,n2);\n\n   // call the general solver\n   return poisolve(U,F,a1,a2,h1,h2,bd1a,bd1b,bd2a,bd2b,\n                   boundarycondition,add_boundary_to_solution);\n}\n\n} // namespace pde\n\n\n"
  },
  {
    "path": "dvs_slam_msgs/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(dvs_slam_msgs)\n\n# search for everything we need to build the messages, dont forget the message_generation\nfind_package(catkin REQUIRED COMPONENTS\n  message_generation\n  std_msgs\n  geometry_msgs\n)\n\n# search for all msg files\nFILE(GLOB messages_to_build RELATIVE \"${CMAKE_CURRENT_SOURCE_DIR}/msg\"\n    \"${CMAKE_CURRENT_SOURCE_DIR}/msg/*.msg\")\n\n# notify catkin to look at the previously found msg files\nadd_message_files(\n  FILES\n  ${messages_to_build}\n)\n\n# build the header files from the msg files, and notify catkin about the dependencies\ngenerate_messages(\n  DEPENDENCIES\n  std_msgs\n  geometry_msgs\n)\n\n# export the dependencis of this package for who ever depends on us\ncatkin_package(\n  CATKIN_DEPENDS message_runtime std_msgs geometry_msgs\n)\n\ninclude_directories(\n  ${catkin_INCLUDE_DIRS}\n)\n\n"
  },
  {
    "path": "dvs_slam_msgs/msg/VoxelGrid.msg",
    "content": "# This message contains a stamped voxel grid (3D array containing\n# the number of votes for each voxel in a non-uniform, projective grid)\n\ngeometry_msgs/Pose T_w_ref             # Transformation from voxel grid coordinate system to world coordinate system\nstd_msgs/Float32MultiArray voxel_grid  # 3D array containing the number of votes for each cell\n"
  },
  {
    "path": "dvs_slam_msgs/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package>\n  <name>dvs_slam_msgs</name>\n  <version>0.0.0</version>\n  <description>Useful message types for DVS SLAM</description>\n  <maintainer email=\"rebecq@ifi.uzh.ch\">Henri Rebecq</maintainer>\n  <license>GNU GPL</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n\n  <build_depend>message_generation</build_depend>\n  <build_depend>std_msgs</build_depend>\n  <build_depend>geometry_msgs</build_depend>\n  \n  <run_depend>message_runtime</run_depend>\n  <run_depend>std_msgs</run_depend>\n  <run_depend>geometry_msgs</run_depend>\n  <run_depend>rosbag</run_depend>\n  \n</package>\n\n"
  },
  {
    "path": "dvs_tracking/CMakeLists.txt",
    "content": "project(dvs_tracking)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\nfind_package(Boost REQUIRED COMPONENTS system)\ninclude_directories(${Boost_INCLUDE_DIRS})\n\nfind_package(OpenCV REQUIRED)\ninclude_directories(${OpenCV_INCLUDE_DIRS})\n\nfind_package(PCL 1.7 REQUIRED)\ninclude_directories(${PCL_INCLUDE_DIRS})\n\n\n\n\n\nSET(CMAKE_BUILD_TYPE RelWithDebInfo) # Release, RelWithDebInfo)\nADD_DEFINITIONS(\n    -Wno-ignored-qualifiers\n)\n\nSET(CMAKE_CXX_FLAGS \"-pthread\")\nSET(CMAKE_CXX_FLAGS \"-D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable\")\n\nIF(DEFINED ENV{ARM_ARCHITECTURE})\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a\")\n  ADD_DEFINITIONS(-DHAVE_FAST_NEON)\nENDIF()\n\nIF(CMAKE_COMPILER_IS_GNUCC)\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++0x\")\nELSE()\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")\nENDIF()\n\nSET(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS} -O3 -fsee -fomit-frame-pointer -fno-signed-zeros -fno-math-errno -funroll-loops\")\n\n################################################################################\nset(HEADERS\n  include/dvs_tracking/dvs_tracking_nodelet.h\n\n  include/dvs_tracking/lk_se3.hpp\n  include/dvs_tracking/tracker.hpp\n  include/dvs_tracking/weight_functions.hpp\n)\n\nset(SOURCES\n  src/lk_se3.cpp\n  src/tracker.cpp\n)\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n# Nodes\n################################################################################\n\ncs_add_executable(dvs_tracking_ros src/dvs_tracking_ros.cpp)\ntarget_link_libraries(dvs_tracking_ros ${PROJECT_NAME}\n  ${OpenCV_LIBS}\n  ${PCL_LIBRARIES}\n)\n\ncs_add_library(dvs_tracking_nodelet src/dvs_tracking_nodelet.cpp)\ntarget_link_libraries(dvs_tracking_nodelet ${PROJECT_NAME})\n\n\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "dvs_tracking/dvs_tracking_nodelet.xml",
    "content": "<library path=\"libdvs_tracking_nodelet\">\n  <class name=\"dvs_tracking/DvsTrackingNodelet\"\n         type=\"DvsTrackingNodelet\"\n         base_class_type=\"nodelet::Nodelet\">\n    <description> \n      A nodelet wrapper for EVO tracker.\n    </description>\n  </class>\n</library>\n"
  },
  {
    "path": "dvs_tracking/include/dvs_tracking/dvs_tracking_nodelet.h",
    "content": "#pragma once\n\n#include <nodelet/nodelet.h>\n\n#include \"dvs_tracking/tracker.hpp\"\n\nclass DvsTrackingNodelet : public nodelet::Nodelet {\n   public:\n    virtual void onInit();\n\n   private:\n    Tracker* node_;\n};\n"
  },
  {
    "path": "dvs_tracking/include/dvs_tracking/lk_se3.hpp",
    "content": "#ifndef LK_SE3_H\n#define LK_SE3_H\n\n#include <dvs_msgs/Event.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <pcl/common/transforms.h>\n\n#include <Eigen/StdVector>\n#include <deque>\n#include <opencv2/core/core.hpp>\n#include <sophus/se3.hpp>\n\n/**\n * Generic LK tracker based on SE3\n */\nclass LKSE3 {\n    typedef Eigen::Matrix<float, 6, 6> Matrix6;\n    typedef Eigen::Matrix<float, 8, 8> Matrix8;\n    typedef Eigen::Matrix<float, 6, 1> Vector6;\n    typedef Eigen::Matrix<float, 8, 1> Vector8;\n\n   public:\n    /**\n     * Util structure to update the transformation, used to define the generic\n     * jacobian and store the bearing vector and the intensity value of the\n     * tracked frame\n     */\n    struct Keypoint {\n        EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n        Eigen::Vector3f P;  ///< bearing vector\n        float pixel_value;  ///< corresponding intensity value\n        Vector8 J;          ///< Jacobian of the trasformation to fit\n        Matrix6 JJt;        ///< J dot J^T\n\n        Keypoint(Eigen::Vector3f _P, float _pixel_value, Vector8 _J,\n                 Matrix6 _JJt)\n            : P(_P), pixel_value(_pixel_value), J(_J), JJt(_JJt) {}\n    };\n\n    typedef pcl::PointXYZ Point;\n    typedef pcl::PointCloud<Point> PointCloud;\n    typedef std::deque<dvs_msgs::Event> EventQueue;\n\n    typedef Sophus::SE3f SE3;\n\n   protected:\n    size_t batch_size_;      ///< number of keypoints processed together (batch)\n    size_t max_iterations_;  ///< maximum number of iterations during the\n                             ///< optimization step, @see updateTransformation,\n                             ///< drawEvents, drawEventsNN\n    size_t pyramid_levels_;  ///< number of levels in the image pyramid\n                             ///< TODO: This could also be done relying on\n                             ///< @see pyr_new_.size()\n    size_t batches_;         ///< number of batches\n                             ///< @see keypoints_, batches_size_\n\n    float weight_scale_trans_;  ///< weight update due to translational residual\n    float weight_scale_rot_;    ///< weight update due to rotational residual\n\n    int map_blur_;        ///< Blur value of map projected onto the img_ref_\n    float depth_median_;  ///< median depth in current scene (reference frame)\n\n    std::vector<Keypoint, Eigen::aligned_allocator<Keypoint> >\n        keypoints_;  ///< Keypoints in reference frame @see LKSE3::Keypoint\n    int n_visible_;  ///< Number of keypoints of the reference frame visible in\n                     ///< the current frame\n    float kf_visibility_;  ///< Percentage of keypoints of the reference frame\n                           ///< visible in the current frame\n    PointCloud::Ptr map_;  ///< Map (built in the reference keyframe c_ref_)\n    PointCloud::Ptr map_local_;  ///< Submap visible in the current frame\n\n    cv::Mat depth_ref_;             ///< Depth map in the reference keyframe\n    cv::Mat ref_img_;               ///< Image of the reference keyframe\n    cv::Mat new_img_;               ///< Current image\n    std::vector<cv::Mat> pyr_new_;  ///< Image pyramid of the new image\n\n    image_geometry::PinholeCameraModel c_;      // camera at the current frame\n    image_geometry::PinholeCameraModel c_ref_;  // camera at the reference frame\n    float fx_;       ///< image horizontal focal length\n    float fy_;       ///< image vertical focal length\n    float cx_;       ///< image horizontal principal point\n    float cy_;       ///< image vertical principal point\n    size_t width_;   ///< image width\n    size_t height_;  ///< image height\n    cv::Rect rect_;  ///< image container, width x height\n\n    // Poses\n    Eigen::Affine3f\n        T_world_kf_;  ///< Trasformation from keyframe to world frame\n    Eigen::Affine3f\n        T_kf_ref_;  ///< Trasformation from reference frame to keyframe\n    Eigen::Affine3f\n        T_ref_cam_;  ///< Trasformation from current frame to reference frame\n    Eigen::Affine3f\n        T_cur_ref_;  ///< Trasformation from reference frame to current frame\n\n    Eigen::VectorXf x_ = Vector6::Zero();  ///< Twist vector <-> T_cur_ref\n\n    /**\n     * Creates a new reference frame\n     *\n     * Project map onto the current reference frame (img_ref_), build local map\n     * (map_local_), evaluate quality of new reference frame (kf_visibility_,\n     * n_visible_), compute median depth of the scene (depth_median_) and\n     * precompute the data useful for the optimization in the tracking step.\n     *\n     * @see precomputeReferenceFrame\n     */\n    void projectMap();\n    /**\n     * Computes keypoints on the reference image ref_img_ to perform the KLT,\n     * with the Jacobian evaluated at each point of the transformation to fit\n     *\n     * @see LKSE3::Keypoint\n     */\n    void precomputeReferenceFrame();\n\n    /**\n     * Draws events given in rectified image (when visible after rectification)\n     * with bilinear interpolation\n     *\n     * @param ev_first iterator to first event in events container\n     * @param ev_last iterator representing end of events container (not last\n     * event!, e.g., vector.end())\n     * @param out [output] image containing events drawed within\n     *\n     * @see rect_, drawEventsNN\n     */\n    void drawEvents(EventQueue::iterator ev_first, EventQueue::iterator ev_last,\n                    cv::Mat &out);\n\n    /**\n     * Draws events given in rectified image (when visible after rectification)\n     *\n     * @param ev_first iterator to first event in events container\n     * @param ev_last iterator representing end of events container (not last\n     * event!, e.g., vector.end())\n     * @param out [output] image containing events drawed within\n     *\n     * @see rect_, drawEvents\n     */\n    void drawEventsNN(EventQueue::iterator ev_first,\n                      EventQueue::iterator ev_last, cv::Mat &out);\n\n    /**\n     * Updates transformation: one pass of stochastic gradient descent\n     *\n     * Remark: keypoints_ are already shuffled in precomputeReferenceFrame\n     *\n     * @param offset first keypoint to consider\n     * @param N number of keypoints to consider\n     * @param pyr_lvl level of the image pyramid\n     */\n    void updateTransformation(const int offset, const int N, size_t pyr_lvl);\n\n    /**\n     * Tracks frame updating the transformation at each pyramid_levels_ and for\n     * a maximum of max_iterations_\n     *\n     * @see updateTransformation\n     */\n    void trackFrame();\n};\n\n#endif  // LK_SE3_H\n"
  },
  {
    "path": "dvs_tracking/include/dvs_tracking/tracker.hpp",
    "content": "#ifndef TRACKER_H\n#define TRACKER_H\n\n#include <dvs_msgs/EventArray.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <image_transport/image_transport.h>\n#include <sensor_msgs/PointCloud2.h>\n#include <std_msgs/String.h>\n#include <tf/tf.h>\n#include <tf/transform_broadcaster.h>\n\n#include <mutex>\n\n#include \"dvs_tracking/lk_se3.hpp\"\n\n#define TRACKER_EVENT_HISTORY_SIZE \\\n    500000  // size of the history of events (already processed) to keep\n\n// #define TRACKING_LOST_RESET \\\n//     2000  // if defined, reset tracking when keypoints_.size() < 5000\n\n#define TRACKER_DEBUG_REFERENCE_IMAGE  // define this to start overlap thread\n// #define TRACKING_PERF  // define this to evaluate also the performances\n\n/**\n * Tracking node\n */\nclass Tracker : public LKSE3 {\n   public:\n    /**\n     *      ROS params passed to LKSE3:\n     *          batch_size) LKSE3::batch_size_\n     *              batch-gradient descent batch size\n     *          max_iterations) LKSE3::max_iterations_\n     *              maximum number of iterations in the optimization\n     *          map_blur) LKSE3::map_blur_\n     *              sigma of the gaussian filter applied to the reprojected map\n     *          pyramid_levels) LKSE3::pyramid_levels_\n     *              number of pyramid levels used in the KLT process\n     *          weight_scale_translation) LKSE3::weight_scale_translation_\n     *              weight used in the translation error\n     *          weight_scale_rotation) LKSE3::weight_scale_rotation_\n     *              weight used in the rotation error\n     *\n     * @param nh ROS node handle\n     * @param nh_private ROS private node handle\n     */\n    Tracker(ros::NodeHandle& nh, ros::NodeHandle nh_private);\n\n   private:\n    ros::NodeHandle nh_, nhp_;\n    image_transport::ImageTransport it_;\n    tf::Transformer tf_;\n    tf::TransformBroadcaster tf_pub_;\n\n    ros::Subscriber event_sub_;        ///< @see eventCallback\n                                       ///< topic: \"events\"\n    ros::Subscriber map_sub_;          ///< @see mapCallback\n                                       ///< topic: \"pointcloud\"\n    ros::Subscriber remote_sub_;       ///< @see remoteCallback\n                                       ///< topic: \"remote_key\"\n    ros::Subscriber tf_sub_;           ///< @see tfCallback\n                                       ///< topic: \"tf\"\n    ros::Subscriber camera_info_sub_;  ///< @see cameraInfoCallback\n                                       ///< topic: \"camera_info\"\n\n    ros::Publisher poses_pub_;  ///< @see publishPose\n                                ///< topic: \"evo/pose\"\n\n    std::string frame_id_;\n    std::string world_frame_id_;\n\n    bool idle_;  ///< whether the tracking is idle or active\n\n    EventQueue events_;  ///< already processed and to process events\n\n    size_t cur_ev_, kf_ev_, noise_rate_, frame_size_, step_size_, event_rate_;\n\n    std::vector<tf::StampedTransform> poses_;           // estimated poses\n    std::vector<tf::StampedTransform> poses_filtered_;  // median filtered poses\n\n    std::mutex data_mutex_;  ///< mutex to own when accessing data\n\n    bool auto_trigger_;\n\n    /**\n     * Stores incoming events and removes older ones\n     *\n     *     ROS params:\n     *          discard_events_when_idle) whether not to collect events when\n     * idle\n     *\n     * @param msg Message containing incoming events\n     */\n    void eventCallback(const dvs_msgs::EventArray::ConstPtr& msg);\n    /**\n     * Updates map_ with the new published point cloud\n     *\n     * @param msg Message containing the point cloud representing the new map\n     */\n    void mapCallback(const sensor_msgs::PointCloud2::ConstPtr& msg);\n    /**\n     * On remote command, initializes or resets\n     *\n     *      Commands:\n     *          switch) initialize\n     *          reset) reset\n     *          bootstrap) activate automatic startup procedure\n     *\n     * @see initialize, reset\n     */\n    void remoteCallback(const std_msgs::String::ConstPtr& msg);\n    /**\n     * Adds published transforms to the tf_ data structure\n     */\n    void tfCallback(const tf::tfMessagePtr& msgs);\n\n    /**\n     * Update camera info on callback\n     *\n     *\n     * topic: \"camera_info\"\n     *\n     * @param msg Camera info msg\n     */\n    void cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr& msg);\n\n    /**\n     * Initializes the transformations of LKSE3 and update the map\n     *\n     *     ROS params:\n     *         dvs_bootstrap_frame_id) get first pose from last published in\n     *              this frame\n     *\n     * @param ts Timestamp at which initialize the pose (last reliable pose)\n     *\n     * @see updateMap\n     */\n    void initialize(const ros::Time& ts);\n\n    /**\n     * Sets the tracker state to idle_ = true and clears variables\n     */\n    void reset();\n\n    /**\n     * If active, regularly estimates trajectory based on currently stored\n     * events\n     *\n     *     ROS params:\n     *         max_event_rate) events processed are randomly sampled so that\n     *              the rate is below this value\n     *         events_per_kf) events required for a new keyframe\n     *         frame_size) window of events considered\n     *         step_size) minimum number of new events to wait before a pose\n     *              update\n     *         noise_rate) if events rate is below this value, the frame is\n     *              skipped\n     *\n     *\n     * @see estimateTrajectory\n     */\n    void estimateTrajectory();\n\n    /**\n     * Set current frame as reference frame and project the map\n     *\n     *     ROS params:\n     *          min_map_size) minimum number of map points to proceed with the\n     *              update\n     *          min_n_keypoints) minimum number of extracted keypoints\n     *                  (LKSE3::keypoints_) required for a reliable tracking\n     *\n     * @see LKSE3::projectMap\n     */\n    void updateMap();\n\n    /**\n     * Get median filtered poses\n     *\n     *     ROS params:\n     *         pose_mean_filter_size) median filter size for the filtered\n     *              trajectory\n     *\n     * @param pose [output] median filtered pose\n     *\n     * @return true if the median filtering has been performed and the pose\n     * assigned, false otherwise\n     */\n    bool getFilteredPose(tf::StampedTransform& pose);\n\n    /**\n     * If active, regularly estimate trajectory based on currently stored events\n     *\n     * @see estimateTrajectory\n     */\n    void trackingThread();\n    /**\n     * Separates thread taking the event image (built by drawing the events\n     * received onto the image) and overlaying the points in the local map\n     *\n     *     ROS params:\n     *         event_map_overlap_rate) publishing rate of the thread\n     *         max_depth) maximum expected depth in the scene\n     *         min_depth) minimum expected depth in the scene\n     *\n     * topic: \"event_map_overlap\", where the image is published\n     */\n    void publishMapOverlapThread();\n    /**\n     * Publishes new median filtered pose, after building the last pose\n     *\n     * @see publishPose, getFilteredPose\n     */\n    void publishTF();\n\n    /**\n     * Publishes last pose in poses_\n     *\n     *     ROS params:\n     *         world_frame_id) world frame id\n     *         dvs_frame_id) frame id of the published pose\n     */\n    void publishPose();\n\n    /**\n     * Removes events to keep an history (already processed) of events at most\n     * long TRACKER_EVENT_HISTORY_SIZE.\n     */\n    void clearEventQueue();\n\n    /**\n     * Setup operations to be performed after dvs_cam_ has been loaded\n     *\n     *     ROS params:\n     *         virtual_width) voxel grid width\n     *         virtual_height) voxel grid height\n     *         fov_virtual_camera_deg) voxel grid fov\n     */\n    void postCameraLoaded();\n};\n\n#endif  // TRACKER_H\n"
  },
  {
    "path": "dvs_tracking/include/dvs_tracking/weight_functions.hpp",
    "content": "#ifndef WEIGHT_FUNCTIONS_HPP\n#define WEIGHT_FUNCTIONS_HPP\n\nnamespace weight_functions {\n\n#define WEIGHT_FUNCTIONS_TUKEY_B_SQUARE 21.95016201  // b = 4.6851\n/**\n * Tukey norm\n * @param error arguments of the norm\n *\n * @return Tukey norm evaluated at error\n */\nfloat Tukey(const float error) {\n    const float x_square = error * error;\n    if (x_square <= WEIGHT_FUNCTIONS_TUKEY_B_SQUARE) {\n        const float tmp = 1.0f - x_square / WEIGHT_FUNCTIONS_TUKEY_B_SQUARE;\n        return tmp * tmp;\n    } else {\n        return 0.0f;\n    }\n}\n\n#define WEIGHT_FUNCTIONS_HUBER_K 1.345\n/**\n * Huber norm\n * @param error arguments of the norm\n *\n * @return Huber norm evaluated at error\n */\nfloat Huber(const float error) {\n    const float abs_error = std::fabs(error);\n    return (abs_error < WEIGHT_FUNCTIONS_HUBER_K)\n               ? 1.0f\n               : WEIGHT_FUNCTIONS_HUBER_K / abs_error;\n}\n\n}  // namespace weight_functions\n\n#endif  // WEIGHT_FUNCTIONS_HPP\n"
  },
  {
    "path": "dvs_tracking/launch/desk.launch",
    "content": "<launch>\n    <arg name=\"auto_trigger\" default=\"true\"/>\n\n    <arg name=\"camera_name\" default=\"DAVIS-evo\" />\n    <arg name=\"bootstrap_image_topic\" default=\"/events/image_raw\" />\n    <arg name=\"events_topic\" default=\"/dvs/events\" />\n\n    <param name=\"camera_name\" value=\"$(arg camera_name)\" />\n    <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/$(arg camera_name).yaml\" />\n\n    <remap from=\"events\" to=\"$(arg events_topic)\" />\n    <remap from=\"remote_key\" to=\"/evo/remote_key\" />\n\n    <param name=\"world_frame_id\" value=\"/world\"/>\n    <param name=\"dvs_bootstrap_frame_id\" value=\"/camera_0\" />\n    <param name=\"dvs_frame_id\" value=\"/dvs_evo\" />\n\n    <!-- <remap from=\"camera_info\" to=\"/dvs/camera_info\" /> -->\n\n    <param name=\"min_depth\" value=\"0.4\" />\n    <param name=\"max_depth\" value=\"5\" />\n    <param name=\"num_depth_cells\" value=\"100\" />\n    \n    <!-- Angle of view of the DSI (cone) -->\n    <param name=\"fov_virtual_camera_deg\" value=\"80.0\" />\n    \n    <!-- Number of horizontal/vertical pixels in the DSI -->\n    <param name=\"virtual_width\" value=\"240\" />\n    <param name=\"virtual_height\" value=\"180\" />\n\n    <!-- SVO -->\n    <node pkg=\"svo_ros\" type=\"svo_node\" name=\"svo\" clear_params=\"true\" output=\"screen\" >\n        <param name=\"cam0_topic\" value=\"$(arg bootstrap_image_topic)\" type=\"str\" />\n        <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/ncamera/$(arg camera_name).yaml\" />\n        <rosparam file=\"$(find dvs_tracking)/parameters/svo_desk.yaml\" />\n        <param name=\"runlc\" value=\"false\" />\n    </node>\n    <node name=\"svo_gui\" pkg=\"rqt_gui\" type=\"rqt_gui\" args=\"-s rqt_svo.svo.Svo --args --topic svo\" />\n\n    <!-- Publish SVO pose to tf frame \"dvs_bootstrap_frame_id\" -->\n    <node name=\"pose_to_tf\" pkg=\"dvs_bootstrapping\" type=\"pose_to_tf.py\" output=\"screen\">\n        <param name=\"source_topic_name\" value=\"/svo/pose_cam/0\" />\n        <param name=\"relative_to_first_pose\" value=\"false\" />\n    </node>\n\n    <!-- Mapping -->\n    <node name=\"dvs_mapping\" pkg=\"dvs_mapping\" type=\"dvs_mapping_ros\" output=\"screen\">\n        <param name=\"adaptive_threshold_kernel_size\" value=\"5\" />\n        <param name=\"adaptive_threshold_c\" value=\"10\" />\n        <param name=\"voxel_filter_leaf_size\" value=\"0.01\" />\n        <param name=\"type_focus_measure\" value=\"0\" />\n        <param name=\"half_patchsize\" value=\"1\" />\n        <param name=\"median_filter_size\" value=\"15\" />\n        <param name=\"events_to_recreate_kf\" value=\"1000000\" />\n        <param name=\"skip_batches\" value=\"0\" />\n        <param name=\"radius_search\" value=\"0.2\" />\n        <param name=\"min_num_neighbors\" value=\"3\" />\n        <param name=\"min_batch_size\" value=\"20000\" />\n        <param name=\"frame_size\" value=\"2048\" />\n\n        <param name=\"min_num_neighbors_global_map\" value=\"5\"/>\n        <param name=\"radius_search_global_map\" value=\".05\"/>\n        <param name=\"accumulate_local_map_once_every\" value=\"20\"/>\n        <param name=\"global_point_cloud_skip_first\" value=\"3\"/>\n        \n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/>\n    </node>\n\n    <!-- Map expansion -->\n    <node name=\"trigger_map_expansion\" pkg=\"dvs_mapping\" type=\"trigger_map_expansion.py\" output=\"screen\" >\n        <remap from=\"remote_key\" to=\"evo/remote_key\" />\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n\n        <param name=\"visibility_threshold\" value=\"0.9\" />\n        <param name=\"coverage_threshold\" value=\"0.4\" />\n        <param name=\"baseline_threshold\" value=\"0.1\" />\n        <param name=\"rate\" value=\"1\" />\n        <param name=\"number_of_initial_maps_to_skip\" value=\"0\"/>\n    </node>\n\n    <!-- Tracking -->\n    <node name=\"dvs_tracking\" pkg=\"dvs_tracking\" type=\"dvs_tracking_ros\" required=\"true\" output=\"screen\">\n        <param name=\"discard_events_when_idle\" value=\"true\"/>\n        <param name=\"batch_size\"        value=\"500\" />\n        <param name=\"max_iterations\"    value=\"200\" />\n        <param name=\"pyramid_levels\"    value=\"2\" />\n        <param name=\"weight_scale\"   value=\"1.\" />\n        <param name=\"map_blur\"          value=\"3\" />\n        <param name=\"noise_rate\"        value=\"10000\" />\n        <param name=\"frame_size\"       value=\"5000\" />\n        <param name=\"step_size\"        value=\"15000\" />\n        <param name=\"max_event_rate\" value=\"4000000\" />\n        <param name=\"pose_mean_filter_size\"    value=\"5\" />\n        <param name=\"events_per_kf\"  value=\"100000\" />\n        <param name=\"event_map_overlap_rate\" value=\"15\" />\n\n        <param name=\"min_map_size\" value=\"0\"/>\n        <param name=\"min_n_keypoints\" value=\"0\"/>\n\n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/>\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n    </node>\n\n    <!-- Bootstrapping -->\n    <!-- <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_frontoplanar_ros\" output=\"screen\">\n        <param name=\"plane_distance\" value=\"1\"/>\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n        <param name=\"one_shot\" value=\"true\" />\n        <param name=\"radius_search\" value=\"0.1\" />\n        <param name=\"min_num_neighbors\" value=\"50\" /> -->\n    <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_ef_ros\" output=\"screen\">\n        <param name=\"rate_hz\" value=\"30\" />\n        \n        <param name=\"frame_size\" value=\"21000\" />\n        <param name=\"local_frame_size\" value=\"7500\"/>\n        <param name=\"min_step_size\" value=\"15000\"/>\n        <param name=\"events_offset\" value=\"0\"/>\n        <param name=\"events_scale_factor\" value=\"13.0\" />\n        <param name=\"motion_corrected_topic\" value=\"/events/image_raw\"/>\n        <param name=\"optical_flow_topic\" value=\"/evo/bootstrap/optical_flow\"/>\n        \n        <param name=\"enable_visualizations\" value=\"true\"/>\n        <param name=\"unwarp_estimate_n_it\" value=\"50\"/>\n        <param name=\"unwarp_estimate_eps\" value=\"0.001\"/>\n        <param name=\"unwarp_estimate_pyramid_lvls\" value=\"2\"/>\n\n        <param name=\"median_filtering\" value=\"false\"/>\n        <param name=\"median_filter_size\" value=\"3\" />\n        <param name=\"adaptive_thresholding\" value=\"false\"/>\n        <param name=\"activation_threshold_patch_size\" value=\"13\"/>\n        <param name=\"activation_threshold_min\" value=\"10\"/>\n\n        <param name=\"auto_trigger\" value=\"true\"/>\n    </node>\n\n    <!-- Image reconstruction -->\n    <!-- \n    <node name=\"dvs_reconstruction\"  pkg=\"dvs_reconstruction\" type=\"dvs_reconstruction_ros\" required=\"false\" output=\"screen\">\n        <param name=\"window_size\" value=\"5000\" />\n        <param name=\"sigma_m\"    value=\"10.0\" />\n        <param name=\"init_cov\"   value=\"10.0\" />\n        <param name=\"map_blur\"   value=\"15\" />\n\t    <remap from=\"map\" to=\"dvs_mapping/pointcloud\" />\n    </node> \n     -->\n    <node name=\"tf_to_camera_marker\" pkg=\"evo_utils\" type=\"tf_to_camera_markers.py\" output=\"screen\" >\n      <param name=\"marker_scale\" value=\"0.2\" />\n    </node>\n    \n    <node name=\"snakify\" pkg=\"evo_utils\" type=\"snakify.py\" output=\"screen\" >\n      <param name=\"length\" value=\"100000\" />\n    </node>\n    \n    <node name=\"rqt_evo\" pkg=\"rqt_evo\" type=\"rqt_evo\"></node> \n    \n    <!-- visualization -->\n    <node name=\"dvs_renderer_left\" pkg=\"dvs_renderer\" type=\"dvs_renderer\" output=\"screen\">\n        <param name=\"display_method\" value=\"red-blue\"/>\n        <remap from=\"events\" to=\"/dvs/events\" />\n        <remap from=\"dvs_rendering\" to=\"dvs_rendering\" />\n    </node>\n\n    <node type=\"rviz\" name=\"rviz\" pkg=\"rviz\" args=\"-d $(find dvs_tracking)/rviz/rosbag.rviz\" />\n    \n</launch>\n\n\n\n"
  },
  {
    "path": "dvs_tracking/launch/flyingroom.launch",
    "content": "<launch>\n    <arg name=\"auto_trigger\" default=\"true\"/>\n\n    <arg name=\"camera_name\" default=\"DAVIS-evo\" />\n    <arg name=\"bootstrap_image_topic\" default=\"/events/image_raw\" />\n    <arg name=\"events_topic\" default=\"/dvs/events\" />\n\n    <param name=\"camera_name\" value=\"$(arg camera_name)\" />\n    <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/$(arg camera_name).yaml\" />\n\n    <remap from=\"events\" to=\"$(arg events_topic)\" />\n    <remap from=\"remote_key\" to=\"/evo/remote_key\" />\n\n    <param name=\"world_frame_id\" value=\"/world\"/>\n    <param name=\"dvs_bootstrap_frame_id\" value=\"/camera_0\" />\n    <param name=\"dvs_frame_id\" value=\"/dvs_evo\" />\n\n    <!-- <remap from=\"camera_info\" to=\"/dvs/camera_info\" /> -->\n\n    <param name=\"min_depth\" value=\"0.4\" />\n    <param name=\"max_depth\" value=\"5\" />\n    <param name=\"num_depth_cells\" value=\"100\" />\n    \n    <!-- Angle of view of the DSI (cone) -->\n    <param name=\"fov_virtual_camera_deg\" value=\"80.0\" />\n    \n    <!-- Number of horizontal/vertical pixels in the DSI -->\n    <param name=\"virtual_width\" value=\"240\" />\n    <param name=\"virtual_height\" value=\"180\" />\n\n    <!-- SVO -->\n    <node pkg=\"svo_ros\" type=\"svo_node\" name=\"svo\" clear_params=\"true\" output=\"screen\" >\n        <param name=\"cam0_topic\" value=\"$(arg bootstrap_image_topic)\" type=\"str\" />\n        <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/ncamera/$(arg camera_name).yaml\" />\n        <rosparam file=\"$(find dvs_tracking)/parameters/svo_flyingroom.yaml\" />\n        <param name=\"runlc\" value=\"false\" />\n    </node>\n    <node name=\"svo_gui\" pkg=\"rqt_gui\" type=\"rqt_gui\" args=\"-s rqt_svo.svo.Svo --args --topic svo\" />\n\n    <!-- Publish SVO pose to tf frame \"dvs_bootstrap_frame_id\" -->\n    <node name=\"pose_to_tf\" pkg=\"dvs_bootstrapping\" type=\"pose_to_tf.py\" output=\"screen\">\n        <param name=\"source_topic_name\" value=\"/svo/pose_cam/0\" />\n        <param name=\"relative_to_first_pose\" value=\"false\" />\n    </node>\n\n    <!-- Mapping -->\n    <node name=\"dvs_mapping\" pkg=\"dvs_mapping\" type=\"dvs_mapping_ros\" output=\"screen\">\n        <param name=\"adaptive_threshold_kernel_size\" value=\"5\" />\n        <param name=\"adaptive_threshold_c\" value=\"7\" />\n        <param name=\"voxel_filter_leaf_size\" value=\"0.01\" />\n        <param name=\"type_focus_measure\" value=\"0\" />\n        <param name=\"half_patchsize\" value=\"1\" />\n        <param name=\"median_filter_size\" value=\"15\" />\n        <param name=\"events_to_recreate_kf\" value=\"1000000\" />\n        <param name=\"skip_batches\" value=\"0\" />\n        <param name=\"radius_search\" value=\"0.2\" />\n        <param name=\"min_num_neighbors\" value=\"2\" />\n        <param name=\"min_batch_size\" value=\"20000\" />\n        <param name=\"frame_size\" value=\"2048\" />\n\n        <param name=\"min_num_neighbors_global_map\" value=\"2\"/>\n        <param name=\"radius_search_global_map\" value=\".05\"/>\n        <param name=\"accumulate_local_map_once_every\" value=\"25\"/>\n        <param name=\"global_point_cloud_skip_first\" value=\"15\"/>\n        \n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/>\n    </node>\n\n    <!-- Map expansion -->\n    <node name=\"trigger_map_expansion\" pkg=\"dvs_mapping\" type=\"trigger_map_expansion.py\" output=\"screen\" >\n        <remap from=\"remote_key\" to=\"evo/remote_key\" />\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n\n        <param name=\"visibility_threshold\" value=\"0.9\" />\n        <param name=\"coverage_threshold\" value=\"0.4\" />\n        <param name=\"baseline_threshold\" value=\"0.1\" />\n        <param name=\"rate\" value=\"3\" />\n        <param name=\"number_of_initial_maps_to_skip\" value=\"0\"/>\n    </node>\n\n    <!-- Tracking -->\n    <node name=\"dvs_tracking\" pkg=\"dvs_tracking\" type=\"dvs_tracking_ros\" required=\"true\" output=\"screen\">\n        <param name=\"discard_events_when_idle\" value=\"true\"/>\n        <param name=\"batch_size\"        value=\"500\" />\n        <param name=\"max_iterations\"    value=\"200\" />\n        <param name=\"pyramid_levels\"    value=\"2\" />\n        <param name=\"weight_scale\"   value=\"1.\" />\n        <param name=\"map_blur\"          value=\"3\" />\n        <param name=\"noise_rate\"        value=\"10000\" />\n        <param name=\"frame_size\"       value=\"5000\" />\n        <param name=\"step_size\"        value=\"10000\" />\n        <param name=\"max_event_rate\" value=\"4000000\" />\n        <param name=\"pose_mean_filter_size\"    value=\"5\" />\n        <param name=\"events_per_kf\"  value=\"100000\" />\n        <param name=\"event_map_overlap_rate\" value=\"15\" />\n\n        <param name=\"min_map_size\" value=\"200\"/>\n        <param name=\"min_n_keypoints\" value=\"2000\"/>\n\n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/>\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n    </node>\n\n    <!-- Bootstrapping -->\n    <!-- <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_frontoplanar_ros\" output=\"screen\">\n        <param name=\"plane_distance\" value=\"1\"/>\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n        <param name=\"one_shot\" value=\"true\" />\n        <param name=\"radius_search\" value=\"0.1\" />\n        <param name=\"min_num_neighbors\" value=\"50\" /> -->\n    <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_ef_ros\" output=\"screen\">\n        <param name=\"rate_hz\" value=\"30\" />\n        \n        <param name=\"frame_size\" value=\"15000\" />\n        <param name=\"local_frame_size\" value=\"5000\"/>\n        <!-- <param name=\"frame_size\" value=\"20000\" />\n        <param name=\"local_frame_size\" value=\"7500\"/> -->\n        <param name=\"min_step_size\" value=\"15000\"/>\n        <param name=\"events_offset\" value=\"0\"/>\n        <param name=\"events_scale_factor\" value=\"4.0\" />\n        <param name=\"motion_corrected_topic\" value=\"/events/image_raw\"/>\n        <param name=\"optical_flow_topic\" value=\"/evo/bootstrap/optical_flow\"/>\n        \n        <param name=\"enable_visualizations\" value=\"true\"/>\n        <param name=\"unwarp_estimate_n_it\" value=\"75\"/>\n        <param name=\"unwarp_estimate_eps\" value=\"0.0001\"/>\n        <param name=\"unwarp_estimate_pyramid_lvls\" value=\"2\"/>\n\n        <param name=\"median_filtering\" value=\"false\"/>\n        <param name=\"median_filter_size\" value=\"1\" />\n        <param name=\"adaptive_thresholding\" value=\"true\"/>\n        <param name=\"activation_threshold_patch_size\" value=\"13\"/>\n        <param name=\"activation_threshold_min\" value=\"10\"/>\n\n        <param name=\"auto_trigger\" value=\"true\"/>\n    </node>\n\n    <!-- Image reconstruction -->\n    <!-- \n    <node name=\"dvs_reconstruction\"  pkg=\"dvs_reconstruction\" type=\"dvs_reconstruction_ros\" required=\"false\" output=\"screen\">\n        <param name=\"window_size\" value=\"5000\" />\n        <param name=\"sigma_m\"    value=\"10.0\" />\n        <param name=\"init_cov\"   value=\"10.0\" />\n        <param name=\"map_blur\"   value=\"15\" />\n\t    <remap from=\"map\" to=\"dvs_mapping/pointcloud\" />\n    </node> \n     -->\n    <node name=\"tf_to_camera_marker\" pkg=\"evo_utils\" type=\"tf_to_camera_markers.py\" output=\"screen\" >\n      <param name=\"marker_scale\" value=\"0.2\" />\n    </node>\n    \n    <node name=\"snakify\" pkg=\"evo_utils\" type=\"snakify.py\" output=\"screen\" >\n      <param name=\"length\" value=\"100000\" />\n    </node>\n    \n    <node name=\"rqt_evo\" pkg=\"rqt_evo\" type=\"rqt_evo\"></node> \n    \n    <!-- visualization -->\n    <node name=\"dvs_renderer_left\" pkg=\"dvs_renderer\" type=\"dvs_renderer\" output=\"screen\">\n        <param name=\"display_method\" value=\"red-blue\"/>\n        <remap from=\"events\" to=\"/dvs/events\" />\n        <remap from=\"dvs_rendering\" to=\"dvs_rendering\" />\n    </node>\n\n    <node type=\"rviz\" name=\"rviz\" pkg=\"rviz\" args=\"-d $(find dvs_tracking)/rviz/rosbag.rviz\" />\n    \n</launch>\n\n\n\n"
  },
  {
    "path": "dvs_tracking/launch/live.launch",
    "content": "<launch>\n    <arg name=\"auto_trigger\" default=\"true\"/> <!-- whether to automatic startup the pipeline at the first data received -->\n    <arg name=\"bootstrap_image_topic\" default=\"/events/image_raw\" /> <!-- dvs to use standard frames (relevant for svo-based bootstrapping )-->\n    <arg name=\"events_topic\" default=\"/dvs/events\" /> <!-- topic used by your sensor to output events -->\n\n    <arg name=\"camera_name\" default=\"DAVIS-ijrr\" /> <!-- name of the camera and of the calibration file -->\n    <param name=\"camera_name\" value=\"$(arg camera_name)\" />\n    <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/$(arg camera_name).yaml\" />\n\n    <remap from=\"events\" to=\"$(arg events_topic)\" /> <!-- remap to topic used by your sensor -->\n    <remap from=\"remote_key\" to=\"/evo/remote_key\" /> \n\n    <!-- <remap from=\"camera_info\" to=\"/dvs/camera_info\" /> -->\n\n    <param name=\"world_frame_id\" value=\"/world\"/>\n    <param name=\"dvs_bootstrap_frame_id\" value=\"/camera_0\" /> <!-- to substitute svo, change this with the frame published by your pipeline -->\n    <param name=\"dvs_frame_id\" value=\"/dvs_evo\" />\n\n    <!-- SVO: Comment this when using fronto-planar bootstrapping -->\n    <node pkg=\"svo_ros\" type=\"svo_node\" name=\"svo\" clear_params=\"true\" output=\"screen\" >\n        <param name=\"cam0_topic\" value=\"$(arg bootstrap_image_topic)\" type=\"str\" />\n        <param name=\"calib_file\" value=\"$(find dvs_tracking)/parameters/calib/ncamera/$(arg camera_name).yaml\" />\n        <rosparam file=\"$(find dvs_tracking)/parameters/svo_live.yaml\" />\n        <param name=\"runlc\" value=\"false\" />\n    </node>\n    <node name=\"svo_gui\" pkg=\"rqt_gui\" type=\"rqt_gui\" args=\"-s rqt_svo.svo.Svo --args --topic svo\" />\n\n    <!-- Publish SVO pose to tf frame \"dvs_bootstrap_frame_id\" -->\n    <node name=\"pose_to_tf\" pkg=\"dvs_bootstrapping\" type=\"pose_to_tf.py\" output=\"screen\">\n        <param name=\"source_topic_name\" value=\"/svo/pose_cam/0\" />\n        <param name=\"relative_to_first_pose\" value=\"false\" />\n    </node>\n\n    <!-- EVO: mapping + tracking -->\n    <param name=\"min_depth\" value=\"0.4\" /> <!-- voxel grid minimum depth -->\n    <param name=\"max_depth\" value=\"5\" /> <!-- voxel grid maximum depth -->\n    <param name=\"num_depth_cells\" value=\"100\" /> <!-- number of depth cells in which the depth axis is divided -->\n        \n    <!-- Angle of view of the DSI (cone) -->\n    <param name=\"fov_virtual_camera_deg\" value=\"80.0\" />\n        \n    <!-- Number of horizontal/vertical pixels in the DSI -->\n    <param name=\"virtual_width\" value=\"240\" />\n    <param name=\"virtual_height\" value=\"180\" />\n\n    <!-- Mapping module -->\n    <node name=\"dvs_mapping\" pkg=\"dvs_mapping\" type=\"dvs_mapping_ros\" output=\"screen\">\n        <param name=\"adaptive_threshold_kernel_size\" value=\"5\" /> <!-- size of the adaptive threshold filter -->\n        <param name=\"adaptive_threshold_c\" value=\"7\" /> <!-- constant offset of the adaptive thresholding -->\n        <param name=\"voxel_filter_leaf_size\" value=\"0.005\" /> <!-- voxel filter granularity -->\n        <param name=\"type_focus_measure\" value=\"0\" /> <!-- 0: Linf, 1: Contrast, 2: Gradient magnitude -->\n        <param name=\"half_patchsize\" value=\"1\" /> <!-- Only for focus measures 1 and 2 -->\n        <param name=\"median_filter_size\" value=\"15\" /> <!-- size of median filter on depthmap -->\n        <param name=\"events_to_recreate_kf\" value=\"1000000\" /> <!-- number of events considered when creating a new keyframe to center the pose of the voxel grid -->\n        <param name=\"skip_batches\" value=\"0\" /> <!-- skip_batches -->\n        <param name=\"radius_search\" value=\"0.2\" /> <!-- radius filter radius size -->\n        <param name=\"min_num_neighbors\" value=\"2\" /> <!-- minimum number of neighbors for radius filter -->\n        <param name=\"min_batch_size\" value=\"20000\" /> <!-- minimum number of new events required for a map update -->\n        <param name=\"frame_size\" value=\"4096\" /> <!-- number of events to aggregate when computing new map -->\n\n        <param name=\"min_num_neighbors_global_map\" value=\"2\"/> <!-- minimum number of neighbors for radius filter on global point cloud -->\n        <param name=\"radius_search_global_map\" value=\".05\"/> <!-- radius filter on global point cloud radius size -->\n        <param name=\"accumulate_local_map_once_every\" value=\"10\"/> <!-- 1 to accumulate all the local maps, n to acccumulate 1 every n -->\n        <param name=\"global_point_cloud_skip_first\" value=\"5\"/> <!-- number of local maps to skip when accumulating the global point cloud -->\n\n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/> <!-- whether to autotrigger the mapping thread at the first pose received -->\n    </node>\n        \n    <!-- Map expansion -->\n    <node name=\"trigger_map_expansion\" pkg=\"dvs_mapping\" type=\"trigger_map_expansion.py\" output=\"screen\" >\n        <remap from=\"remote_key\" to=\"evo/remote_key\" />\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n\n        <param name=\"visibility_threshold\" value=\"0.9\" /> <!-- visibility of the map below which the update is triggered -->\n        <param name=\"coverage_threshold\" value=\"0.4\" /> <!-- minimum amount of pixels covered by reprojected map threshold -->\n        <param name=\"baseline_threshold\" value=\"0.1\" /> <!-- baseline / mean depth ration above which the update is triggered -->\n        <param name=\"rate\" value=\"3\" /> <!-- rate at which the node checks whether an expansion is needed -->\n        <param name=\"number_of_initial_maps_to_skip\" value=\"0\"/> <!-- starts checking updates conditions after this number of maps -->\n    </node>\n\n    <!-- Tracking module -->\n    <node name=\"dvs_tracking\" pkg=\"dvs_tracking\" type=\"dvs_tracking_ros\" required=\"true\" output=\"screen\">\n        <param name=\"discard_events_when_idle\" value=\"true\"/> <!-- whether not to collect events when idle -->\n        <param name=\"batch_size\" value=\"500\" /> <!-- batch-gradient descent batch size -->\n        <param name=\"max_iterations\" value=\"150\" /> <!-- maximum number of iterations in the optimization -->\n        <param name=\"pyramid_levels\" value=\"2\" /> <!-- number of pyramid levels used in the KLT process -->\n        <param name=\"map_blur\" value=\"3\" /> <!-- sigma of the gaussian filter applied to the reprojected map -->\n        <param name=\"noise_rate\" value=\"10000\" /> <!-- if events rate is below this value, the frame is skipped -->\n        <param name=\"frame_size\" value=\"5000\" /> <!-- window of events considered -->\n        <param name=\"step_size\" value=\"15000\" /> <!-- minimum number of new events to wait before a pose update -->\n        <param name=\"max_event_rate\" value=\"4000000\" /> <!-- events processed are randomly sampled so that the rate is below this value -->\n        <param name=\"pose_mean_filter_size\" value=\"5\" /> <!-- median filter size (poses are median filtered) -->\n        <param name=\"events_per_kf\" value=\"100000\" /> <!-- events required for a new keyframe -->\n        <param name=\"event_map_overlap_rate\" value=\"15\" /> <!-- publishing rate of the visualizations -->\n\n        <param name=\"min_map_size\" value=\"0\"/> <!-- minimum number of map points to proceed with the update -->\n        <param name=\"min_n_keypoints\" value=\"0\"/> <!-- minimum number of extracted keypoints (LKSE3::keypoints_) required for a reliable tracking -->\n\n        <param name=\"auto_trigger\" value=\"$(arg auto_trigger)\"/> <!-- whether to autotrigger the tracking when a map is received -->\n        <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" />\n    </node>\n\n    <!-- Bootstrapping -->\n    <!-- To use fronto-planar bootstrapping, uncomment the next 6 lines and comment the seventh -->\n    <!-- <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_frontoplanar_ros\" output=\"screen\"> -->\n        <!-- <remap from=\"pointcloud\" to=\"dvs_mapping/pointcloud\" /> -->\n        <!-- <param name=\"plane_distance\" value=\"1\"/> --> <!-- distance at which the events frame is reprojected -->\n        <!-- <param name=\"one_shot\" value=\"true\" /> --> <!-- if true, publishes only a single map before turning idle -->\n        <!-- <param name=\"radius_search\" value=\"0.1\" /> --> <!-- radius size of radius filter -->\n        <!-- <param name=\"min_num_neighbors\" value=\"50\" /> --> <!-- minimum number of neighbors for radius filtering -->\n    <node name=\"dvs_bootstrapping\" pkg=\"dvs_bootstrapping\" type=\"dvs_bootstrapping_ef_ros\" output=\"screen\">\n        <param name=\"rate_hz\" value=\"30\" />\n        \n        <param name=\"frame_size\" value=\"10000\" /> <!-- number of events to aggregate in an events frame -->\n        <param name=\"local_frame_size\" value=\"5000\"/> <!-- size of the two batches of events used to compute the warp parameters -->\n        <param name=\"min_step_size\" value=\"5000\"/> <!-- minimum number of new events before next events frame -->\n        <param name=\"events_scale_factor\" value=\"4.0\" /> <!-- pixel intensity = sat(#events / events_scale_factor) -->\n        \n        <param name=\"enable_visualizations\" value=\"true\"/> <!-- whether to publish events frames and optical flow -->\n        <param name=\"motion_corrected_topic\" value=\"/events/image_raw\"/> <!-- topic of the published events frames -->\n        <param name=\"optical_flow_topic\" value=\"/evo/bootstrap/optical_flow\"/> <!-- topic under which the optical flow is published -->\n        \n        <param name=\"unwarp_estimate_n_it\" value=\"75\"/> <!-- maximum number of iterations to estimate homography -->\n        <param name=\"unwarp_estimate_eps\" value=\"0.0001\"/> <!-- homography estimation tolerance -->\n        <param name=\"unwarp_estimate_pyramid_lvls\" value=\"2\"/> <!-- pyramid levels used to estimate homography -->\n\n        <param name=\"median_filtering\" value=\"false\"/> <!-- whether to perform median filtering -->\n        <param name=\"median_filter_size\" value=\"1\" /> <!-- filter size -->\n        <param name=\"adaptive_thresholding\" value=\"true\"/> <!-- whether to perform adaptive thresholding -->\n        <param name=\"activation_threshold_patch_size\" value=\"13\"/> <!--\tfilter patch size -->\n        <param name=\"activation_threshold_min\" value=\"10\"/> <!-- minimum pixel intensity -->\n\n        <param name=\"auto_trigger\" value=\"true\"/> <!-- whether to immediately start the bootstrapping when receiving data -->\n    </node>\n    \n    <!-- Image reconstruction -->\n    <node name=\"dvs_reconstruction\"  pkg=\"dvs_reconstruction\" type=\"dvs_reconstruction_ros\" required=\"false\" output=\"screen\">\n        <param name=\"window_size\" value=\"5000\" /> <!-- window of events between EKF updates -->\n        <param name=\"sigma_m\"    value=\"10.0\" /> <!-- sigma for the EKF -->\n        <param name=\"init_cov\"   value=\"10.0\" /> <!-- initial guess for the covariance of the EKF -->\n        <param name=\"map_blur\"   value=\"15\" /> <!-- gaussian blur kernel size -->\n        <remap from=\"map\" to=\"dvs_mapping/pointcloud\" />\n    </node> \n    \n    <node name=\"tf_to_camera_marker\" pkg=\"evo_utils\" type=\"tf_to_camera_markers.py\" output=\"screen\" >\n      <param name=\"marker_scale\" value=\"0.2\" />\n    </node>\n    \n    <node name=\"snakify\" pkg=\"evo_utils\" type=\"snakify.py\" output=\"screen\" >\n      <param name=\"length\" value=\"100\" />\n    </node>\n    \n    <node name=\"rqt_evo\" pkg=\"rqt_evo\" type=\"rqt_evo\"></node> \n    \n    <!-- visualization -->\n    <node name=\"dvs_renderer_left\" pkg=\"dvs_renderer\" type=\"dvs_renderer\" output=\"screen\">\n        <param name=\"display_method\" value=\"red-blue\"/>\n        <remap from=\"events\" to=\"/dvs/events\" />\n        <remap from=\"dvs_rendering\" to=\"dvs_rendering\" />\n    </node>\n    <node type=\"rviz\" name=\"rviz\" pkg=\"rviz\" args=\"-d $(find dvs_tracking)/rviz/live.rviz\" />\n\n\n    \n</launch>\n\n\n\n"
  },
  {
    "path": "dvs_tracking/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>dvs_tracking</name>\n  <version>0.0.1</version>\n  <description>\n    Implementation of DVS tracker\n  </description>\n  <maintainer email=\"mail@timo-horstschaefer.de\">Timo Horstschaefer</maintainer>\n  <author>Timo Horstschaefer</author>\n  <license>tbd</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>nodelet</depend>\n  <depend>glog_catkin</depend>\n  <depend>gflags_catkin</depend>\n  <depend>image_geometry</depend>\n  <depend>camera_info_manager</depend>\n  <depend>pcl_ros</depend>\n  <depend>cv_bridge</depend>\n  <depend>tf_conversions</depend>\n  <depend>eigen_conversions</depend>\n  <depend>image_transport</depend>\n  <depend>minkindr</depend>\n  <depend>dvs_msgs</depend>\n  <depend>dvs_slam_msgs</depend>\n  <depend>dvs_reconstruction</depend>\n  <depend>evo_utils</depend>\n  <depend>svo_ros</depend>\n  <depend>dvs_mapping</depend>\n  <depend>dvs_bootstrapping</depend>\n  <depend>dvs_renderer</depend>\n  <depend>vikit_py</depend>\n  <depend>dvs_ros_driver</depend>\n  <depend>davis_ros_driver</depend>\n  <depend>rqt_evo</depend>\n  <depend>rqt_svo</depend>\n\n  <export>\n    <nodelet plugin=\"${prefix}/dvs_tracking_nodelet.xml\"/>\n  </export>\n\n  </package>\n"
  },
  {
    "path": "dvs_tracking/parameters/calib/DAVIS-evo.yaml",
    "content": "image_width: 240\nimage_height: 180\ncamera_name: DAVIS-evo\ncamera_matrix:\n  rows: 3\n  cols: 3\n  data:\n    [\n      197.3158535429064,\n      0.0,\n      128.19252018028914,\n      0.0,\n      197.24778002324712,\n      110.94875388538058,\n      0.0,\n      0.0,\n      1.0,\n    ]\ndistortion_model: plumb_bob\ndistortion_coefficients:\n  rows: 1\n  cols: 5\n  data:\n    [\n      -0.3687369041657594,\n      0.1635331561185621,\n      0.0006758841262625439,\n      -0.0014358423311193668,\n      0.0,\n    ]\nrectification_matrix:\n  rows: 3\n  cols: 3\n  data: [1, 0, 0, 0, 1, 0, 0, 0, 1]\nprojection_matrix:\n  rows: 3\n  cols: 4\n  data:\n    [\n      197.3158535429064,\n      0.0,\n      128.19252018028914,\n      0.0,\n      0.0,\n      197.24778002324712,\n      110.94875388538058,\n      0.0,\n      0.0,\n      0.0,\n      1.0,\n      0.0,\n    ]\n"
  },
  {
    "path": "dvs_tracking/parameters/calib/DAVIS-ijrr.yaml",
    "content": "image_width: 240\nimage_height: 180\ncamera_name: DAVIS-ijrr\ncamera_matrix:\n  rows: 3\n  cols: 3\n  data:\n    [\n      199.0923665423112,\n      0.0,\n      132.1920713777002,\n      0.0,\n      198.8288204700886,\n      110.7126600112956,\n      0.0,\n      0.0,\n      1.0,\n    ]\ndistortion_model: plumb_bob\ndistortion_coefficients:\n  rows: 1\n  cols: 5\n  data:\n    [\n      -0.3684363117977873,\n      0.1509472435566583,\n      -0.0002961305343848646,\n      -0.000759431726241032,\n      0.0,\n    ]\nrectification_matrix:\n  rows: 3\n  cols: 3\n  data: [1, 0, 0, 0, 1, 0, 0, 0, 1]\nprojection_matrix:\n  rows: 3\n  cols: 4\n  data:\n    [\n      168.6294097900391,\n      0.0,\n      135.348079770296,\n      0.0,\n      0.0,\n      178.5641784667969,\n      113.6189973794753,\n      0.0,\n      0.0,\n      0.0,\n      1.0,\n      0.0,\n    ]\n"
  },
  {
    "path": "dvs_tracking/parameters/calib/ncamera/DAVIS-evo.yaml",
    "content": "cameras:\n  - camera:\n      distortion:\n        parameters:\n          cols: 1\n          rows: 4\n          data: [0.0, 0.0, 0.0, 0.0] #[-0.3687369041657594, 0.1635331561185621, 0.0006758841262625439, -0.0014358423311193668, 0.0]\n        type: radial-tangential\n      image_height: 180\n      image_width: 240\n      intrinsics:\n        cols: 1\n        rows: 4\n        data:\n          [\n            197.3158535429064,\n            197.24778002324712,\n            128.19252018028914,\n            110.94875388538058,\n          ]\n      label: cam0\n      line-delay-nanoseconds: 0\n      type: pinhole\n    T_B_C:\n      cols: 4\n      rows: 4\n      data:\n        [\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n        ]\n    serial_no: DAVIS-EVO\n    calib_date: 21/05/2021\nlabel: DAVIS-EVO\n"
  },
  {
    "path": "dvs_tracking/parameters/calib/ncamera/DAVIS-ijrr.yaml",
    "content": "cameras:\n  - camera:\n      distortion:\n        parameters:\n          cols: 1\n          rows: 4\n          data: [0.0, 0.0, 0.0, 0.0] #[-0.3684363117977873, 0.1509472435566583, -0.0002961305343848646, -0.000759431726241032]\n        type: radial-tangential\n      image_height: 180\n      image_width: 240\n      intrinsics:\n        cols: 1\n        rows: 4\n        data:\n          [\n            199.0923665423112,\n            198.8288204700886,\n            132.1920713777002,\n            110.7126600112956,\n          ]\n      label: cam0\n      line-delay-nanoseconds: 0\n      type: pinhole\n    T_B_C:\n      cols: 4\n      rows: 4\n      data:\n        [\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n          0.0,\n          0.0,\n          0.0,\n          0.0,\n          1.0,\n        ]\n    serial_no: DAVIS-IJRR\n    calib_date: 02/10/2017\nlabel: DAVIS-IJRR\n"
  },
  {
    "path": "dvs_tracking/parameters/svo_desk.yaml",
    "content": "# Instructions:\n# - Most of the time you will just need to change the basic parameters.\n# - The parameters in this file are set for the resolution of 752x480.\n#   If you use a different resolution, change the parameters for\n#   each module according to the comments.\n\n############################\n##### Basic parameters #####\n############################\n\n# Pipeline type\npipeline_is_stereo: False\n\n# Feature and keyframe number\n# To run faster, you can decrease `max_fts` and `max_n_kfs`, for example:\n# max_fts: 120\n# max_n_kfs: 5\nmax_fts: 180\nmax_n_kfs: 30\n\n# Map scale when initialized (not used for stereo)\n# Increase if the initial scene depth is larger\nmap_scale: 0.6\n\n# Initial rotation\nT_world_imuinit/qx: 0\nT_world_imuinit/qy: 0\nT_world_imuinit/qz: 0\nT_world_imuinit/qw: 1\n\n# Keyframe selection\nkfselect_criterion: DOWNLOOKING # alterntive: DOWNLOOKING\n# The following kfselect_* ONLY affects FORWARD\n# If the number of features: >upper, no keyframe; <lower, take keyframe\nkfselect_numkfs_upper_thresh: 120\nkfselect_numkfs_lower_thresh: 70\n# If the current frame is within the following range of any visible keyframes,\n# do not take a new keyframe.\n# You can lower these values for more keyframes\nkfselect_min_dist_metric: 0.1\nkfselect_min_angle: 20\n# If the median disparity from the last keyframe is smaller,\n# do not take a new keyframe\n# You can lower this value for more keyframes\nkfselect_min_disparity: 30\n# When taking a new keyframe,\n# we can already update the newly initialized seeds with old keyframes.\n# This is important for forward looking case.\nupdate_seeds_with_old_keyframes: True\n\n# Default affine compensation parameters\n# Most of the parameters are set to false for the consideration of processing time.\n# If you observe bad tracking because of light/expousre change,\n# enable the following parameters.\nimg_align_est_illumination_gain: false\nimg_align_est_illumination_offset: false\ndepth_filter_affine_est_offset: true\ndepth_filter_affine_est_gain: false\nreprojector_affine_est_offset: true\nreprojector_affine_est_gain: false\n\n########################################\n###### Tuning for each module ##########\n########################################\n# Initialization\n# For a higher resolution, increase the value accordingly.\ninit_min_disparity: 25\n\n# Feature Detection\ngrid_size: 5 # Larger for larger images, for every cell you have max one feature.\nn_pyr_levels: 2 # Increase for larger images (image align max minus one)\ndetector_threshold_primary: 8 # Fast detector threshold\ndetector_threshold_secondary: 200 # Edgelet detector threshold\n\n# Image Alignment\nimg_align_max_level: 3 # Increase this level by one if the image is double the width and height (752x480).\nimg_align_min_level: 2\n\n# Reprojection\nuse_async_reprojectors: False # For stereo, change it to True for multithreading.\nreprojector_max_n_kfs: 5 # Local map size. Larger is computationally more intensive. More reduces drift.\nscan_epi_unit_sphere: False # for wide angle lens, set it to True.\n\n# Pose Optimization\nposeoptim_thresh: 2.0 # Reprojection outlier threshold (px), should be larger for larger images.\nposeoptim_using_unit_sphere: False # For wide angle lens, set it to True\n\n# Depth Filter\n# How many times does the covariance need to decrease until a seed is considered converged.\n# Increase to get more accurate points\nseed_convergence_sigma2_thresh: 100\n\n# IMU\n# Normally the prior should be 0 if not using IMU.\nuse_imu: False\nposeoptim_prior_lambda: 0.0 # Gyroscope prior in pose optimization\nimg_align_prior_lambda_rot: 0.0 # Gyroscope prior in sparse image alignment\nimg_align_prior_lambda_trans: 0.0 # Constant velocity assumption prior in sparse image alignment\n\n# Dense input\npublish_every_nth_dense_input: 5\n\n# Visualization\npublish_marker_scale: 0.5\n\n# Stereo parameters, not used for mono.\nmax_depth_inv: 0.05\nmin_depth_inv: 1.0\nmean_depth_inv: 0.3\n"
  },
  {
    "path": "dvs_tracking/parameters/svo_flyingroom.yaml",
    "content": "# Instructions:\n# - Most of the time you will just need to change the basic parameters.\n# - The parameters in this file are set for the resolution of 752x480.\n#   If you use a different resolution, change the parameters for\n#   each module according to the comments.\n\n############################\n##### Basic parameters #####\n############################\n\n# Pipeline type\npipeline_is_stereo: False\n\n# Feature and keyframe number\n# To run faster, you can decrease `max_fts` and `max_n_kfs`, for example:\n# max_fts: 120\n# max_n_kfs: 5\nmax_fts: 180\nmax_n_kfs: 30\n\n# Map scale when initialized (not used for stereo)\n# Increase if the initial scene depth is larger\nmap_scale: .6\n\n# Initial rotation\nT_world_imuinit/qx: 0\nT_world_imuinit/qy: 0\nT_world_imuinit/qz: 0\nT_world_imuinit/qw: 1\n\n# Keyframe selection\nkfselect_criterion: DOWNLOOKING # alterntive: DOWNLOOKING\n# The following kfselect_* ONLY affects FORWARD\n# If the number of features: >upper, no keyframe; <lower, take keyframe\nkfselect_numkfs_upper_thresh: 120\nkfselect_numkfs_lower_thresh: 70\n# If the current frame is within the following range of any visible keyframes,\n# do not take a new keyframe.\n# You can lower these values for more keyframes\nkfselect_min_dist_metric: 0.1\nkfselect_min_angle: 20\n# If the median disparity from the last keyframe is smaller,\n# do not take a new keyframe\n# You can lower this value for more keyframes\nkfselect_min_disparity: 30\n# When taking a new keyframe,\n# we can already update the newly initialized seeds with old keyframes.\n# This is important for forward looking case.\nupdate_seeds_with_old_keyframes: True\n\n# Default affine compensation parameters\n# Most of the parameters are set to false for the consideration of processing time.\n# If you observe bad tracking because of light/expousre change,\n# enable the following parameters.\nimg_align_est_illumination_gain: false\nimg_align_est_illumination_offset: false\ndepth_filter_affine_est_offset: true\ndepth_filter_affine_est_gain: false\nreprojector_affine_est_offset: true\nreprojector_affine_est_gain: false\n\n########################################\n###### Tuning for each module ##########\n########################################\n# Initialization\n# For a higher resolution, increase the value accordingly.\ninit_min_disparity: 25\n\n# Feature Detection\ngrid_size: 5 # Larger for larger images, for every cell you have max one feature.\nn_pyr_levels: 2 # Increase for larger images (image align max minus one)\ndetector_threshold_primary: 8 # Fast detector threshold\ndetector_threshold_secondary: 200 # Edgelet detector threshold\n\n# Image Alignment\nimg_align_max_level: 3 # Increase this level by one if the image is double the width and height (752x480).\nimg_align_min_level: 2\n\n# Reprojection\nuse_async_reprojectors: False # For stereo, change it to True for multithreading.\nreprojector_max_n_kfs: 5 # Local map size. Larger is computationally more intensive. More reduces drift.\nscan_epi_unit_sphere: False # for wide angle lens, set it to True.\n\n# Pose Optimization\nposeoptim_thresh: 2.0 # Reprojection outlier threshold (px), should be larger for larger images.\nposeoptim_using_unit_sphere: False # For wide angle lens, set it to True\n\n# Depth Filter\n# How many times does the covariance need to decrease until a seed is considered converged.\n# Increase to get more accurate points\nseed_convergence_sigma2_thresh: 100\n\n# IMU\n# Normally the prior should be 0 if not using IMU.\nuse_imu: False\nposeoptim_prior_lambda: 0.0 # Gyroscope prior in pose optimization\nimg_align_prior_lambda_rot: 0.0 # Gyroscope prior in sparse image alignment\nimg_align_prior_lambda_trans: 0.0 # Constant velocity assumption prior in sparse image alignment\n\n# Dense input\npublish_every_nth_dense_input: 5\n\n# Visualization\npublish_marker_scale: 0.5\n\n# Stereo parameters, not used for mono.\nmax_depth_inv: 0.05\nmin_depth_inv: 1.0\nmean_depth_inv: 0.3\n"
  },
  {
    "path": "dvs_tracking/parameters/svo_live.yaml",
    "content": "# Instructions:\n# - Most of the time you will just need to change the basic parameters.\n# - The parameters in this file are set for the resolution of 752x480.\n#   If you use a different resolution, change the parameters for\n#   each module according to the comments.\n\n############################\n##### Basic parameters #####\n############################\n\n# Pipeline type\npipeline_is_stereo: False\n\n# Feature and keyframe number\n# To run faster, you can decrease `max_fts` and `max_n_kfs`, for example:\n# max_fts: 120\n# max_n_kfs: 5\nmax_fts: 180\nmax_n_kfs: 30\n\n# Map scale when initialized (not used for stereo)\n# Increase if the initial scene depth is larger\nmap_scale: .6\n\n# Initial rotation\nT_world_imuinit/qx: 0\nT_world_imuinit/qy: 0\nT_world_imuinit/qz: 0\nT_world_imuinit/qw: 1\n\n# Keyframe selection\nkfselect_criterion: DOWNLOOKING # alterntive: DOWNLOOKING\n# The following kfselect_* ONLY affects FORWARD\n# If the number of features: >upper, no keyframe; <lower, take keyframe\nkfselect_numkfs_upper_thresh: 120\nkfselect_numkfs_lower_thresh: 70\n# If the current frame is within the following range of any visible keyframes,\n# do not take a new keyframe.\n# You can lower these values for more keyframes\nkfselect_min_dist_metric: 0.1\nkfselect_min_angle: 20\n# If the median disparity from the last keyframe is smaller,\n# do not take a new keyframe\n# You can lower this value for more keyframes\nkfselect_min_disparity: 30\n# When taking a new keyframe,\n# we can already update the newly initialized seeds with old keyframes.\n# This is important for forward looking case.\nupdate_seeds_with_old_keyframes: True\n\n# Default affine compensation parameters\n# Most of the parameters are set to false for the consideration of processing time.\n# If you observe bad tracking because of light/expousre change,\n# enable the following parameters.\nimg_align_est_illumination_gain: false\nimg_align_est_illumination_offset: false\ndepth_filter_affine_est_offset: true\ndepth_filter_affine_est_gain: false\nreprojector_affine_est_offset: true\nreprojector_affine_est_gain: false\n\n########################################\n###### Tuning for each module ##########\n########################################\n# Initialization\n# For a higher resolution, increase the value accordingly.\ninit_min_disparity: 25\n\n# Feature Detection\ngrid_size: 5 # Larger for larger images, for every cell you have max one feature.\nn_pyr_levels: 2 # Increase for larger images (image align max minus one)\ndetector_threshold_primary: 8 # Fast detector threshold\ndetector_threshold_secondary: 200 # Edgelet detector threshold\n\n# Image Alignment\nimg_align_max_level: 3 # Increase this level by one if the image is double the width and height (752x480).\nimg_align_min_level: 2\n\n# Reprojection\nuse_async_reprojectors: False # For stereo, change it to True for multithreading.\nreprojector_max_n_kfs: 5 # Local map size. Larger is computationally more intensive. More reduces drift.\nscan_epi_unit_sphere: False # for wide angle lens, set it to True.\n\n# Pose Optimization\nposeoptim_thresh: 2.0 # Reprojection outlier threshold (px), should be larger for larger images.\nposeoptim_using_unit_sphere: False # For wide angle lens, set it to True\n\n# Depth Filter\n# How many times does the covariance need to decrease until a seed is considered converged.\n# Increase to get more accurate points\nseed_convergence_sigma2_thresh: 100\n\n# IMU\n# Normally the prior should be 0 if not using IMU.\nuse_imu: False\nposeoptim_prior_lambda: 0.0 # Gyroscope prior in pose optimization\nimg_align_prior_lambda_rot: 0.0 # Gyroscope prior in sparse image alignment\nimg_align_prior_lambda_trans: 0.0 # Constant velocity assumption prior in sparse image alignment\n\n# Dense input\npublish_every_nth_dense_input: 5\n\n# Visualization\npublish_marker_scale: 0.5\n\n# Stereo parameters, not used for mono.\nmax_depth_inv: 0.05\nmin_depth_inv: 1.0\nmean_depth_inv: 0.3\n"
  },
  {
    "path": "dvs_tracking/rviz/live.rviz",
    "content": "Panels:\n  - Class: rviz/Displays\n    Help Height: 0\n    Name: Displays\n    Property Tree Widget:\n      Expanded:\n        - /TF1\n        - /TF1/Frames1\n        - /TF1/Tree1\n        - /EVO trajectory1\n        - /Events1\n      Splitter Ratio: 0.5\n    Tree Height: 242\n  - Class: rviz/Selection\n    Name: Selection\n  - Class: rviz/Tool Properties\n    Expanded:\n      - /2D Pose Estimate1\n      - /2D Nav Goal1\n      - /Publish Point1\n    Name: Tool Properties\n    Splitter Ratio: 0.5886790156364441\n  - Class: rviz/Views\n    Expanded:\n      - /Current View1\n    Name: Views\n    Splitter Ratio: 0.5\n  - Class: rviz/Time\n    Experimental: false\n    Name: Time\n    SyncMode: 0\n    SyncSource: \"\"\nPreferences:\n  PromptSaveOnExit: true\nToolbars:\n  toolButtonStyle: 2\nVisualization Manager:\n  Class: \"\"\n  Displays:\n    - Alpha: 0.5\n      Cell Size: 0.20000000298023224\n      Class: rviz/Grid\n      Color: 160; 160; 164\n      Enabled: false\n      Line Style:\n        Line Width: 0.029999999329447746\n        Value: Lines\n      Name: Grid\n      Normal Cell Count: 0\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Plane: XY\n      Plane Cell Count: 10\n      Reference Frame: <Fixed Frame>\n      Value: false\n    - Class: rviz/TF\n      Enabled: true\n      Frame Timeout: 15\n      Frames:\n        All Enabled: false\n      Marker Scale: 1\n      Name: TF\n      Show Arrows: false\n      Show Axes: true\n      Show Names: true\n      Tree:\n        {}\n      Update Interval: 0\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Bootstrap SVO\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Alpha: 1\n      Autocompute Intensity Bounds: true\n      Autocompute Value Bounds:\n        Max Value: 5.827364921569824\n        Min Value: 0.19853061437606812\n        Value: true\n      Axis: Z\n      Channel Name: intensity\n      Class: rviz/PointCloud2\n      Color: 136; 138; 133\n      Color Transformer: FlatColor\n      Decay Time: 0\n      Enabled: true\n      Invert Rainbow: false\n      Max Color: 255; 255; 255\n      Max Intensity: 999999\n      Min Color: 0; 0; 0\n      Min Intensity: -7092.31787109375\n      Name: PointCloud2\n      Position Transformer: XYZ\n      Queue Size: 10\n      Selectable: true\n      Size (Pixels): 3\n      Size (m): 0.009999999776482582\n      Style: Squares\n      Topic: /dvs_mapping/pointcloud_global\n      Unreliable: false\n      Use Fixed Frame: true\n      Use rainbow: true\n      Value: true\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /event_map_overlap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Tracking\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dsi/confidence\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: DSI\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /dvs/camera_marker\n      Name: EVO Camera\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: true\n    - Alpha: 1\n      Buffer Length: 1\n      Class: rviz/Path\n      Color: 0; 0; 0\n      Enabled: true\n      Head Diameter: 0.30000001192092896\n      Head Length: 0.20000000298023224\n      Length: 0.30000001192092896\n      Line Style: Billboards\n      Line Width: 0.004999999888241291\n      Name: EVO trajectory\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Pose Color: 255; 85; 255\n      Pose Style: None\n      Radius: 0.029999999329447746\n      Shaft Diameter: 0.10000000149011612\n      Shaft Length: 0.10000000149011612\n      Topic: /snake\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_reconstruction/image\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image reconstruction\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: SVO\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_rendering\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Events\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /only_events/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /only_events/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Events frame\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_reconstruction/depthmap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Dense depthmap\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /dvs_mapping/depthmap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Sparse depthmap\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_rendering\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_undistorted\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: DAVIS Frame\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Alpha: 1\n      Autocompute Intensity Bounds: true\n      Autocompute Value Bounds:\n        Max Value: 10\n        Min Value: -10\n        Value: true\n      Axis: Z\n      Channel Name: intensity\n      Class: rviz/PointCloud2\n      Color: 255; 255; 255\n      Color Transformer: Intensity\n      Decay Time: 0\n      Enabled: true\n      Invert Rainbow: false\n      Max Color: 255; 255; 255\n      Max Intensity: 2.3229734897613525\n      Min Color: 0; 0; 0\n      Min Intensity: 0.7008727788925171\n      Name: local_map\n      Position Transformer: XYZ\n      Queue Size: 10\n      Selectable: true\n      Size (Pixels): 3\n      Size (m): 0.009999999776482582\n      Style: Flat Squares\n      Topic: /dvs_mapping/pointcloud\n      Unreliable: false\n      Use Fixed Frame: true\n      Use rainbow: true\n      Value: true\n  Enabled: true\n  Global Options:\n    Background Color: 255; 255; 255\n    Default Light: true\n    Fixed Frame: world\n    Frame Rate: 30\n  Name: root\n  Tools:\n    - Class: rviz/Interact\n      Hide Inactive Objects: true\n    - Class: rviz/MoveCamera\n    - Class: rviz/Select\n    - Class: rviz/FocusCamera\n    - Class: rviz/Measure\n    - Class: rviz/SetInitialPose\n      Theta std deviation: 0.2617993950843811\n      Topic: /initialpose\n      X std deviation: 0.5\n      Y std deviation: 0.5\n    - Class: rviz/SetGoal\n      Topic: /move_base_simple/goal\n    - Class: rviz/PublishPoint\n      Single click: true\n      Topic: /clicked_point\n  Value: true\n  Views:\n    Current:\n      Class: rviz/Orbit\n      Distance: 4.098565578460693\n      Enable Stereo Rendering:\n        Stereo Eye Separation: 0.05999999865889549\n        Stereo Focal Distance: 1\n        Swap Stereo Eyes: false\n        Value: false\n      Focal Point:\n        X: 0.12023840844631195\n        Y: 0.726911187171936\n        Z: 0.3171095848083496\n      Focal Shape Fixed Size: true\n      Focal Shape Size: 0.05000000074505806\n      Invert Z Axis: false\n      Name: Current View\n      Near Clip Distance: 0.009999999776482582\n      Pitch: -1.5697963237762451\n      Target Frame: <Fixed Frame>\n      Value: Orbit (rviz)\n      Yaw: 5.103600025177002\n    Saved: ~\nWindow Geometry:\n  Bootstrap SVO:\n    collapsed: false\n  DAVIS Frame:\n    collapsed: false\n  DSI:\n    collapsed: false\n  Dense depthmap:\n    collapsed: false\n  Displays:\n    collapsed: false\n  Events:\n    collapsed: false\n  Events frame:\n    collapsed: false\n  Height: 1023\n  Hide Left Dock: false\n  Hide Right Dock: true\n  Image:\n    collapsed: false\n  Image reconstruction:\n    collapsed: false\n  QMainWindow State: 000000ff00000000fd000000040000000000000156000003a5fc0200000013fb0000001200530065006c0065006300740069006f006e000000003d000002b00000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000280049006d0061006700650020007200650063006f006e0073007400720075006300740069006f006e00000000f5000000b30000001600fffffffb0000000c004500760065006e00740073000000003d000001730000001600fffffffb000000100054007200610063006b0069006e0067010000003d000001420000001600fffffffb000000100044006900730070006c006100790073000000015e0000012f000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a0042006f006f007400730074007200610070002000530056004f0000000161000001320000001600fffffffb0000000a0049006d006100670065000000003d000002360000001600fffffffb0000001c00440065006e00730065002000640065007000740068006d00610070000000003d0000012e0000001600fffffffb0000001e005300700061007200730065002000640065007000740068006d006100700100000185000001490000001600fffffffb0000000600530056004f01000002d40000010e0000001600fffffffb0000000a0049006d00610067006500000001c2000000b10000001600fffffffb0000000a0049006d00610067006500000001c2000000b10000001600fffffffb0000000a0049006d0061006700650000000145000000770000001600ffffff000000010000010f000003dafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730000000028000003da000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b2000000000000000000000002000004df000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004df000001a0fc0100000008fb00000018004500760065006e007400730020006600720061006d006500000000d6000001850000008e00fffffffb00000016004400410056004900530020004600720061006d006500000001a2000000c60000008c00fffffffb0000000a0049006d00610067006501000000000000021c0000000000000000fb000000060044005300490000000283000002570000004b00fffffffb0000000a0049006d00610067006501000004ca000002750000000000000000fb0000000a0049006d00610067006501000004c9000002760000000000000000fb0000000800540069006d00650000000000000003ce000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000453000003a500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000\n  SVO:\n    collapsed: false\n  Selection:\n    collapsed: false\n  Sparse depthmap:\n    collapsed: false\n  Time:\n    collapsed: false\n  Tool Properties:\n    collapsed: false\n  Tracking:\n    collapsed: false\n  Views:\n    collapsed: true\n  Width: 1455\n  X: 67\n  Y: 27\n"
  },
  {
    "path": "dvs_tracking/rviz/rosbag.rviz",
    "content": "Panels:\n  - Class: rviz/Displays\n    Help Height: 0\n    Name: Displays\n    Property Tree Widget:\n      Expanded:\n        - /TF1\n        - /TF1/Frames1\n        - /TF1/Tree1\n        - /EVO trajectory1\n        - /Events1\n      Splitter Ratio: 0.5\n    Tree Height: 394\n  - Class: rviz/Selection\n    Name: Selection\n  - Class: rviz/Tool Properties\n    Expanded:\n      - /2D Pose Estimate1\n      - /2D Nav Goal1\n      - /Publish Point1\n    Name: Tool Properties\n    Splitter Ratio: 0.5886790156364441\n  - Class: rviz/Views\n    Expanded:\n      - /Current View1\n    Name: Views\n    Splitter Ratio: 0.5\n  - Class: rviz/Time\n    Experimental: false\n    Name: Time\n    SyncMode: 0\n    SyncSource: Sparse depthmap\nPreferences:\n  PromptSaveOnExit: true\nToolbars:\n  toolButtonStyle: 2\nVisualization Manager:\n  Class: \"\"\n  Displays:\n    - Alpha: 0.5\n      Cell Size: 0.20000000298023224\n      Class: rviz/Grid\n      Color: 160; 160; 164\n      Enabled: false\n      Line Style:\n        Line Width: 0.029999999329447746\n        Value: Lines\n      Name: Grid\n      Normal Cell Count: 0\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Plane: XY\n      Plane Cell Count: 10\n      Reference Frame: <Fixed Frame>\n      Value: false\n    - Class: rviz/TF\n      Enabled: true\n      Frame Timeout: 15\n      Frames:\n        All Enabled: false\n        cam_pos:\n          Value: false\n        camera_0:\n          Value: false\n        dvs_evo:\n          Value: true\n        dvs_evo_raw:\n          Value: false\n        world:\n          Value: false\n      Marker Scale: 1\n      Name: TF\n      Show Arrows: false\n      Show Axes: true\n      Show Names: true\n      Tree:\n        cam_pos:\n          world:\n            camera_0:\n              {}\n            dvs_evo:\n              {}\n            dvs_evo_raw:\n              {}\n      Update Interval: 0\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Bootstrap SVO\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Alpha: 1\n      Autocompute Intensity Bounds: true\n      Autocompute Value Bounds:\n        Max Value: 5.827364921569824\n        Min Value: 0.19853061437606812\n        Value: true\n      Axis: Z\n      Channel Name: intensity\n      Class: rviz/PointCloud2\n      Color: 136; 138; 133\n      Color Transformer: FlatColor\n      Decay Time: 0\n      Enabled: true\n      Invert Rainbow: false\n      Max Color: 255; 255; 255\n      Max Intensity: 999999\n      Min Color: 0; 0; 0\n      Min Intensity: -7092.31787109375\n      Name: PointCloud2\n      Position Transformer: XYZ\n      Queue Size: 10\n      Selectable: true\n      Size (Pixels): 3\n      Size (m): 0.009999999776482582\n      Style: Squares\n      Topic: /dvs_mapping/pointcloud_global\n      Unreliable: false\n      Use Fixed Frame: true\n      Use rainbow: true\n      Value: true\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /event_map_overlap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Tracking\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dsi/confidence\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: DSI\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /dvs/camera_marker\n      Name: EVO Camera\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: true\n    - Alpha: 1\n      Buffer Length: 1\n      Class: rviz/Path\n      Color: 0; 0; 0\n      Enabled: true\n      Head Diameter: 0.30000001192092896\n      Head Length: 0.20000000298023224\n      Length: 0.30000001192092896\n      Line Style: Billboards\n      Line Width: 0.004999999888241291\n      Name: EVO trajectory\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Pose Color: 255; 85; 255\n      Pose Style: None\n      Radius: 0.029999999329447746\n      Shaft Diameter: 0.10000000149011612\n      Shaft Length: 0.10000000149011612\n      Topic: /snake\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_reconstruction/image\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image reconstruction\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: SVO\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_rendering\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Events\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /only_events/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /only_events/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Events frame\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_reconstruction/depthmap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Dense depthmap\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /dvs_mapping/depthmap\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Sparse depthmap\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_rendering\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs_undistorted\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: Image\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /dvs/image_raw\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: DAVIS Frame\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: false\n    - Alpha: 1\n      Autocompute Intensity Bounds: true\n      Autocompute Value Bounds:\n        Max Value: 10\n        Min Value: -10\n        Value: true\n      Axis: Z\n      Channel Name: intensity\n      Class: rviz/PointCloud2\n      Color: 255; 255; 255\n      Color Transformer: Intensity\n      Decay Time: 0\n      Enabled: true\n      Invert Rainbow: false\n      Max Color: 255; 255; 255\n      Max Intensity: 2.3229734897613525\n      Min Color: 0; 0; 0\n      Min Intensity: 0.7008727788925171\n      Name: local_map\n      Position Transformer: XYZ\n      Queue Size: 10\n      Selectable: true\n      Size (Pixels): 3\n      Size (m): 0.009999999776482582\n      Style: Flat Squares\n      Topic: /dvs_mapping/pointcloud\n      Unreliable: false\n      Use Fixed Frame: true\n      Use rainbow: true\n      Value: true\n  Enabled: true\n  Global Options:\n    Background Color: 255; 255; 255\n    Default Light: true\n    Fixed Frame: world\n    Frame Rate: 30\n  Name: root\n  Tools:\n    - Class: rviz/Interact\n      Hide Inactive Objects: true\n    - Class: rviz/MoveCamera\n    - Class: rviz/Select\n    - Class: rviz/FocusCamera\n    - Class: rviz/Measure\n    - Class: rviz/SetInitialPose\n      Theta std deviation: 0.2617993950843811\n      Topic: /initialpose\n      X std deviation: 0.5\n      Y std deviation: 0.5\n    - Class: rviz/SetGoal\n      Topic: /move_base_simple/goal\n    - Class: rviz/PublishPoint\n      Single click: true\n      Topic: /clicked_point\n  Value: true\n  Views:\n    Current:\n      Class: rviz/Orbit\n      Distance: 4.098565578460693\n      Enable Stereo Rendering:\n        Stereo Eye Separation: 0.05999999865889549\n        Stereo Focal Distance: 1\n        Swap Stereo Eyes: false\n        Value: false\n      Focal Point:\n        X: 0.12023840844631195\n        Y: 0.726911187171936\n        Z: 0.3171095848083496\n      Focal Shape Fixed Size: true\n      Focal Shape Size: 0.05000000074505806\n      Invert Z Axis: false\n      Name: Current View\n      Near Clip Distance: 0.009999999776482582\n      Pitch: -1.5697963237762451\n      Target Frame: <Fixed Frame>\n      Value: Orbit (rviz)\n      Yaw: 5.103600025177002\n    Saved: ~\nWindow Geometry:\n  Bootstrap SVO:\n    collapsed: false\n  DAVIS Frame:\n    collapsed: false\n  DSI:\n    collapsed: false\n  Dense depthmap:\n    collapsed: false\n  Displays:\n    collapsed: false\n  Events:\n    collapsed: false\n  Events frame:\n    collapsed: false\n  Height: 1023\n  Hide Left Dock: false\n  Hide Right Dock: true\n  Image:\n    collapsed: false\n  Image reconstruction:\n    collapsed: false\n  QMainWindow State: 000000ff00000000fd000000040000000000000156000003a5fc0200000013fb0000001200530065006c0065006300740069006f006e000000003d000002b00000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000280049006d0061006700650020007200650063006f006e0073007400720075006300740069006f006e00000000f5000000b30000001600fffffffb0000000c004500760065006e00740073000000003d000001730000001600fffffffb000000100054007200610063006b0069006e0067010000003d000001a80000001600fffffffb0000000600530056004f000000014a000000b50000001600fffffffb000000100044006900730070006c00610079007300000000c0000001c7000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a0042006f006f007400730074007200610070002000530056004f0000000161000001320000001600fffffffb0000000a0049006d006100670065000000003d000002360000001600fffffffb0000001c00440065006e00730065002000640065007000740068006d00610070000000003d0000012e0000001600fffffffb0000001e005300700061007200730065002000640065007000740068006d0061007001000001eb000001f70000001600fffffffb0000000a0049006d00610067006500000001c2000000b10000001600fffffffb0000000a0049006d00610067006500000001c2000000b10000001600fffffffb0000000a0049006d0061006700650000000145000000770000001600ffffff000000010000010f000003dafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730000000028000003da000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b2000000000000000000000002000004df000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004df000001a0fc0100000008fb00000018004500760065006e007400730020006600720061006d006500000000d6000001850000008e00fffffffb00000016004400410056004900530020004600720061006d006500000001a2000000c60000008c00fffffffb0000000a0049006d00610067006501000000000000021c0000000000000000fb000000060044005300490000000283000002570000004b00fffffffb0000000a0049006d00610067006501000004ca000002750000000000000000fb0000000a0049006d00610067006501000004c9000002760000000000000000fb0000000800540069006d00650000000000000003ce000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000453000003a500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000\n  SVO:\n    collapsed: false\n  Selection:\n    collapsed: false\n  Sparse depthmap:\n    collapsed: false\n  Time:\n    collapsed: false\n  Tool Properties:\n    collapsed: false\n  Tracking:\n    collapsed: false\n  Views:\n    collapsed: true\n  Width: 1455\n  X: 67\n  Y: 27\n"
  },
  {
    "path": "dvs_tracking/src/dvs_tracking_nodelet.cpp",
    "content": "#include <pluginlib/class_list_macros.h>\n\n#include \"dvs_tracking/dvs_tracking_nodelet.h\"\n\nvoid DvsTrackingNodelet::onInit()\n{\n  node_ = new Tracker(getNodeHandle(), getPrivateNodeHandle());\n\n  NODELET_INFO_STREAM(\"Initialized \" <<  getName() << \" nodelet.\");\n}\n\nPLUGINLIB_EXPORT_CLASS(DvsTrackingNodelet, nodelet::Nodelet)\n"
  },
  {
    "path": "dvs_tracking/src/dvs_tracking_ros.cpp",
    "content": "#include \"dvs_tracking/tracker.hpp\"\n#include \"evo_utils/main.hpp\"\n\nRPG_COMMON_MAIN {\n    ros::init(argc, argv, \"dvs_tracking_ros\");\n\n    ros::NodeHandle nh;\n    ros::NodeHandle nh_private(\"~\");\n\n    Tracker node(nh, nh_private);\n    ros::spin();\n\n    return 0;\n}\n"
  },
  {
    "path": "dvs_tracking/src/lk_se3.cpp",
    "content": "#include \"dvs_tracking/lk_se3.hpp\"\n\n#include <glog/logging.h>\n\n#include <boost/range/irange.hpp>\n#include <random>\n\n#include \"dvs_tracking/weight_functions.hpp\"\n#include \"evo_utils/interpolation.hpp\"\n\n#define DEBUG_PRINT_LIMITS\n\n//#define USE_WEIGHTED_UPDATE\n//#define BLUR_EVENT_IMAGE\n\nvoid LKSE3::projectMap() {\n    static std::vector<float> z_values;\n    z_values.clear();\n\n    map_local_->clear();\n\n    cv::Size s = c_ref_.fullResolution();\n    cv::Mat &depthmap = depth_ref_;\n    depthmap = cv::Mat(s, CV_32F, cv::Scalar(0.));\n\n    cv::Mat img(s, CV_32F, cv::Scalar(0.));\n\n    n_visible_ = 0;\n    size_t n_points = 0;\n\n    Eigen::Affine3f T_ref_world = (T_world_kf_ * T_kf_ref_).inverse();\n\n    for (const auto &P : map_->points) {\n        Eigen::Vector3f p(P.x, P.y, P.z);\n        p = T_ref_world * p;\n        p[0] = p[0] / p[2] * c_ref_.fx() + c_ref_.cx();\n        p[1] = p[1] / p[2] * c_ref_.fy() + c_ref_.cy();\n\n        z_values.push_back(p[2]);\n        ++n_points;\n\n        if (p[0] < 0 || p[1] < 0) continue;\n\n        int x = p[0] + .5f, y = p[1] + .5f;\n\n        if (x >= s.width || y >= s.height) continue;\n\n        float z = p[2];\n\n        // Minimalistic occlusion detection\n        float &depth = depthmap.at<float>(y, x);\n        if (depth == 0.)\n            depth = z;\n        else if (depth > z)\n            depth = z;\n\n        img.at<float>(y, x) = 1.;\n\n        map_local_->push_back(P);\n        ++n_visible_;\n    }\n\n    const int k = map_blur_;\n    cv::GaussianBlur(img, img, cv::Size(k, k), 0.);\n    cv::GaussianBlur(depthmap, depthmap, cv::Size(k, k), 0.);\n    depthmap /= img;\n    ref_img_ = img;\n\n    // Compute Median Depth\n    std::nth_element(z_values.begin(), z_values.begin() + z_values.size() / 2,\n                     z_values.end());\n    depth_median_ = z_values[z_values.size() / 2];\n\n    kf_visibility_ = static_cast<float>(n_visible_) / n_points;\n\n    precomputeReferenceFrame();\n}\n\nvoid LKSE3::precomputeReferenceFrame() {\n    cv::Mat grad_x_img, grad_y_img;\n    cv::Sobel(ref_img_, grad_x_img, CV_32F, 1, 0);\n    cv::Sobel(ref_img_, grad_y_img, CV_32F, 0, 1);\n\n    // Image Pointers\n    float *depth_ref = depth_ref_.ptr<float>(0),\n          *grad_x = grad_x_img.ptr<float>(0),\n          *grad_y = grad_y_img.ptr<float>(0);\n\n    int w = ref_img_.cols, h = ref_img_.rows;\n\n    keypoints_.clear();\n\n    Vector8 vec = Vector8::Zero();\n    Eigen::Map<const Vector6> vec6(&vec(0));\n\n    for (size_t y = 0; y != h; ++y) {\n        float v = ((float)y - c_ref_.cy()) / c_ref_.fy();\n\n        for (size_t x = 0; x != w; ++x) {\n            size_t offset = y * w + x;\n            float z = depth_ref[offset];\n            float pixel_value = ref_img_.at<float>(y, x);\n\n            if (pixel_value < .01) continue;\n\n            float u = ((float)x - c_ref_.cx()) / c_ref_.fx();\n\n            float gx = grad_x[offset] * c_ref_.fx(),\n                  gy = grad_y[offset] * c_ref_.fy();\n\n            Vector8 v1, v2;\n            v1 << -1. / z, 0., u / z, u * v, -(1. + u * u), v, 0., 0.;\n            v2 << 0., -1. / z, v / z, 1 + v * v, -u * v, -u, 0., 0.;\n\n            vec = gx * v1 + gy * v2;\n\n            keypoints_.push_back(Keypoint(Eigen::Vector3f(u * z, v * z, z),\n                                          pixel_value, vec,\n                                          vec6 * vec6.transpose()));\n        }\n    }\n\n    // Stochastic Gradient Descent\n    static std::seed_seq seq{1, 2, 3, 4, 5};\n    static std::mt19937 g(seq);\n    std::shuffle(keypoints_.begin(), keypoints_.end(), g);\n\n    batches_ = std::ceil(keypoints_.size() / batch_size_);\n}\n\nvoid LKSE3::updateTransformation(const int offset, const int N,\n                                 size_t pyr_lvl) {\n    static Eigen::MatrixXf H;\n    static Eigen::VectorXf Jres, dx;\n\n    const cv::Mat &img = pyr_new_[pyr_lvl];\n    const float *new_img = img.ptr<float>(0);\n    float scale = std::pow(2.f, (float)pyr_lvl);\n    float fx = fx_ / scale, fy = fy_ / scale, cx = cx_ / scale,\n          cy = cy_ / scale;\n    size_t w = img.cols, h = img.rows;\n\n    H = Matrix6::Zero();\n    Jres = Vector8::Zero();\n\n    for (auto i = offset; i != offset + N; ++i) {\n        const Keypoint &k = keypoints_[i];\n\n        Eigen::Vector3f p = T_cur_ref_ * k.P;\n        float u = p[0] / p[2] * fx + cx, v = p[1] / p[2] * fy + cy;\n\n        float I_new = evo_utils::interpolate::bilinear(new_img, w, h, u, v);\n\n        if (I_new == -1.f) continue;\n\n        float res = I_new - k.pixel_value;\n\n        if (res >= .95f) continue;\n\n        Jres.noalias() += k.J * res;\n        H.noalias() += k.JJt;\n    }\n\n    dx = H.ldlt().solve(Jres.head<6>() * scale);\n\n    if ((bool)std::isnan((float)dx[0])) {\n        LOG(WARNING) << \"Matrix close to singular!\";\n        return;\n    }\n\n#ifdef USE_WEIGHTED_UPDATE\n    for (size_t i = 0; i != 3; ++i)\n        dx[i] *= weight_functions::Tukey(dx[i] * weight_scale_trans_ /\n                                         depth_median_);\n    for (size_t i = 3; i != 6; ++i)\n        dx[i] *= weight_functions::Tukey(dx[i] * weight_scale_rot_);\n#endif\n\n    T_cur_ref_ *= SE3::exp(dx).matrix();\n    x_ += dx;\n}\n\nvoid LKSE3::trackFrame() {\n    T_cur_ref_ = T_ref_cam_.inverse();\n    x_.setZero();\n\n    for (size_t lvl = pyramid_levels_; lvl != 0; --lvl) {\n        for (size_t iter = 0; iter != max_iterations_; ++iter) {\n            updateTransformation((iter % batches_) * batch_size_, batch_size_,\n                                 lvl - 1);\n        }\n    }\n}\n\nvoid LKSE3::drawEvents(EventQueue::iterator ev_first,\n                       EventQueue::iterator ev_last, cv::Mat &out) {\n    // Precompute rectification table\n    static std::vector<cv::Point> points;\n    static std::vector<Eigen::Vector4f> weights;\n    if (points.size() == 0) {\n        cv::Rect rect(0, 0, width_ - 1, height_ - 1);\n\n        for (size_t y = 0; y != height_; ++y)\n            for (size_t x = 0; x != width_; ++x) {\n                cv::Point2d p = c_.rectifyPoint(cv::Point(x, y));\n                cv::Point tl(std::floor(p.x), std::floor(p.y));\n                Eigen::Vector4f w(0, 0, 0, 0);\n\n                if (rect.contains(tl)) {\n                    const float fx = p.x - tl.x, fy = p.y - tl.y;\n\n                    w[0] = (1.f - fx) * (1.f - fy);\n                    w[1] = (fx) * (1.f - fy);\n                    w[2] = (1.f - fx) * (fy);\n                    w[3] = (fx) * (fy);\n                } else {\n                    tl.x = -1;\n                }\n\n                points.push_back(tl);\n                weights.push_back(w);\n            }\n    }\n\n    // Draw Events\n    auto draw = [](float &p, const float val) { p = std::min(p + val, 1.f); };\n\n    out = cv::Scalar(0);\n\n    for (auto e = ev_first; e != ev_last; ++e) {\n        const cv::Point &p = points[e->x + e->y * width_];\n        if (p.x == -1) continue;\n\n        const Eigen::Vector4f &w = weights[e->x + e->y * width_];\n        draw(out.at<float>(p.y, p.x), w[0]);\n        draw(out.at<float>(p.y, p.x + 1), w[1]);\n        draw(out.at<float>(p.y + 1, p.x), w[2]);\n        draw(out.at<float>(p.y + 1, p.x + 1), w[3]);\n    }\n}\n\nvoid LKSE3::drawEventsNN(EventQueue::iterator ev_first,\n                         EventQueue::iterator ev_last, cv::Mat &out) {\n    // Precompute rectification table\n    static std::vector<cv::Point> points;\n    if (points.size() == 0) {\n        for (size_t y = 0; y != height_; ++y)\n            for (size_t x = 0; x != width_; ++x) {\n                cv::Point p = c_.rectifyPoint(cv::Point(x, y));\n\n                if (!rect_.contains(p)) p.x = -1;\n\n                points.push_back(p);\n            }\n    }\n\n    out = cv::Scalar(0);\n\n    for (auto e = ev_first; e != ev_last; ++e) {\n        const cv::Point &p = points[e->x + e->y * width_];\n        if (p.x == -1) continue;\n\n        out.at<float>(p) = 1.;\n    }\n\n#ifdef BLUR_EVENT_IMAGE\n    const int k = map_blur_;\n    cv::GaussianBlur(out, out, cv::Size(k, k), 0.);\n#endif\n}\n"
  },
  {
    "path": "dvs_tracking/src/tracker.cpp",
    "content": "#include \"dvs_tracking/tracker.hpp\"\n\n#include <camera_info_manager/camera_info_manager.h>\n#include <cv_bridge/cv_bridge.h>\n#include <dvs_msgs/EventArray.h>\n#include <eigen_conversions/eigen_msg.h>\n#include <image_transport/image_transport.h>\n#include <kindr/minimal/quat-transformation.h>\n#include <nav_msgs/Path.h>\n#include <pcl/conversions.h>\n#include <pcl_conversions/pcl_conversions.h>\n#include <ros/package.h>\n#include <sensor_msgs/PointCloud2.h>\n#include <std_msgs/Bool.h>\n#include <std_msgs/Float32.h>\n#include <std_msgs/Float32MultiArray.h>\n#include <std_msgs/String.h>\n#include <tf/transform_broadcaster.h>\n#include <tf/transform_listener.h>\n#include <tf_conversions/tf_eigen.h>\n#include <visualization_msgs/Marker.h>\n\n#include <mutex>\n#include <opencv2/highgui/highgui.hpp>\n#include <sophus/se3.hpp>\n#include <thread>\n\n#include \"evo_utils/camera.hpp\"\n#include \"evo_utils/main.hpp\"\n#include \"rpg_common_ros/params_helper.hpp\"\n\nusing Transformation = kindr::minimal::QuatTransformation;\nusing Quaternion = kindr::minimal::RotationQuaternion;\n\nvoid Tracker::cameraInfoCallback(const sensor_msgs::CameraInfo::ConstPtr& msg) {\n    static bool got_camera_info = false;\n\n    if (!got_camera_info) {\n        c_.fromCameraInfo(*msg);\n\n        postCameraLoaded();\n\n        // Currently, done only once\n        got_camera_info = true;\n    }\n}\n\nvoid Tracker::postCameraLoaded() {\n    width_ = c_.fullResolution().width;\n    height_ = c_.fullResolution().height;\n    fx_ = c_.fx();\n    fy_ = c_.fy();\n    cx_ = c_.cx();\n    cy_ = c_.cy();\n    rect_ = cv::Rect(0, 0, width_, height_);\n\n    float fov = 2. * std::atan(c_.fullResolution().width / 2. / c_.fx());\n    LOG(INFO) << \"Field of view: \" << fov / M_PI * 180.;\n\n    new_img_ = cv::Mat(c_.fullResolution(), CV_32F, cv::Scalar(0));\n\n    sensor_msgs::CameraInfo cam_ref = c_.cameraInfo();\n    cam_ref.width = nh_.param(\"virtual_width\", c_.fullResolution().width);\n    cam_ref.height = nh_.param(\"virtual_height\", c_.fullResolution().height);\n    cam_ref.P[0 * 4 + 2] = cam_ref.K[0 * 3 + 2] = 0.5 * (float)cam_ref.width;\n    cam_ref.P[1 * 4 + 2] = cam_ref.K[1 * 3 + 2] = 0.5 * (float)cam_ref.height;\n\n    float f_ref = nh_.param(\"fov_virtual_camera_deg\", 0.);\n    if (f_ref == 0.)\n        f_ref = c_.fx();\n    else {\n        const float f_ref_rad = f_ref * CV_PI / 180.0;\n        f_ref = 0.5 * (float)cam_ref.width / std::tan(0.5 * f_ref_rad);\n    }\n    cam_ref.P[0 * 4 + 0] = cam_ref.K[0 * 3 + 0] = f_ref;\n    cam_ref.P[1 * 4 + 1] = cam_ref.K[1 * 3 + 1] = f_ref;\n    c_ref_.fromCameraInfo(cam_ref);\n\n    reset();\n}\n\nTracker::Tracker(ros::NodeHandle& nh, ros::NodeHandle nh_private)\n    : nh_(nh),\n      nhp_(nh_private),\n      it_(nh_),\n      tf_(true, ros::Duration(2.))\n\n      ,\n      cur_ev_(0),\n      kf_ev_(0),\n      noise_rate_(nhp_.param(\"noise_rate\", 10000))\n\n      ,\n      frame_size_(nhp_.param(\"frame_size\", 2500)),\n      step_size_(nhp_.param(\"step_size\", 2500))\n\n      ,\n      idle_(true) {\n    batch_size_ = nhp_.param(\"batch_size\", 500);\n    max_iterations_ = nhp_.param(\"max_iterations\", 100);\n    map_blur_ = nhp_.param(\"map_blur\", 5);\n\n    pyramid_levels_ = nhp_.param(\"pyramid_levels\", 1);\n\n    weight_scale_trans_ =\n        rpg_common_ros::param<float>(nhp_, \"weight_scale_translation\", 0.);\n    weight_scale_rot_ =\n        rpg_common_ros::param<float>(nhp_, \"weight_scale_rotation\", 0.);\n\n    T_world_kf_ = T_kf_ref_ = T_ref_cam_ = T_cur_ref_ =\n        Eigen::Affine3f::Identity();\n\n    map_ = PointCloud::Ptr(new PointCloud);\n    map_local_ = PointCloud::Ptr(new PointCloud);\n\n    // Load camera calibration\n    c_ = evo_utils::camera::loadPinholeCamera(nh);\n    postCameraLoaded();\n\n    // Setup Subscribers\n    event_sub_ = nh_.subscribe(\"events\", 0, &Tracker::eventCallback, this);\n    map_sub_ = nh_.subscribe(\"pointcloud\", 0, &Tracker::mapCallback, this);\n    remote_sub_ =\n        nh_.subscribe(\"remote_key\", 0, &Tracker::remoteCallback, this);\n    tf_sub_ = nh_.subscribe(\"tf\", 0, &Tracker::tfCallback, this);\n    camera_info_sub_ =\n        nh_.subscribe(\"camera_info\", 1, &Tracker::cameraInfoCallback, this);\n\n    // Setup Publishers\n    poses_pub_ = nh_.advertise<geometry_msgs::PoseStamped>(\"evo/pose\", 0);\n\n#ifdef TRACKER_DEBUG_REFERENCE_IMAGE\n    std::thread map_overlap(&Tracker::publishMapOverlapThread, this);\n    map_overlap.detach();\n#endif\n\n    frame_id_ =\n        rpg_common_ros::param(nh_, \"dvs_frame_id\", std::string(\"dvs_evo\"));\n    world_frame_id_ =\n        rpg_common_ros::param(nh_, \"world_frame_id\", std::string(\"world\"));\n    auto_trigger_ = rpg_common_ros::param<bool>(nhp_, \"auto_trigger\", false);\n\n    std::thread tracker(&Tracker::trackingThread, this);\n    tracker.detach();\n}\n\nvoid Tracker::trackingThread() {\n    static ros::Rate r(100);\n\n    LOG(INFO) << \"Spawned tracking thread.\";\n\n    while (ros::ok()) {\n        r.sleep();\n\n        if (!idle_ && keypoints_.size() > 0) {\n            estimateTrajectory();\n        }\n    }\n}\n\nvoid Tracker::remoteCallback(const std_msgs::String::ConstPtr& msg) {\n    const std::string& cmd = msg->data;\n\n    if (cmd == \"switch\")\n        initialize(ros::Time(0));\n    else if (cmd == \"reset\")\n        reset();\n    else if (cmd == \"bootstrap\")\n        auto_trigger_ = true;\n}\n\nvoid Tracker::tfCallback(const tf::tfMessagePtr& msgs) {\n    if (!idle_) return;\n\n    for (auto& msg : msgs->transforms) {\n        tf::StampedTransform t;\n        tf::transformStampedMsgToTF(msg, t);\n        tf_.setTransform(t);\n    }\n}\n\nvoid Tracker::initialize(const ros::Time& ts) {\n    std::string bootstrap_frame_id = rpg_common_ros::param<std::string>(\n        nh_, \"dvs_bootstrap_frame_id\", std::string(\"/camera0\"));\n    tf::StampedTransform TF_kf_world;\n    Eigen::Affine3d T_kf_world;\n    tf_.lookupTransform(bootstrap_frame_id, world_frame_id_, ts, TF_kf_world);\n    tf::transformTFToEigen(TF_kf_world, T_kf_world);\n\n    T_world_kf_ = T_kf_world.cast<float>().inverse();\n    T_kf_ref_ = Eigen::Affine3f::Identity();\n    T_ref_cam_ = Eigen::Affine3f::Identity();\n\n    while (cur_ev_ + 1 < events_.size() &&\n           events_[cur_ev_].ts < TF_kf_world.stamp_)\n        ++cur_ev_;\n\n    updateMap();\n\n    idle_ = false;\n}\n\nvoid Tracker::reset() {\n    idle_ = true;\n\n    events_.clear();\n    poses_.clear();\n    poses_filtered_.clear();\n    cur_ev_ = kf_ev_ = 0;\n}\n\nvoid Tracker::eventCallback(const dvs_msgs::EventArray::ConstPtr& msg) {\n    static const bool discard_events_when_idle =\n        rpg_common_ros::param<bool>(nhp_, \"discard_events_when_idle\", false);\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n    if (discard_events_when_idle && idle_) return;\n\n    clearEventQueue();\n    for (const auto& e : msg->events) events_.push_back(e);\n}\n\nvoid Tracker::mapCallback(const sensor_msgs::PointCloud2::ConstPtr& msg) {\n    static size_t min_map_size =\n        rpg_common_ros::param<int>(nhp_, \"min_map_size\", 0);\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n\n    pcl::PCLPointCloud2 pcl_pc;\n    pcl_conversions::toPCL(*msg, pcl_pc);\n    pcl::fromPCLPointCloud2(pcl_pc, *map_);\n\n    LOG(INFO) << \"Received new map: \" << map_->size() << \" points\";\n\n    if (map_->size() > min_map_size && auto_trigger_) {\n        LOG(INFO) << \"Auto-triggering tracking\";\n\n        // initialize(msg->header.stamp);\n        initialize(ros::Time(0));\n        auto_trigger_ = false;\n    }\n}\n\nvoid Tracker::updateMap() {\n    static size_t min_map_size =\n        rpg_common_ros::param<int>(nhp_, \"min_map_size\", 0);\n    static size_t min_n_keypoints =\n        rpg_common_ros::param<int>(nhp_, \"min_n_keypoints\", 0);\n\n    if (map_->size() <= min_map_size) {\n        LOG(WARNING) << \"Unreliable map! Can not update map.\";\n        return;\n    }\n\n    T_kf_ref_ = T_kf_ref_ * T_ref_cam_;\n    T_ref_cam_ = Eigen::Affine3f::Identity();\n    kf_ev_ = cur_ev_;\n\n    projectMap();\n\n    if (keypoints_.size() < min_n_keypoints) {\n        LOG(WARNING) << \"Losing track!\";\n        // TODO: do something about it\n    }\n}\n\nvoid Tracker::clearEventQueue() {\n    static size_t event_history_size_ = 500000;\n\n    if (idle_) {\n        if (events_.size() > event_history_size_) {\n            events_.erase(events_.begin(), events_.begin() + events_.size() -\n                                               event_history_size_);\n\n            cur_ev_ = kf_ev_ = 0;\n        }\n    } else {\n        events_.erase(events_.begin(), events_.begin() + kf_ev_);\n\n        cur_ev_ -= kf_ev_;\n        kf_ev_ = 0;\n    }\n}\n\nvoid Tracker::publishMapOverlapThread() {\n    static ros::Rate r(nhp_.param(\"event_map_overlap_rate\", 25));\n    static const float z0 = 1. / nh_.param(\"max_depth\", 10.),\n                       z1 = 1. / nh_.param(\"min_depth\", .1), z_range = z1 - z0;\n\n    static cv::Mat cmap;\n    if (!cmap.data) {\n        cv::Mat gray(256, 1, CV_8U);\n        for (int i = 0; i != gray.rows; ++i) gray.at<uchar>(i) = i;\n        cv::applyColorMap(gray, cmap, cv::COLORMAP_RAINBOW);\n    }\n\n    static image_transport::Publisher pub =\n        it_.advertise(\"event_map_overlap\", 1);\n\n    cv::Mat ev_img, img;\n\n    while (ros::ok()) {\n        r.sleep();\n\n        if (idle_ || pub.getNumSubscribers() == 0 || event_rate_ < noise_rate_)\n            continue;\n\n        cv::convertScaleAbs(1. - .25 * new_img_, ev_img, 255);\n        cv::cvtColor(ev_img, img, cv::COLOR_GRAY2RGB);\n\n        Eigen::Affine3f T_cam_w =\n            (T_world_kf_ * T_kf_ref_ * T_ref_cam_).inverse();\n\n        const int s = 2;\n\n        for (const auto& P : map_local_->points) {\n            Eigen::Vector3f p = T_cam_w * Eigen::Vector3f(P.x, P.y, P.z);\n            p[0] = p[0] / p[2] * fx_ + cx_;\n            p[1] = p[1] / p[2] * fy_ + cy_;\n\n            int x = std::round(s * p[0]), y = std::round(s * p[1]);\n            float z = p[2];\n\n            if (x < 0 || x >= s * width_ || y < 0 || y >= s * height_) continue;\n\n            cv::Vec3b c = cmap.at<cv::Vec3b>(\n                std::min(255., std::max(255. * (1. / z - z0) / z_range, 0.)));\n            cv::circle(img, cv::Point(x, y), 2, cv::Scalar(c[0], c[1], c[2]),\n                       -1, cv::LINE_AA, 1);\n        }\n\n        std_msgs::Header header;\n        header.stamp = events_[cur_ev_].ts;\n\n        sensor_msgs::ImagePtr msg =\n            cv_bridge::CvImage(header, \"bgr8\", img).toImageMsg();\n        pub.publish(msg);\n    }\n}\n\nvoid Tracker::publishTF() {\n    Eigen::Affine3f T_world_cam = T_world_kf_ * T_kf_ref_ * T_ref_cam_;\n    tf::Transform pose_tf;\n    tf::transformEigenToTF(T_world_cam.cast<double>(), pose_tf);\n    tf::StampedTransform new_pose(pose_tf, events_[cur_ev_ + frame_size_].ts,\n                                  world_frame_id_, \"dvs_evo_raw\");\n    poses_.push_back(new_pose);\n    tf_pub_.sendTransform(new_pose);\n\n    tf::StampedTransform filtered_pose;\n    if (getFilteredPose(filtered_pose)) {\n        filtered_pose.frame_id_ = world_frame_id_;\n        filtered_pose.child_frame_id_ = frame_id_;\n        tf_pub_.sendTransform(filtered_pose);\n        poses_filtered_.push_back(filtered_pose);\n\n        publishPose();\n    }\n}\n\nvoid Tracker::publishPose() {\n    const tf::StampedTransform& T_world_cam = poses_.back();\n\n    const tf::Vector3& p = T_world_cam.getOrigin();\n    const tf::Quaternion& q = T_world_cam.getRotation();\n    geometry_msgs::PoseStampedPtr msg_pose(new geometry_msgs::PoseStamped);\n    msg_pose->header.stamp = T_world_cam.stamp_;\n    msg_pose->header.frame_id = frame_id_;\n    msg_pose->pose.position.x = p.x();\n    msg_pose->pose.position.y = p.y();\n    msg_pose->pose.position.z = p.z();\n    msg_pose->pose.orientation.x = q.x();\n    msg_pose->pose.orientation.y = q.y();\n    msg_pose->pose.orientation.z = q.z();\n    msg_pose->pose.orientation.w = q.w();\n    poses_pub_.publish(msg_pose);\n}\n\nbool Tracker::getFilteredPose(tf::StampedTransform& pose) {\n    static const size_t mean_filter_size =\n        nhp_.param(\"pose_mean_filter_size\", 10);\n\n    if (mean_filter_size < 2) {\n        pose = poses_.back();\n        return true;\n    }\n\n    if (poses_.size() < mean_filter_size) {\n        return false;\n    }\n\n    static Eigen::VectorXd P(7);\n    P.setZero();\n\n    // Take the first rotation q0 as the reference\n    // Then, for the remainders rotations qi, instead of\n    // averaging directly the qi's, average the incremental rotations\n    // q0^-1 * q_i (in the Lie algebra), and then get the original mean\n    // rotation by multiplying the mean incremental rotation on the left\n    // by q0.\n\n    tf::Quaternion tf_q0 =\n        poses_[poses_.size() - mean_filter_size].getRotation();\n    const Quaternion q0(tf_q0.w(), tf_q0.x(), tf_q0.y(), tf_q0.z());\n    const Quaternion q0_inv = q0.inverse();\n\n    for (size_t i = poses_.size() - mean_filter_size; i != poses_.size(); ++i) {\n        const tf::Quaternion& tf_q = poses_[i].getRotation();\n        const Quaternion q(tf_q.w(), tf_q.x(), tf_q.y(), tf_q.z());\n        const Quaternion q_inc = q0_inv * q;\n\n        const tf::Vector3& t = poses_[i].getOrigin();\n\n        Transformation T(q_inc, Eigen::Vector3d(t.x(), t.y(), t.z()));\n\n        P.head<6>() += T.log();\n        P[6] += poses_[i].stamp_.toSec();\n    }\n\n    P /= mean_filter_size;\n    Transformation T(Transformation::Vector6(P.head<6>()));\n\n    const Eigen::Vector3d& t_mean = T.getPosition();\n    const Quaternion q_mean = q0 * T.getRotation();\n\n    tf::StampedTransform filtered_pose;\n    filtered_pose.setOrigin(tf::Vector3(t_mean[0], t_mean[1], t_mean[2]));\n    filtered_pose.setRotation(\n        tf::Quaternion(q_mean.x(), q_mean.y(), q_mean.z(), q_mean.w()));\n    filtered_pose.stamp_ = ros::Time(P[6]);\n\n    pose = filtered_pose;\n    return true;\n}\n\nvoid Tracker::estimateTrajectory() {\n    static const size_t max_event_rate = nhp_.param(\"max_event_rate\", 8000000),\n                        events_per_kf = nhp_.param(\"events_per_kf\", 100000);\n\n    std::lock_guard<std::mutex> lock(data_mutex_);\n\n    while (true) {\n        if (cur_ev_ + std::max(step_size_, frame_size_) > events_.size()) break;\n\n        if (cur_ev_ - kf_ev_ >= events_per_kf) updateMap();\n\n        if (idle_) break;\n\n        size_t frame_end = cur_ev_ + frame_size_;\n\n        // Skip frame if event rate below noise rate\n        double frameduration =\n            (events_[frame_end].ts - events_[cur_ev_].ts).toSec();\n        event_rate_ =\n            std::round(static_cast<double>(frame_size_) / frameduration);\n        if (event_rate_ < noise_rate_) {\n            LOG(WARNING) << \"Event rate below NOISE RATE. Skipping frame.\";\n            cur_ev_ += step_size_;\n            continue;\n        }\n        if (event_rate_ > max_event_rate) {\n            LOG(WARNING) << \"Event rate above MAX EVENT RATE. Skipping frame.\";\n            cur_ev_ += step_size_;\n            continue;\n        }\n\n        static size_t events_processed = 0, poses_generated = 0;\n#ifdef TRACKING_PERF\n        // Performance analysis\n        static const size_t perf_interval = 2000000;\n        static double time_elapsed = 0., last_ts = events_[cur_ev_].ts.toSec();\n\n        if (events_processed > perf_interval) {\n            double cur_ts = events_[cur_ev_].ts.toSec(),\n                   time_processed = cur_ts - last_ts;\n\n            LOG(INFO) << \"   Poses/s: \"\n                      << static_cast<double>(poses_generated) / time_elapsed;\n            LOG(INFO) << \" Pose rate: \"\n                      << static_cast<double>(poses_generated) / time_processed;\n            LOG(INFO) << \"  Events/s: \"\n                      << static_cast<double>(events_processed) / time_elapsed;\n            LOG(INFO) << \"Event rate: \"\n                      << static_cast<double>(events_processed) / time_processed;\n            LOG(WARNING) << \" RT factor: \" << time_processed / time_elapsed;\n\n            events_processed = 0;\n            poses_generated = 0;\n            time_elapsed = 0;\n            last_ts = cur_ts;\n        }\n        TIMER_START(t1);\n#endif\n\n        drawEvents(events_.begin() + cur_ev_, events_.begin() + frame_end,\n                   new_img_);\n        cv::buildPyramid(new_img_, pyr_new_, pyramid_levels_);\n        trackFrame();\n\n        T_ref_cam_ *= SE3::exp(-x_).matrix();\n\n        publishTF();\n        cur_ev_ += step_size_;\n\n#ifdef TRACKING_PERF\n        {\n            TIMER_STOP(t1, t2, duration);\n            time_elapsed += duration;\n            LOG(INFO) << \"Tracking trajectory required: \" << duration << \"ms\";\n        }\n#endif\n\n        events_processed += step_size_;\n        ++poses_generated;\n    }\n}\n"
  },
  {
    "path": "evo_utils/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(evo_utils)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\n# find_package(OpenCV REQUIRED)\n# include_directories(${OpenCV_INCLUDE_DIRS})\n\nset(HEADERS\n  include/evo_utils/camera.hpp\n  include/evo_utils/geometry.hpp\n  include/evo_utils/interpolation.hpp\n  include/evo_utils/main.hpp\n  include/rpg_common_ros/params_helper.hpp\n)\n\nset(SOURCES\n  src/utils_geometry.cpp\n  src/camera.cpp\n)\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n## Uncomment this if the package has a setup.py. This macro ensures\n## modules and global scripts declared therein get installed\n## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html\ncatkin_python_setup()\n\n# include_directories(\n#   ${catkin_INCLUDE_DIRS}\n# )\n\ncs_install()\ncs_export()"
  },
  {
    "path": "evo_utils/include/evo_utils/camera.hpp",
    "content": "#pragma once\n\n#ifndef EVO_UTILS_HPP\n#define EVO_UTILS_HPP\n\n#include <camera_info_manager/camera_info_manager.h>\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n#include <image_geometry/pinhole_camera_model.h>\n#include <ros/node_handle.h>\n#include <ros/time.h>\n#include <tf_conversions/tf_eigen.h>\n\n#include <opencv2/core/core.hpp>\n\n#include \"rpg_common_ros/params_helper.hpp\"\n\nnamespace evo_utils::camera {\n\nvoid precomputeRectificationTable(\n    std::vector<cv::Point2f>& rectified_points,\n    const image_geometry::PinholeCameraModel& cam);\n\n/**\n * Load pinhole camera model from node handle\n *\n *     ROS params:\n *         camera_name) to find the calibration file\n *         calib_file) location of the calibration file\n *\n * @param nh node handle\n *\n * @return the retrieved pinhole camera model\n */\nimage_geometry::PinholeCameraModel loadPinholeCamera(ros::NodeHandle& nh);\n\ntypedef Eigen::Vector3d BearingVector;\ntypedef Eigen::Vector2d Keypoint;  // subpixel pixel coordinate\ntypedef Eigen::Vector3d Point;\n\n/**\n * Pinhole camera model\n *\n * Provides basic functionality to project 3d point to pixel coordinates and\n * backwards\n */\nclass PinholeCamera {\n   public:\n    PinholeCamera() {}\n    /**\n     * Construct a PinholeCamera object\n     *\n     * @param width Width of the image\n     * @param height Height of the image\n     * @param fx Camera's horizontal focal length\n     * @param fy Camera's vertical focal length\n     * @param cx Camera's horizontal principal point\n     * @param cy Camera's vertical principal point\n     */\n    PinholeCamera(int width, int height, float fx, float fy, float cx, float cy)\n        : width_(width), height_(height), fx_(fx), fy_(fy), cx_(cx), cy_(cy) {\n        CHECK_GT(width_, 0);\n        CHECK_GT(height_, 0);\n        CHECK_GT(fx_, 0.0);\n        CHECK_GT(fy_, 0.0);\n        CHECK_GT(cx_, 0.0);\n        CHECK_GT(cy_, 0.0);\n\n        K_ << (float)fx_, 0.f, (float)cx_, 0.f, (float)fy_, (float)cy_, 0.f,\n            0.f, 1.f;\n\n        Kinv_ = K_.inverse();\n    }\n\n    /**\n     * Projects a 3d point (in camera frame) to the pixel coordinates\n     *\n     * @param P 3d point in camera frame\n     *\n     * @return Pixel coordinates of the projected point\n     */\n    inline Keypoint project3dToPixel(const Point& P) {\n        CHECK_GE(std::fabs(P[2]), 1e-6);\n        return Keypoint(fx_ * P[0] / P[2] + cx_, fy_ * P[1] / P[2] + cy_);\n    }\n\n    /**\n     * Backprojects the pixel coordinates to 3d ray\n     *\n     * @param u Keypoint representing the pixel coordinates\n     *\n     * @return Bearing vector being the 3d ray, backprojection of P\n     */\n    inline BearingVector projectPixelTo3dRay(const Keypoint& u) {\n        return BearingVector((u[0] - cx_) / fx_, (u[1] - cy_) / fy_, 1.0);\n    }\n\n    Eigen::Matrix3f K() const { return K_; }\n\n    int width_;   ///< image size: width\n    int height_;  ///< image size: height\n    float fx_;    ///< camera's horizontal focal length\n    float fy_;    ///< camera's vertical focal lenght\n    float cx_;    ///< camera's principal point (x)\n    float cy_;    ///< camera's principal point (y)\n\n    Eigen::Matrix3f K_;     ///< camera's intrinsic matrix\n    Eigen::Matrix3f Kinv_;  ///< camera's intrinsic matrix inverse\n};\n\n}  // namespace evo_utils::camera\n\n#endif  // EVO_UTILS_HPP"
  },
  {
    "path": "evo_utils/include/evo_utils/geometry.hpp",
    "content": "#pragma once\n\n#include <kindr/minimal/quat-transformation.h>\n\n#include <opencv2/core/core.hpp>\n\nnamespace evo_utils::geometry {\n\nusing Transformation = kindr::minimal::QuatTransformation;\nusing Quaternion = kindr::minimal::RotationQuaternion;\n\n// Aliases for clarity\ntypedef float Depth;\ntypedef float InverseDepth;\n\n/**\n * Naive 2D median filter. Complexity: O(p^2NM) where p is the patch size, and\n * N, M the image size\n *\n * @see Remark: use the huangMedianFilter, this function is here because it is\n * used as a reference in the unit tests\n *\n * @param img Input image\n * @param out_img Filtered image\n * @param mask Which pixels have to be considered\n * @param patch_size Filter kernel size\n */\nvoid naiveMedianFilter(const cv::Mat& img, cv::Mat& out_img,\n                       const cv::Mat& mask, int patch_size);\n\n/**\n * 2D median filter. Complexity: O(pNM) where p is the patch size, and N, M the\n * image size\n *\n * TODO: use \\cite https://www.doxygen.nl/manual/config.html#cfg_cite_bib_files\n * \"T. Huang, G. Yang, and G. Tang, \"A Fast Two-Dimensional Median Filtering\n * Algorithm\"\n *\n * Code adapted from <a href=\"here\">\n * http://www.sergejusz.com/engineering_tips/median_filter.htm</a>\n *\n * @param img Input image\n * @param out_img Filtered image\n * @param mask Which pixels have to be considered\n * @param patch_size Filter kernel size\n */\nvoid huangMedianFilter(const cv::Mat& img, cv::Mat& out_img,\n                       const cv::Mat& mask, int patch_size);\n\n}  // namespace evo_utils::geometry\n"
  },
  {
    "path": "evo_utils/include/evo_utils/interpolation.hpp",
    "content": "#pragma once\n\n#ifndef INTERPOLATION_HPP\n#define INTERPOLATION_HPP\n\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n\n#include <opencv2/core/core.hpp>\n\nnamespace evo_utils::interpolate {\n\n/**\n * Bilinear interpolation\n *\n * If all the four neighbors are available, computes the bilinear interpolation\n * of their associated values in img. Otherwise, returns -1.f\n *\n * @param img values associated to the pixels\n * @param w image width\n * @param h image height\n * @param x horizontal coordinate (continuous space)\n * @param y vertical coordinate (continuous space)\n *\n * @return bilinear interpolation of the four neighbors value, -1.f is one\n * neighbors is out of bound\n */\nfloat bilinear(const float* img, const size_t w, const size_t h, const float x,\n               const float y) {\n    if (x < 0 || y < 0) return -1.f;\n\n    size_t px = (size_t)x, py = (size_t)y;\n\n    if (px + 1 >= w || py + 1 >= h) return -1.f;\n\n    // Load Pixel Values\n    const float* addr = img + px + py * w;\n    const float p1 = addr[0], p2 = addr[1], p3 = addr[w], p4 = addr[w + 1];\n\n    // Compute Weights\n    float fx = x - px, fy = y - py, fx1 = 1.0f - fx, fy1 = 1.0f - fy;\n\n    float w1 = fx1 * fy1, w2 = fx * fy1, w3 = fx1 * fy, w4 = fx * fy;\n\n    return p1 * w1 + p2 * w2 + p3 * w3 + p4 * w4;\n}\n\n/**\n * Bilinear interpolation\n *\n * If all the four neighbors are available, computes the bilinear interpolation\n * of their associated values in img. Otherwise, returns -1.f\n *\n * @param img cv::Mat image\n * @param x horizontal coordinate (continuous space)\n * @param y vertical coordinate (continuous space)\n *\n * @return bilinear interpolation of the four neighbors value, -1.f is one\n * neighbors is out of bound\n *\n * @see bilinear\n */\ninline float bilinear(const cv::Mat& img, const float x, const float y) {\n    return bilinear((float*)img.data, (size_t)img.cols, (size_t)img.rows, x, y);\n}\n\n/**\n * Nearest neighbourhood interpolation\n *\n * If the nearest neighbour is outside of the boundaries, returns -1.f.\n * Otherwise, returns its value.\n *\n * @param img values associated to the pixels\n * @param w image width\n * @param h image height\n * @param x horizontal coordinate (continuous space)\n * @param y vertical coordinate (continuous space)\n *\n * @return value associated to nearest neighbour or -1.f, if it is outside of\n * the boundaries of the image\n */\nfloat nn(const float* img, const size_t w, const size_t h, const float x,\n         const float y) {\n    if (x < 0 || y < 0) return -1;\n\n    size_t px = static_cast<size_t>(x + .5f), py = static_cast<size_t>(y + .5f);\n\n    if (px >= w || py >= h) return -1;\n\n    return img[px + py * w];\n}\n\n/**\n * Distribute val around (x,y) so that the bilinear interpolation at (x,y) is\n * increased by val\n *\n * @param img image to which the value is added\n * @param x horizontal coordinate of the increment\n * @param y vertical coordinate of the increment\n * @param val value increment\n */\nvoid draw(cv::Mat& img, const float x, const float y, const float val) {\n    const int w = img.cols, h = img.rows;\n\n    if (x < 0 || y < 0) return;\n\n    const int px = (int)x, py = (int)y;\n\n    if (px + 1 >= w || py + 1 >= h) return;\n\n    float* data = (float*)img.data;\n\n    const float fx = x - px, fy = y - py;\n\n    data[px + py * w] += val * (1.f - fx) * (1.f - fy);\n    data[px + 1 + py * w] += val * (fx) * (1.f - fy);\n    data[px + (py + 1) * w] += val * (1.f - fx) * (fy);\n    data[px + 1 + (py + 1) * w] += val * (fx) * (fy);\n}\n\n}  // namespace interpolate\n\n#endif  // INTERPOLATION_HPP\n"
  },
  {
    "path": "evo_utils/include/evo_utils/main.hpp",
    "content": "#pragma once\n\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n\n#include <chrono>\n\n/**\n * Does vanilla initialization of glog and gflags.\n * Usage:\n * RPG_COMMON_MAIN\n * {\n *   // same body as usually, with argc and argv\n * }\n * You will need to add gflags_catkin and glog_catkin\n * as dependency to package.xml .\n */\n#define RPG_COMMON_MAIN                                    \\\n    int rpg_common_main(int argc, char** argv);            \\\n    int main(int argc, char** argv) {                      \\\n        google::InitGoogleLogging(argv[0]);                \\\n        google::ParseCommandLineFlags(&argc, &argv, true); \\\n        google::InstallFailureSignalHandler();             \\\n        FLAGS_alsologtostderr = true;                      \\\n        FLAGS_colorlogtostderr = true;                     \\\n        return rpg_common_main(argc, argv);                \\\n    }                                                      \\\n    int rpg_common_main(int argc, char** argv)\n\n/**\n * \"Starts\" chrono timer (high resolution clock)\n * Usage:\n * TIMER_START(t1);\n * _t1 is the name of the first time taken.\n * Remark: use the \";\" at the end!\n */\n#define TIMER_START(t1) auto t1 = std::chrono::high_resolution_clock::now()\n/**\n * \"Stops\" the chrono timer and compute time\n * Usage:\n * TIMER_STOP(t1,t2,duration);\n * Remark: use the \";\" at the end!\n * @see TIMER_START\n */\n#define TIMER_STOP(t1, t2, duration)                     \\\n    auto t2 = std::chrono::high_resolution_clock::now(); \\\n    auto duration =                                      \\\n        std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()"
  },
  {
    "path": "evo_utils/include/rpg_common_ros/params_helper.hpp",
    "content": "/*\n * ros_params_helper.h\n *\n *  Created on: Feb 22, 2013\n *      Author: cforster\n *\n * from libpointmatcher_ros\n */\n\n#pragma once\n\n#include <ros/ros.h>\n\n#include <string>\n\nnamespace rpg_common_ros {\n\ninline bool hasParam(const std::string& name) { return ros::param::has(name); }\n\ntemplate <typename T>\nT getParam(const std::string& name, const T& defaultValue) {\n    T v;\n    if (ros::param::get(name, v)) {\n        ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n        return v;\n    } else\n        ROS_WARN_STREAM(\"Cannot find value for parameter: \"\n                        << name << \", assigning default: \" << defaultValue);\n    return defaultValue;\n}\n\ntemplate <typename T>\nT getParam(const std::string& name) {\n    T v;\n    if (ros::param::get(name, v)) {\n        ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n        return v;\n    } else\n        ROS_ERROR_STREAM(\"Cannot find value for parameter: \" << name);\n    return T();\n}\n\ntemplate <typename T>\nT param(const ros::NodeHandle& nh, const std::string& name,\n        const T& defaultValue) {\n    if (nh.hasParam(name)) {\n        T v;\n        nh.param<T>(name, v, defaultValue);\n        ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n        return v;\n    }\n    ROS_WARN_STREAM(\"Cannot find value for parameter: \"\n                    << name << \", assigning default: \" << defaultValue);\n    return defaultValue;\n}\n\n}  // namespace rpg_common_ros\n\nnamespace rpg_ros = rpg_common_ros;\n"
  },
  {
    "path": "evo_utils/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>evo_utils</name>\n  <version>0.0.1</version>\n  <description>\n    Utility scripts for EVO\n  </description>\n  <author>Henri Rebecq</author>\n  <license>tbd</license>\n  <maintainer email=\"rebecq@ifi.uzh.ch\">Henri Rebecq</maintainer>\n  <maintainer email=\"aterpin@ethz.ch\">Antonio Terpin</maintainer>\n  \n  <buildtool_depend>catkin</buildtool_depend>\n\n  <depend>rospy</depend>\n  <depend>tf</depend>\n  <depend>geometry_msgs</depend>\n  <depend>cv_bridge</depend>\n  <depend>minkindr</depend>\n  <depend>tf_conversions</depend>\n  <depend>glog_catkin</depend>\n  <depend>gflags_catkin</depend>\n  <depend>dvs_msgs</depend>\n  <depend>camera_info_manager</depend>\n\n  </package>\n"
  },
  {
    "path": "evo_utils/setup.py",
    "content": "#!/usr/bin/env python\n\n# DO NOT USE\n# python setup.py install\n\n\nfrom distutils.core import setup\nfrom catkin_pkg.python_setup import generate_distutils_setup\n\nd = generate_distutils_setup(\n    packages=['evo_utils'],\n    package_dir={'':'src'},\n    install_requires=['rospy', 'tf', 'geometry_msgs'],\n    )\n\nsetup(**d)\n"
  },
  {
    "path": "evo_utils/src/camera.cpp",
    "content": "#include \"evo_utils/camera.hpp\"\n\nnamespace evo_utils::camera {\n\nvoid precomputeRectificationTable(\n    std::vector<cv::Point2f>& rectified_points,\n    const image_geometry::PinholeCameraModel& cam) {\n    static std::vector<cv::Point2f> points;\n    points.clear();\n    rectified_points.clear();\n\n    cv::Size fr = cam.fullResolution();\n\n    for (size_t y = 0; y != fr.height; ++y) {\n        for (size_t x = 0; x != fr.width; ++x) {\n            points.push_back(cv::Point2f(x, y));\n        }\n    }\n\n    const std::string distortion_type = cam.cameraInfo().distortion_model;\n    LOG(INFO) << \"Distortion type: \" << distortion_type;\n\n    if (distortion_type == \"plumb_bob\") {\n        auto K = cv::getOptimalNewCameraMatrix(cam.fullIntrinsicMatrix(),\n                                               cam.distortionCoeffs(), fr, 0.);\n        cv::undistortPoints(points, rectified_points, cam.fullIntrinsicMatrix(),\n                            cam.distortionCoeffs(), cv::Matx33f::eye(), K);\n    } else {\n        CHECK(false) << \"Distortion model: \" << distortion_type\n                     << \" is not supported.\";\n    }\n}\n\nimage_geometry::PinholeCameraModel loadPinholeCamera(ros::NodeHandle& nh) {\n    // Load camera calibration\n    const std::string camera_name =\n        rpg_common_ros::param<std::string>(nh, \"camera_name\", \"\");\n\n    const std::string calib_file =\n        rpg_common_ros::param<std::string>(nh, \"calib_file\", \"\");\n    const std::string url = std::string(\"file://\") + calib_file;\n\n    camera_info_manager::CameraInfoManager cam_info(nh, camera_name, url);\n    image_geometry::PinholeCameraModel cam;\n    cam.fromCameraInfo(cam_info.getCameraInfo());\n\n    return cam;\n}\n}  // namespace evo_utils::camera"
  },
  {
    "path": "evo_utils/src/evo_utils/__init__.py",
    "content": ""
  },
  {
    "path": "evo_utils/src/evo_utils/colormaps.py",
    "content": "# New matplotlib colormaps by Nathaniel J. Smith, Stefan van der Walt,\n# and (in the case of viridis) Eric Firing.\n#\n# This file and the colormaps in it are released under the CC0 license /\n# public domain dedication. We would appreciate credit if you use or\n# redistribute these colormaps, but do not impose any legal restrictions.\n#\n# To the extent possible under law, the persons who associated CC0 with\n# mpl-colormaps have waived all copyright and related or neighboring rights\n# to mpl-colormaps.\n#\n# You should have received a copy of the CC0 legalcode along with this\n# work.  If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.\n\n__all__ = ['magma', 'inferno', 'plasma', 'viridis']\n\n_magma_data = [[0.001462, 0.000466, 0.013866],\n               [0.002258, 0.001295, 0.018331],\n               [0.003279, 0.002305, 0.023708],\n               [0.004512, 0.003490, 0.029965],\n               [0.005950, 0.004843, 0.037130],\n               [0.007588, 0.006356, 0.044973],\n               [0.009426, 0.008022, 0.052844],\n               [0.011465, 0.009828, 0.060750],\n               [0.013708, 0.011771, 0.068667],\n               [0.016156, 0.013840, 0.076603],\n               [0.018815, 0.016026, 0.084584],\n               [0.021692, 0.018320, 0.092610],\n               [0.024792, 0.020715, 0.100676],\n               [0.028123, 0.023201, 0.108787],\n               [0.031696, 0.025765, 0.116965],\n               [0.035520, 0.028397, 0.125209],\n               [0.039608, 0.031090, 0.133515],\n               [0.043830, 0.033830, 0.141886],\n               [0.048062, 0.036607, 0.150327],\n               [0.052320, 0.039407, 0.158841],\n               [0.056615, 0.042160, 0.167446],\n               [0.060949, 0.044794, 0.176129],\n               [0.065330, 0.047318, 0.184892],\n               [0.069764, 0.049726, 0.193735],\n               [0.074257, 0.052017, 0.202660],\n               [0.078815, 0.054184, 0.211667],\n               [0.083446, 0.056225, 0.220755],\n               [0.088155, 0.058133, 0.229922],\n               [0.092949, 0.059904, 0.239164],\n               [0.097833, 0.061531, 0.248477],\n               [0.102815, 0.063010, 0.257854],\n               [0.107899, 0.064335, 0.267289],\n               [0.113094, 0.065492, 0.276784],\n               [0.118405, 0.066479, 0.286321],\n               [0.123833, 0.067295, 0.295879],\n               [0.129380, 0.067935, 0.305443],\n               [0.135053, 0.068391, 0.315000],\n               [0.140858, 0.068654, 0.324538],\n               [0.146785, 0.068738, 0.334011],\n               [0.152839, 0.068637, 0.343404],\n               [0.159018, 0.068354, 0.352688],\n               [0.165308, 0.067911, 0.361816],\n               [0.171713, 0.067305, 0.370771],\n               [0.178212, 0.066576, 0.379497],\n               [0.184801, 0.065732, 0.387973],\n               [0.191460, 0.064818, 0.396152],\n               [0.198177, 0.063862, 0.404009],\n               [0.204935, 0.062907, 0.411514],\n               [0.211718, 0.061992, 0.418647],\n               [0.218512, 0.061158, 0.425392],\n               [0.225302, 0.060445, 0.431742],\n               [0.232077, 0.059889, 0.437695],\n               [0.238826, 0.059517, 0.443256],\n               [0.245543, 0.059352, 0.448436],\n               [0.252220, 0.059415, 0.453248],\n               [0.258857, 0.059706, 0.457710],\n               [0.265447, 0.060237, 0.461840],\n               [0.271994, 0.060994, 0.465660],\n               [0.278493, 0.061978, 0.469190],\n               [0.284951, 0.063168, 0.472451],\n               [0.291366, 0.064553, 0.475462],\n               [0.297740, 0.066117, 0.478243],\n               [0.304081, 0.067835, 0.480812],\n               [0.310382, 0.069702, 0.483186],\n               [0.316654, 0.071690, 0.485380],\n               [0.322899, 0.073782, 0.487408],\n               [0.329114, 0.075972, 0.489287],\n               [0.335308, 0.078236, 0.491024],\n               [0.341482, 0.080564, 0.492631],\n               [0.347636, 0.082946, 0.494121],\n               [0.353773, 0.085373, 0.495501],\n               [0.359898, 0.087831, 0.496778],\n               [0.366012, 0.090314, 0.497960],\n               [0.372116, 0.092816, 0.499053],\n               [0.378211, 0.095332, 0.500067],\n               [0.384299, 0.097855, 0.501002],\n               [0.390384, 0.100379, 0.501864],\n               [0.396467, 0.102902, 0.502658],\n               [0.402548, 0.105420, 0.503386],\n               [0.408629, 0.107930, 0.504052],\n               [0.414709, 0.110431, 0.504662],\n               [0.420791, 0.112920, 0.505215],\n               [0.426877, 0.115395, 0.505714],\n               [0.432967, 0.117855, 0.506160],\n               [0.439062, 0.120298, 0.506555],\n               [0.445163, 0.122724, 0.506901],\n               [0.451271, 0.125132, 0.507198],\n               [0.457386, 0.127522, 0.507448],\n               [0.463508, 0.129893, 0.507652],\n               [0.469640, 0.132245, 0.507809],\n               [0.475780, 0.134577, 0.507921],\n               [0.481929, 0.136891, 0.507989],\n               [0.488088, 0.139186, 0.508011],\n               [0.494258, 0.141462, 0.507988],\n               [0.500438, 0.143719, 0.507920],\n               [0.506629, 0.145958, 0.507806],\n               [0.512831, 0.148179, 0.507648],\n               [0.519045, 0.150383, 0.507443],\n               [0.525270, 0.152569, 0.507192],\n               [0.531507, 0.154739, 0.506895],\n               [0.537755, 0.156894, 0.506551],\n               [0.544015, 0.159033, 0.506159],\n               [0.550287, 0.161158, 0.505719],\n               [0.556571, 0.163269, 0.505230],\n               [0.562866, 0.165368, 0.504692],\n               [0.569172, 0.167454, 0.504105],\n               [0.575490, 0.169530, 0.503466],\n               [0.581819, 0.171596, 0.502777],\n               [0.588158, 0.173652, 0.502035],\n               [0.594508, 0.175701, 0.501241],\n               [0.600868, 0.177743, 0.500394],\n               [0.607238, 0.179779, 0.499492],\n               [0.613617, 0.181811, 0.498536],\n               [0.620005, 0.183840, 0.497524],\n               [0.626401, 0.185867, 0.496456],\n               [0.632805, 0.187893, 0.495332],\n               [0.639216, 0.189921, 0.494150],\n               [0.645633, 0.191952, 0.492910],\n               [0.652056, 0.193986, 0.491611],\n               [0.658483, 0.196027, 0.490253],\n               [0.664915, 0.198075, 0.488836],\n               [0.671349, 0.200133, 0.487358],\n               [0.677786, 0.202203, 0.485819],\n               [0.684224, 0.204286, 0.484219],\n               [0.690661, 0.206384, 0.482558],\n               [0.697098, 0.208501, 0.480835],\n               [0.703532, 0.210638, 0.479049],\n               [0.709962, 0.212797, 0.477201],\n               [0.716387, 0.214982, 0.475290],\n               [0.722805, 0.217194, 0.473316],\n               [0.729216, 0.219437, 0.471279],\n               [0.735616, 0.221713, 0.469180],\n               [0.742004, 0.224025, 0.467018],\n               [0.748378, 0.226377, 0.464794],\n               [0.754737, 0.228772, 0.462509],\n               [0.761077, 0.231214, 0.460162],\n               [0.767398, 0.233705, 0.457755],\n               [0.773695, 0.236249, 0.455289],\n               [0.779968, 0.238851, 0.452765],\n               [0.786212, 0.241514, 0.450184],\n               [0.792427, 0.244242, 0.447543],\n               [0.798608, 0.247040, 0.444848],\n               [0.804752, 0.249911, 0.442102],\n               [0.810855, 0.252861, 0.439305],\n               [0.816914, 0.255895, 0.436461],\n               [0.822926, 0.259016, 0.433573],\n               [0.828886, 0.262229, 0.430644],\n               [0.834791, 0.265540, 0.427671],\n               [0.840636, 0.268953, 0.424666],\n               [0.846416, 0.272473, 0.421631],\n               [0.852126, 0.276106, 0.418573],\n               [0.857763, 0.279857, 0.415496],\n               [0.863320, 0.283729, 0.412403],\n               [0.868793, 0.287728, 0.409303],\n               [0.874176, 0.291859, 0.406205],\n               [0.879464, 0.296125, 0.403118],\n               [0.884651, 0.300530, 0.400047],\n               [0.889731, 0.305079, 0.397002],\n               [0.894700, 0.309773, 0.393995],\n               [0.899552, 0.314616, 0.391037],\n               [0.904281, 0.319610, 0.388137],\n               [0.908884, 0.324755, 0.385308],\n               [0.913354, 0.330052, 0.382563],\n               [0.917689, 0.335500, 0.379915],\n               [0.921884, 0.341098, 0.377376],\n               [0.925937, 0.346844, 0.374959],\n               [0.929845, 0.352734, 0.372677],\n               [0.933606, 0.358764, 0.370541],\n               [0.937221, 0.364929, 0.368567],\n               [0.940687, 0.371224, 0.366762],\n               [0.944006, 0.377643, 0.365136],\n               [0.947180, 0.384178, 0.363701],\n               [0.950210, 0.390820, 0.362468],\n               [0.953099, 0.397563, 0.361438],\n               [0.955849, 0.404400, 0.360619],\n               [0.958464, 0.411324, 0.360014],\n               [0.960949, 0.418323, 0.359630],\n               [0.963310, 0.425390, 0.359469],\n               [0.965549, 0.432519, 0.359529],\n               [0.967671, 0.439703, 0.359810],\n               [0.969680, 0.446936, 0.360311],\n               [0.971582, 0.454210, 0.361030],\n               [0.973381, 0.461520, 0.361965],\n               [0.975082, 0.468861, 0.363111],\n               [0.976690, 0.476226, 0.364466],\n               [0.978210, 0.483612, 0.366025],\n               [0.979645, 0.491014, 0.367783],\n               [0.981000, 0.498428, 0.369734],\n               [0.982279, 0.505851, 0.371874],\n               [0.983485, 0.513280, 0.374198],\n               [0.984622, 0.520713, 0.376698],\n               [0.985693, 0.528148, 0.379371],\n               [0.986700, 0.535582, 0.382210],\n               [0.987646, 0.543015, 0.385210],\n               [0.988533, 0.550446, 0.388365],\n               [0.989363, 0.557873, 0.391671],\n               [0.990138, 0.565296, 0.395122],\n               [0.990871, 0.572706, 0.398714],\n               [0.991558, 0.580107, 0.402441],\n               [0.992196, 0.587502, 0.406299],\n               [0.992785, 0.594891, 0.410283],\n               [0.993326, 0.602275, 0.414390],\n               [0.993834, 0.609644, 0.418613],\n               [0.994309, 0.616999, 0.422950],\n               [0.994738, 0.624350, 0.427397],\n               [0.995122, 0.631696, 0.431951],\n               [0.995480, 0.639027, 0.436607],\n               [0.995810, 0.646344, 0.441361],\n               [0.996096, 0.653659, 0.446213],\n               [0.996341, 0.660969, 0.451160],\n               [0.996580, 0.668256, 0.456192],\n               [0.996775, 0.675541, 0.461314],\n               [0.996925, 0.682828, 0.466526],\n               [0.997077, 0.690088, 0.471811],\n               [0.997186, 0.697349, 0.477182],\n               [0.997254, 0.704611, 0.482635],\n               [0.997325, 0.711848, 0.488154],\n               [0.997351, 0.719089, 0.493755],\n               [0.997351, 0.726324, 0.499428],\n               [0.997341, 0.733545, 0.505167],\n               [0.997285, 0.740772, 0.510983],\n               [0.997228, 0.747981, 0.516859],\n               [0.997138, 0.755190, 0.522806],\n               [0.997019, 0.762398, 0.528821],\n               [0.996898, 0.769591, 0.534892],\n               [0.996727, 0.776795, 0.541039],\n               [0.996571, 0.783977, 0.547233],\n               [0.996369, 0.791167, 0.553499],\n               [0.996162, 0.798348, 0.559820],\n               [0.995932, 0.805527, 0.566202],\n               [0.995680, 0.812706, 0.572645],\n               [0.995424, 0.819875, 0.579140],\n               [0.995131, 0.827052, 0.585701],\n               [0.994851, 0.834213, 0.592307],\n               [0.994524, 0.841387, 0.598983],\n               [0.994222, 0.848540, 0.605696],\n               [0.993866, 0.855711, 0.612482],\n               [0.993545, 0.862859, 0.619299],\n               [0.993170, 0.870024, 0.626189],\n               [0.992831, 0.877168, 0.633109],\n               [0.992440, 0.884330, 0.640099],\n               [0.992089, 0.891470, 0.647116],\n               [0.991688, 0.898627, 0.654202],\n               [0.991332, 0.905763, 0.661309],\n               [0.990930, 0.912915, 0.668481],\n               [0.990570, 0.920049, 0.675675],\n               [0.990175, 0.927196, 0.682926],\n               [0.989815, 0.934329, 0.690198],\n               [0.989434, 0.941470, 0.697519],\n               [0.989077, 0.948604, 0.704863],\n               [0.988717, 0.955742, 0.712242],\n               [0.988367, 0.962878, 0.719649],\n               [0.988033, 0.970012, 0.727077],\n               [0.987691, 0.977154, 0.734536],\n               [0.987387, 0.984288, 0.742002],\n               [0.987053, 0.991438, 0.749504]]\n\n_inferno_data = [[0.001462, 0.000466, 0.013866],\n                 [0.002267, 0.001270, 0.018570],\n                 [0.003299, 0.002249, 0.024239],\n                 [0.004547, 0.003392, 0.030909],\n                 [0.006006, 0.004692, 0.038558],\n                 [0.007676, 0.006136, 0.046836],\n                 [0.009561, 0.007713, 0.055143],\n                 [0.011663, 0.009417, 0.063460],\n                 [0.013995, 0.011225, 0.071862],\n                 [0.016561, 0.013136, 0.080282],\n                 [0.019373, 0.015133, 0.088767],\n                 [0.022447, 0.017199, 0.097327],\n                 [0.025793, 0.019331, 0.105930],\n                 [0.029432, 0.021503, 0.114621],\n                 [0.033385, 0.023702, 0.123397],\n                 [0.037668, 0.025921, 0.132232],\n                 [0.042253, 0.028139, 0.141141],\n                 [0.046915, 0.030324, 0.150164],\n                 [0.051644, 0.032474, 0.159254],\n                 [0.056449, 0.034569, 0.168414],\n                 [0.061340, 0.036590, 0.177642],\n                 [0.066331, 0.038504, 0.186962],\n                 [0.071429, 0.040294, 0.196354],\n                 [0.076637, 0.041905, 0.205799],\n                 [0.081962, 0.043328, 0.215289],\n                 [0.087411, 0.044556, 0.224813],\n                 [0.092990, 0.045583, 0.234358],\n                 [0.098702, 0.046402, 0.243904],\n                 [0.104551, 0.047008, 0.253430],\n                 [0.110536, 0.047399, 0.262912],\n                 [0.116656, 0.047574, 0.272321],\n                 [0.122908, 0.047536, 0.281624],\n                 [0.129285, 0.047293, 0.290788],\n                 [0.135778, 0.046856, 0.299776],\n                 [0.142378, 0.046242, 0.308553],\n                 [0.149073, 0.045468, 0.317085],\n                 [0.155850, 0.044559, 0.325338],\n                 [0.162689, 0.043554, 0.333277],\n                 [0.169575, 0.042489, 0.340874],\n                 [0.176493, 0.041402, 0.348111],\n                 [0.183429, 0.040329, 0.354971],\n                 [0.190367, 0.039309, 0.361447],\n                 [0.197297, 0.038400, 0.367535],\n                 [0.204209, 0.037632, 0.373238],\n                 [0.211095, 0.037030, 0.378563],\n                 [0.217949, 0.036615, 0.383522],\n                 [0.224763, 0.036405, 0.388129],\n                 [0.231538, 0.036405, 0.392400],\n                 [0.238273, 0.036621, 0.396353],\n                 [0.244967, 0.037055, 0.400007],\n                 [0.251620, 0.037705, 0.403378],\n                 [0.258234, 0.038571, 0.406485],\n                 [0.264810, 0.039647, 0.409345],\n                 [0.271347, 0.040922, 0.411976],\n                 [0.277850, 0.042353, 0.414392],\n                 [0.284321, 0.043933, 0.416608],\n                 [0.290763, 0.045644, 0.418637],\n                 [0.297178, 0.047470, 0.420491],\n                 [0.303568, 0.049396, 0.422182],\n                 [0.309935, 0.051407, 0.423721],\n                 [0.316282, 0.053490, 0.425116],\n                 [0.322610, 0.055634, 0.426377],\n                 [0.328921, 0.057827, 0.427511],\n                 [0.335217, 0.060060, 0.428524],\n                 [0.341500, 0.062325, 0.429425],\n                 [0.347771, 0.064616, 0.430217],\n                 [0.354032, 0.066925, 0.430906],\n                 [0.360284, 0.069247, 0.431497],\n                 [0.366529, 0.071579, 0.431994],\n                 [0.372768, 0.073915, 0.432400],\n                 [0.379001, 0.076253, 0.432719],\n                 [0.385228, 0.078591, 0.432955],\n                 [0.391453, 0.080927, 0.433109],\n                 [0.397674, 0.083257, 0.433183],\n                 [0.403894, 0.085580, 0.433179],\n                 [0.410113, 0.087896, 0.433098],\n                 [0.416331, 0.090203, 0.432943],\n                 [0.422549, 0.092501, 0.432714],\n                 [0.428768, 0.094790, 0.432412],\n                 [0.434987, 0.097069, 0.432039],\n                 [0.441207, 0.099338, 0.431594],\n                 [0.447428, 0.101597, 0.431080],\n                 [0.453651, 0.103848, 0.430498],\n                 [0.459875, 0.106089, 0.429846],\n                 [0.466100, 0.108322, 0.429125],\n                 [0.472328, 0.110547, 0.428334],\n                 [0.478558, 0.112764, 0.427475],\n                 [0.484789, 0.114974, 0.426548],\n                 [0.491022, 0.117179, 0.425552],\n                 [0.497257, 0.119379, 0.424488],\n                 [0.503493, 0.121575, 0.423356],\n                 [0.509730, 0.123769, 0.422156],\n                 [0.515967, 0.125960, 0.420887],\n                 [0.522206, 0.128150, 0.419549],\n                 [0.528444, 0.130341, 0.418142],\n                 [0.534683, 0.132534, 0.416667],\n                 [0.540920, 0.134729, 0.415123],\n                 [0.547157, 0.136929, 0.413511],\n                 [0.553392, 0.139134, 0.411829],\n                 [0.559624, 0.141346, 0.410078],\n                 [0.565854, 0.143567, 0.408258],\n                 [0.572081, 0.145797, 0.406369],\n                 [0.578304, 0.148039, 0.404411],\n                 [0.584521, 0.150294, 0.402385],\n                 [0.590734, 0.152563, 0.400290],\n                 [0.596940, 0.154848, 0.398125],\n                 [0.603139, 0.157151, 0.395891],\n                 [0.609330, 0.159474, 0.393589],\n                 [0.615513, 0.161817, 0.391219],\n                 [0.621685, 0.164184, 0.388781],\n                 [0.627847, 0.166575, 0.386276],\n                 [0.633998, 0.168992, 0.383704],\n                 [0.640135, 0.171438, 0.381065],\n                 [0.646260, 0.173914, 0.378359],\n                 [0.652369, 0.176421, 0.375586],\n                 [0.658463, 0.178962, 0.372748],\n                 [0.664540, 0.181539, 0.369846],\n                 [0.670599, 0.184153, 0.366879],\n                 [0.676638, 0.186807, 0.363849],\n                 [0.682656, 0.189501, 0.360757],\n                 [0.688653, 0.192239, 0.357603],\n                 [0.694627, 0.195021, 0.354388],\n                 [0.700576, 0.197851, 0.351113],\n                 [0.706500, 0.200728, 0.347777],\n                 [0.712396, 0.203656, 0.344383],\n                 [0.718264, 0.206636, 0.340931],\n                 [0.724103, 0.209670, 0.337424],\n                 [0.729909, 0.212759, 0.333861],\n                 [0.735683, 0.215906, 0.330245],\n                 [0.741423, 0.219112, 0.326576],\n                 [0.747127, 0.222378, 0.322856],\n                 [0.752794, 0.225706, 0.319085],\n                 [0.758422, 0.229097, 0.315266],\n                 [0.764010, 0.232554, 0.311399],\n                 [0.769556, 0.236077, 0.307485],\n                 [0.775059, 0.239667, 0.303526],\n                 [0.780517, 0.243327, 0.299523],\n                 [0.785929, 0.247056, 0.295477],\n                 [0.791293, 0.250856, 0.291390],\n                 [0.796607, 0.254728, 0.287264],\n                 [0.801871, 0.258674, 0.283099],\n                 [0.807082, 0.262692, 0.278898],\n                 [0.812239, 0.266786, 0.274661],\n                 [0.817341, 0.270954, 0.270390],\n                 [0.822386, 0.275197, 0.266085],\n                 [0.827372, 0.279517, 0.261750],\n                 [0.832299, 0.283913, 0.257383],\n                 [0.837165, 0.288385, 0.252988],\n                 [0.841969, 0.292933, 0.248564],\n                 [0.846709, 0.297559, 0.244113],\n                 [0.851384, 0.302260, 0.239636],\n                 [0.855992, 0.307038, 0.235133],\n                 [0.860533, 0.311892, 0.230606],\n                 [0.865006, 0.316822, 0.226055],\n                 [0.869409, 0.321827, 0.221482],\n                 [0.873741, 0.326906, 0.216886],\n                 [0.878001, 0.332060, 0.212268],\n                 [0.882188, 0.337287, 0.207628],\n                 [0.886302, 0.342586, 0.202968],\n                 [0.890341, 0.347957, 0.198286],\n                 [0.894305, 0.353399, 0.193584],\n                 [0.898192, 0.358911, 0.188860],\n                 [0.902003, 0.364492, 0.184116],\n                 [0.905735, 0.370140, 0.179350],\n                 [0.909390, 0.375856, 0.174563],\n                 [0.912966, 0.381636, 0.169755],\n                 [0.916462, 0.387481, 0.164924],\n                 [0.919879, 0.393389, 0.160070],\n                 [0.923215, 0.399359, 0.155193],\n                 [0.926470, 0.405389, 0.150292],\n                 [0.929644, 0.411479, 0.145367],\n                 [0.932737, 0.417627, 0.140417],\n                 [0.935747, 0.423831, 0.135440],\n                 [0.938675, 0.430091, 0.130438],\n                 [0.941521, 0.436405, 0.125409],\n                 [0.944285, 0.442772, 0.120354],\n                 [0.946965, 0.449191, 0.115272],\n                 [0.949562, 0.455660, 0.110164],\n                 [0.952075, 0.462178, 0.105031],\n                 [0.954506, 0.468744, 0.099874],\n                 [0.956852, 0.475356, 0.094695],\n                 [0.959114, 0.482014, 0.089499],\n                 [0.961293, 0.488716, 0.084289],\n                 [0.963387, 0.495462, 0.079073],\n                 [0.965397, 0.502249, 0.073859],\n                 [0.967322, 0.509078, 0.068659],\n                 [0.969163, 0.515946, 0.063488],\n                 [0.970919, 0.522853, 0.058367],\n                 [0.972590, 0.529798, 0.053324],\n                 [0.974176, 0.536780, 0.048392],\n                 [0.975677, 0.543798, 0.043618],\n                 [0.977092, 0.550850, 0.039050],\n                 [0.978422, 0.557937, 0.034931],\n                 [0.979666, 0.565057, 0.031409],\n                 [0.980824, 0.572209, 0.028508],\n                 [0.981895, 0.579392, 0.026250],\n                 [0.982881, 0.586606, 0.024661],\n                 [0.983779, 0.593849, 0.023770],\n                 [0.984591, 0.601122, 0.023606],\n                 [0.985315, 0.608422, 0.024202],\n                 [0.985952, 0.615750, 0.025592],\n                 [0.986502, 0.623105, 0.027814],\n                 [0.986964, 0.630485, 0.030908],\n                 [0.987337, 0.637890, 0.034916],\n                 [0.987622, 0.645320, 0.039886],\n                 [0.987819, 0.652773, 0.045581],\n                 [0.987926, 0.660250, 0.051750],\n                 [0.987945, 0.667748, 0.058329],\n                 [0.987874, 0.675267, 0.065257],\n                 [0.987714, 0.682807, 0.072489],\n                 [0.987464, 0.690366, 0.079990],\n                 [0.987124, 0.697944, 0.087731],\n                 [0.986694, 0.705540, 0.095694],\n                 [0.986175, 0.713153, 0.103863],\n                 [0.985566, 0.720782, 0.112229],\n                 [0.984865, 0.728427, 0.120785],\n                 [0.984075, 0.736087, 0.129527],\n                 [0.983196, 0.743758, 0.138453],\n                 [0.982228, 0.751442, 0.147565],\n                 [0.981173, 0.759135, 0.156863],\n                 [0.980032, 0.766837, 0.166353],\n                 [0.978806, 0.774545, 0.176037],\n                 [0.977497, 0.782258, 0.185923],\n                 [0.976108, 0.789974, 0.196018],\n                 [0.974638, 0.797692, 0.206332],\n                 [0.973088, 0.805409, 0.216877],\n                 [0.971468, 0.813122, 0.227658],\n                 [0.969783, 0.820825, 0.238686],\n                 [0.968041, 0.828515, 0.249972],\n                 [0.966243, 0.836191, 0.261534],\n                 [0.964394, 0.843848, 0.273391],\n                 [0.962517, 0.851476, 0.285546],\n                 [0.960626, 0.859069, 0.298010],\n                 [0.958720, 0.866624, 0.310820],\n                 [0.956834, 0.874129, 0.323974],\n                 [0.954997, 0.881569, 0.337475],\n                 [0.953215, 0.888942, 0.351369],\n                 [0.951546, 0.896226, 0.365627],\n                 [0.950018, 0.903409, 0.380271],\n                 [0.948683, 0.910473, 0.395289],\n                 [0.947594, 0.917399, 0.410665],\n                 [0.946809, 0.924168, 0.426373],\n                 [0.946392, 0.930761, 0.442367],\n                 [0.946403, 0.937159, 0.458592],\n                 [0.946903, 0.943348, 0.474970],\n                 [0.947937, 0.949318, 0.491426],\n                 [0.949545, 0.955063, 0.507860],\n                 [0.951740, 0.960587, 0.524203],\n                 [0.954529, 0.965896, 0.540361],\n                 [0.957896, 0.971003, 0.556275],\n                 [0.961812, 0.975924, 0.571925],\n                 [0.966249, 0.980678, 0.587206],\n                 [0.971162, 0.985282, 0.602154],\n                 [0.976511, 0.989753, 0.616760],\n                 [0.982257, 0.994109, 0.631017],\n                 [0.988362, 0.998364, 0.644924]]\n\n_plasma_data = [[0.050383, 0.029803, 0.527975],\n                [0.063536, 0.028426, 0.533124],\n                [0.075353, 0.027206, 0.538007],\n                [0.086222, 0.026125, 0.542658],\n                [0.096379, 0.025165, 0.547103],\n                [0.105980, 0.024309, 0.551368],\n                [0.115124, 0.023556, 0.555468],\n                [0.123903, 0.022878, 0.559423],\n                [0.132381, 0.022258, 0.563250],\n                [0.140603, 0.021687, 0.566959],\n                [0.148607, 0.021154, 0.570562],\n                [0.156421, 0.020651, 0.574065],\n                [0.164070, 0.020171, 0.577478],\n                [0.171574, 0.019706, 0.580806],\n                [0.178950, 0.019252, 0.584054],\n                [0.186213, 0.018803, 0.587228],\n                [0.193374, 0.018354, 0.590330],\n                [0.200445, 0.017902, 0.593364],\n                [0.207435, 0.017442, 0.596333],\n                [0.214350, 0.016973, 0.599239],\n                [0.221197, 0.016497, 0.602083],\n                [0.227983, 0.016007, 0.604867],\n                [0.234715, 0.015502, 0.607592],\n                [0.241396, 0.014979, 0.610259],\n                [0.248032, 0.014439, 0.612868],\n                [0.254627, 0.013882, 0.615419],\n                [0.261183, 0.013308, 0.617911],\n                [0.267703, 0.012716, 0.620346],\n                [0.274191, 0.012109, 0.622722],\n                [0.280648, 0.011488, 0.625038],\n                [0.287076, 0.010855, 0.627295],\n                [0.293478, 0.010213, 0.629490],\n                [0.299855, 0.009561, 0.631624],\n                [0.306210, 0.008902, 0.633694],\n                [0.312543, 0.008239, 0.635700],\n                [0.318856, 0.007576, 0.637640],\n                [0.325150, 0.006915, 0.639512],\n                [0.331426, 0.006261, 0.641316],\n                [0.337683, 0.005618, 0.643049],\n                [0.343925, 0.004991, 0.644710],\n                [0.350150, 0.004382, 0.646298],\n                [0.356359, 0.003798, 0.647810],\n                [0.362553, 0.003243, 0.649245],\n                [0.368733, 0.002724, 0.650601],\n                [0.374897, 0.002245, 0.651876],\n                [0.381047, 0.001814, 0.653068],\n                [0.387183, 0.001434, 0.654177],\n                [0.393304, 0.001114, 0.655199],\n                [0.399411, 0.000859, 0.656133],\n                [0.405503, 0.000678, 0.656977],\n                [0.411580, 0.000577, 0.657730],\n                [0.417642, 0.000564, 0.658390],\n                [0.423689, 0.000646, 0.658956],\n                [0.429719, 0.000831, 0.659425],\n                [0.435734, 0.001127, 0.659797],\n                [0.441732, 0.001540, 0.660069],\n                [0.447714, 0.002080, 0.660240],\n                [0.453677, 0.002755, 0.660310],\n                [0.459623, 0.003574, 0.660277],\n                [0.465550, 0.004545, 0.660139],\n                [0.471457, 0.005678, 0.659897],\n                [0.477344, 0.006980, 0.659549],\n                [0.483210, 0.008460, 0.659095],\n                [0.489055, 0.010127, 0.658534],\n                [0.494877, 0.011990, 0.657865],\n                [0.500678, 0.014055, 0.657088],\n                [0.506454, 0.016333, 0.656202],\n                [0.512206, 0.018833, 0.655209],\n                [0.517933, 0.021563, 0.654109],\n                [0.523633, 0.024532, 0.652901],\n                [0.529306, 0.027747, 0.651586],\n                [0.534952, 0.031217, 0.650165],\n                [0.540570, 0.034950, 0.648640],\n                [0.546157, 0.038954, 0.647010],\n                [0.551715, 0.043136, 0.645277],\n                [0.557243, 0.047331, 0.643443],\n                [0.562738, 0.051545, 0.641509],\n                [0.568201, 0.055778, 0.639477],\n                [0.573632, 0.060028, 0.637349],\n                [0.579029, 0.064296, 0.635126],\n                [0.584391, 0.068579, 0.632812],\n                [0.589719, 0.072878, 0.630408],\n                [0.595011, 0.077190, 0.627917],\n                [0.600266, 0.081516, 0.625342],\n                [0.605485, 0.085854, 0.622686],\n                [0.610667, 0.090204, 0.619951],\n                [0.615812, 0.094564, 0.617140],\n                [0.620919, 0.098934, 0.614257],\n                [0.625987, 0.103312, 0.611305],\n                [0.631017, 0.107699, 0.608287],\n                [0.636008, 0.112092, 0.605205],\n                [0.640959, 0.116492, 0.602065],\n                [0.645872, 0.120898, 0.598867],\n                [0.650746, 0.125309, 0.595617],\n                [0.655580, 0.129725, 0.592317],\n                [0.660374, 0.134144, 0.588971],\n                [0.665129, 0.138566, 0.585582],\n                [0.669845, 0.142992, 0.582154],\n                [0.674522, 0.147419, 0.578688],\n                [0.679160, 0.151848, 0.575189],\n                [0.683758, 0.156278, 0.571660],\n                [0.688318, 0.160709, 0.568103],\n                [0.692840, 0.165141, 0.564522],\n                [0.697324, 0.169573, 0.560919],\n                [0.701769, 0.174005, 0.557296],\n                [0.706178, 0.178437, 0.553657],\n                [0.710549, 0.182868, 0.550004],\n                [0.714883, 0.187299, 0.546338],\n                [0.719181, 0.191729, 0.542663],\n                [0.723444, 0.196158, 0.538981],\n                [0.727670, 0.200586, 0.535293],\n                [0.731862, 0.205013, 0.531601],\n                [0.736019, 0.209439, 0.527908],\n                [0.740143, 0.213864, 0.524216],\n                [0.744232, 0.218288, 0.520524],\n                [0.748289, 0.222711, 0.516834],\n                [0.752312, 0.227133, 0.513149],\n                [0.756304, 0.231555, 0.509468],\n                [0.760264, 0.235976, 0.505794],\n                [0.764193, 0.240396, 0.502126],\n                [0.768090, 0.244817, 0.498465],\n                [0.771958, 0.249237, 0.494813],\n                [0.775796, 0.253658, 0.491171],\n                [0.779604, 0.258078, 0.487539],\n                [0.783383, 0.262500, 0.483918],\n                [0.787133, 0.266922, 0.480307],\n                [0.790855, 0.271345, 0.476706],\n                [0.794549, 0.275770, 0.473117],\n                [0.798216, 0.280197, 0.469538],\n                [0.801855, 0.284626, 0.465971],\n                [0.805467, 0.289057, 0.462415],\n                [0.809052, 0.293491, 0.458870],\n                [0.812612, 0.297928, 0.455338],\n                [0.816144, 0.302368, 0.451816],\n                [0.819651, 0.306812, 0.448306],\n                [0.823132, 0.311261, 0.444806],\n                [0.826588, 0.315714, 0.441316],\n                [0.830018, 0.320172, 0.437836],\n                [0.833422, 0.324635, 0.434366],\n                [0.836801, 0.329105, 0.430905],\n                [0.840155, 0.333580, 0.427455],\n                [0.843484, 0.338062, 0.424013],\n                [0.846788, 0.342551, 0.420579],\n                [0.850066, 0.347048, 0.417153],\n                [0.853319, 0.351553, 0.413734],\n                [0.856547, 0.356066, 0.410322],\n                [0.859750, 0.360588, 0.406917],\n                [0.862927, 0.365119, 0.403519],\n                [0.866078, 0.369660, 0.400126],\n                [0.869203, 0.374212, 0.396738],\n                [0.872303, 0.378774, 0.393355],\n                [0.875376, 0.383347, 0.389976],\n                [0.878423, 0.387932, 0.386600],\n                [0.881443, 0.392529, 0.383229],\n                [0.884436, 0.397139, 0.379860],\n                [0.887402, 0.401762, 0.376494],\n                [0.890340, 0.406398, 0.373130],\n                [0.893250, 0.411048, 0.369768],\n                [0.896131, 0.415712, 0.366407],\n                [0.898984, 0.420392, 0.363047],\n                [0.901807, 0.425087, 0.359688],\n                [0.904601, 0.429797, 0.356329],\n                [0.907365, 0.434524, 0.352970],\n                [0.910098, 0.439268, 0.349610],\n                [0.912800, 0.444029, 0.346251],\n                [0.915471, 0.448807, 0.342890],\n                [0.918109, 0.453603, 0.339529],\n                [0.920714, 0.458417, 0.336166],\n                [0.923287, 0.463251, 0.332801],\n                [0.925825, 0.468103, 0.329435],\n                [0.928329, 0.472975, 0.326067],\n                [0.930798, 0.477867, 0.322697],\n                [0.933232, 0.482780, 0.319325],\n                [0.935630, 0.487712, 0.315952],\n                [0.937990, 0.492667, 0.312575],\n                [0.940313, 0.497642, 0.309197],\n                [0.942598, 0.502639, 0.305816],\n                [0.944844, 0.507658, 0.302433],\n                [0.947051, 0.512699, 0.299049],\n                [0.949217, 0.517763, 0.295662],\n                [0.951344, 0.522850, 0.292275],\n                [0.953428, 0.527960, 0.288883],\n                [0.955470, 0.533093, 0.285490],\n                [0.957469, 0.538250, 0.282096],\n                [0.959424, 0.543431, 0.278701],\n                [0.961336, 0.548636, 0.275305],\n                [0.963203, 0.553865, 0.271909],\n                [0.965024, 0.559118, 0.268513],\n                [0.966798, 0.564396, 0.265118],\n                [0.968526, 0.569700, 0.261721],\n                [0.970205, 0.575028, 0.258325],\n                [0.971835, 0.580382, 0.254931],\n                [0.973416, 0.585761, 0.251540],\n                [0.974947, 0.591165, 0.248151],\n                [0.976428, 0.596595, 0.244767],\n                [0.977856, 0.602051, 0.241387],\n                [0.979233, 0.607532, 0.238013],\n                [0.980556, 0.613039, 0.234646],\n                [0.981826, 0.618572, 0.231287],\n                [0.983041, 0.624131, 0.227937],\n                [0.984199, 0.629718, 0.224595],\n                [0.985301, 0.635330, 0.221265],\n                [0.986345, 0.640969, 0.217948],\n                [0.987332, 0.646633, 0.214648],\n                [0.988260, 0.652325, 0.211364],\n                [0.989128, 0.658043, 0.208100],\n                [0.989935, 0.663787, 0.204859],\n                [0.990681, 0.669558, 0.201642],\n                [0.991365, 0.675355, 0.198453],\n                [0.991985, 0.681179, 0.195295],\n                [0.992541, 0.687030, 0.192170],\n                [0.993032, 0.692907, 0.189084],\n                [0.993456, 0.698810, 0.186041],\n                [0.993814, 0.704741, 0.183043],\n                [0.994103, 0.710698, 0.180097],\n                [0.994324, 0.716681, 0.177208],\n                [0.994474, 0.722691, 0.174381],\n                [0.994553, 0.728728, 0.171622],\n                [0.994561, 0.734791, 0.168938],\n                [0.994495, 0.740880, 0.166335],\n                [0.994355, 0.746995, 0.163821],\n                [0.994141, 0.753137, 0.161404],\n                [0.993851, 0.759304, 0.159092],\n                [0.993482, 0.765499, 0.156891],\n                [0.993033, 0.771720, 0.154808],\n                [0.992505, 0.777967, 0.152855],\n                [0.991897, 0.784239, 0.151042],\n                [0.991209, 0.790537, 0.149377],\n                [0.990439, 0.796859, 0.147870],\n                [0.989587, 0.803205, 0.146529],\n                [0.988648, 0.809579, 0.145357],\n                [0.987621, 0.815978, 0.144363],\n                [0.986509, 0.822401, 0.143557],\n                [0.985314, 0.828846, 0.142945],\n                [0.984031, 0.835315, 0.142528],\n                [0.982653, 0.841812, 0.142303],\n                [0.981190, 0.848329, 0.142279],\n                [0.979644, 0.854866, 0.142453],\n                [0.977995, 0.861432, 0.142808],\n                [0.976265, 0.868016, 0.143351],\n                [0.974443, 0.874622, 0.144061],\n                [0.972530, 0.881250, 0.144923],\n                [0.970533, 0.887896, 0.145919],\n                [0.968443, 0.894564, 0.147014],\n                [0.966271, 0.901249, 0.148180],\n                [0.964021, 0.907950, 0.149370],\n                [0.961681, 0.914672, 0.150520],\n                [0.959276, 0.921407, 0.151566],\n                [0.956808, 0.928152, 0.152409],\n                [0.954287, 0.934908, 0.152921],\n                [0.951726, 0.941671, 0.152925],\n                [0.949151, 0.948435, 0.152178],\n                [0.946602, 0.955190, 0.150328],\n                [0.944152, 0.961916, 0.146861],\n                [0.941896, 0.968590, 0.140956],\n                [0.940015, 0.975158, 0.131326]]\n\n_viridis_data = [[0.267004, 0.004874, 0.329415],\n                 [0.268510, 0.009605, 0.335427],\n                 [0.269944, 0.014625, 0.341379],\n                 [0.271305, 0.019942, 0.347269],\n                 [0.272594, 0.025563, 0.353093],\n                 [0.273809, 0.031497, 0.358853],\n                 [0.274952, 0.037752, 0.364543],\n                 [0.276022, 0.044167, 0.370164],\n                 [0.277018, 0.050344, 0.375715],\n                 [0.277941, 0.056324, 0.381191],\n                 [0.278791, 0.062145, 0.386592],\n                 [0.279566, 0.067836, 0.391917],\n                 [0.280267, 0.073417, 0.397163],\n                 [0.280894, 0.078907, 0.402329],\n                 [0.281446, 0.084320, 0.407414],\n                 [0.281924, 0.089666, 0.412415],\n                 [0.282327, 0.094955, 0.417331],\n                 [0.282656, 0.100196, 0.422160],\n                 [0.282910, 0.105393, 0.426902],\n                 [0.283091, 0.110553, 0.431554],\n                 [0.283197, 0.115680, 0.436115],\n                 [0.283229, 0.120777, 0.440584],\n                 [0.283187, 0.125848, 0.444960],\n                 [0.283072, 0.130895, 0.449241],\n                 [0.282884, 0.135920, 0.453427],\n                 [0.282623, 0.140926, 0.457517],\n                 [0.282290, 0.145912, 0.461510],\n                 [0.281887, 0.150881, 0.465405],\n                 [0.281412, 0.155834, 0.469201],\n                 [0.280868, 0.160771, 0.472899],\n                 [0.280255, 0.165693, 0.476498],\n                 [0.279574, 0.170599, 0.479997],\n                 [0.278826, 0.175490, 0.483397],\n                 [0.278012, 0.180367, 0.486697],\n                 [0.277134, 0.185228, 0.489898],\n                 [0.276194, 0.190074, 0.493001],\n                 [0.275191, 0.194905, 0.496005],\n                 [0.274128, 0.199721, 0.498911],\n                 [0.273006, 0.204520, 0.501721],\n                 [0.271828, 0.209303, 0.504434],\n                 [0.270595, 0.214069, 0.507052],\n                 [0.269308, 0.218818, 0.509577],\n                 [0.267968, 0.223549, 0.512008],\n                 [0.266580, 0.228262, 0.514349],\n                 [0.265145, 0.232956, 0.516599],\n                 [0.263663, 0.237631, 0.518762],\n                 [0.262138, 0.242286, 0.520837],\n                 [0.260571, 0.246922, 0.522828],\n                 [0.258965, 0.251537, 0.524736],\n                 [0.257322, 0.256130, 0.526563],\n                 [0.255645, 0.260703, 0.528312],\n                 [0.253935, 0.265254, 0.529983],\n                 [0.252194, 0.269783, 0.531579],\n                 [0.250425, 0.274290, 0.533103],\n                 [0.248629, 0.278775, 0.534556],\n                 [0.246811, 0.283237, 0.535941],\n                 [0.244972, 0.287675, 0.537260],\n                 [0.243113, 0.292092, 0.538516],\n                 [0.241237, 0.296485, 0.539709],\n                 [0.239346, 0.300855, 0.540844],\n                 [0.237441, 0.305202, 0.541921],\n                 [0.235526, 0.309527, 0.542944],\n                 [0.233603, 0.313828, 0.543914],\n                 [0.231674, 0.318106, 0.544834],\n                 [0.229739, 0.322361, 0.545706],\n                 [0.227802, 0.326594, 0.546532],\n                 [0.225863, 0.330805, 0.547314],\n                 [0.223925, 0.334994, 0.548053],\n                 [0.221989, 0.339161, 0.548752],\n                 [0.220057, 0.343307, 0.549413],\n                 [0.218130, 0.347432, 0.550038],\n                 [0.216210, 0.351535, 0.550627],\n                 [0.214298, 0.355619, 0.551184],\n                 [0.212395, 0.359683, 0.551710],\n                 [0.210503, 0.363727, 0.552206],\n                 [0.208623, 0.367752, 0.552675],\n                 [0.206756, 0.371758, 0.553117],\n                 [0.204903, 0.375746, 0.553533],\n                 [0.203063, 0.379716, 0.553925],\n                 [0.201239, 0.383670, 0.554294],\n                 [0.199430, 0.387607, 0.554642],\n                 [0.197636, 0.391528, 0.554969],\n                 [0.195860, 0.395433, 0.555276],\n                 [0.194100, 0.399323, 0.555565],\n                 [0.192357, 0.403199, 0.555836],\n                 [0.190631, 0.407061, 0.556089],\n                 [0.188923, 0.410910, 0.556326],\n                 [0.187231, 0.414746, 0.556547],\n                 [0.185556, 0.418570, 0.556753],\n                 [0.183898, 0.422383, 0.556944],\n                 [0.182256, 0.426184, 0.557120],\n                 [0.180629, 0.429975, 0.557282],\n                 [0.179019, 0.433756, 0.557430],\n                 [0.177423, 0.437527, 0.557565],\n                 [0.175841, 0.441290, 0.557685],\n                 [0.174274, 0.445044, 0.557792],\n                 [0.172719, 0.448791, 0.557885],\n                 [0.171176, 0.452530, 0.557965],\n                 [0.169646, 0.456262, 0.558030],\n                 [0.168126, 0.459988, 0.558082],\n                 [0.166617, 0.463708, 0.558119],\n                 [0.165117, 0.467423, 0.558141],\n                 [0.163625, 0.471133, 0.558148],\n                 [0.162142, 0.474838, 0.558140],\n                 [0.160665, 0.478540, 0.558115],\n                 [0.159194, 0.482237, 0.558073],\n                 [0.157729, 0.485932, 0.558013],\n                 [0.156270, 0.489624, 0.557936],\n                 [0.154815, 0.493313, 0.557840],\n                 [0.153364, 0.497000, 0.557724],\n                 [0.151918, 0.500685, 0.557587],\n                 [0.150476, 0.504369, 0.557430],\n                 [0.149039, 0.508051, 0.557250],\n                 [0.147607, 0.511733, 0.557049],\n                 [0.146180, 0.515413, 0.556823],\n                 [0.144759, 0.519093, 0.556572],\n                 [0.143343, 0.522773, 0.556295],\n                 [0.141935, 0.526453, 0.555991],\n                 [0.140536, 0.530132, 0.555659],\n                 [0.139147, 0.533812, 0.555298],\n                 [0.137770, 0.537492, 0.554906],\n                 [0.136408, 0.541173, 0.554483],\n                 [0.135066, 0.544853, 0.554029],\n                 [0.133743, 0.548535, 0.553541],\n                 [0.132444, 0.552216, 0.553018],\n                 [0.131172, 0.555899, 0.552459],\n                 [0.129933, 0.559582, 0.551864],\n                 [0.128729, 0.563265, 0.551229],\n                 [0.127568, 0.566949, 0.550556],\n                 [0.126453, 0.570633, 0.549841],\n                 [0.125394, 0.574318, 0.549086],\n                 [0.124395, 0.578002, 0.548287],\n                 [0.123463, 0.581687, 0.547445],\n                 [0.122606, 0.585371, 0.546557],\n                 [0.121831, 0.589055, 0.545623],\n                 [0.121148, 0.592739, 0.544641],\n                 [0.120565, 0.596422, 0.543611],\n                 [0.120092, 0.600104, 0.542530],\n                 [0.119738, 0.603785, 0.541400],\n                 [0.119512, 0.607464, 0.540218],\n                 [0.119423, 0.611141, 0.538982],\n                 [0.119483, 0.614817, 0.537692],\n                 [0.119699, 0.618490, 0.536347],\n                 [0.120081, 0.622161, 0.534946],\n                 [0.120638, 0.625828, 0.533488],\n                 [0.121380, 0.629492, 0.531973],\n                 [0.122312, 0.633153, 0.530398],\n                 [0.123444, 0.636809, 0.528763],\n                 [0.124780, 0.640461, 0.527068],\n                 [0.126326, 0.644107, 0.525311],\n                 [0.128087, 0.647749, 0.523491],\n                 [0.130067, 0.651384, 0.521608],\n                 [0.132268, 0.655014, 0.519661],\n                 [0.134692, 0.658636, 0.517649],\n                 [0.137339, 0.662252, 0.515571],\n                 [0.140210, 0.665859, 0.513427],\n                 [0.143303, 0.669459, 0.511215],\n                 [0.146616, 0.673050, 0.508936],\n                 [0.150148, 0.676631, 0.506589],\n                 [0.153894, 0.680203, 0.504172],\n                 [0.157851, 0.683765, 0.501686],\n                 [0.162016, 0.687316, 0.499129],\n                 [0.166383, 0.690856, 0.496502],\n                 [0.170948, 0.694384, 0.493803],\n                 [0.175707, 0.697900, 0.491033],\n                 [0.180653, 0.701402, 0.488189],\n                 [0.185783, 0.704891, 0.485273],\n                 [0.191090, 0.708366, 0.482284],\n                 [0.196571, 0.711827, 0.479221],\n                 [0.202219, 0.715272, 0.476084],\n                 [0.208030, 0.718701, 0.472873],\n                 [0.214000, 0.722114, 0.469588],\n                 [0.220124, 0.725509, 0.466226],\n                 [0.226397, 0.728888, 0.462789],\n                 [0.232815, 0.732247, 0.459277],\n                 [0.239374, 0.735588, 0.455688],\n                 [0.246070, 0.738910, 0.452024],\n                 [0.252899, 0.742211, 0.448284],\n                 [0.259857, 0.745492, 0.444467],\n                 [0.266941, 0.748751, 0.440573],\n                 [0.274149, 0.751988, 0.436601],\n                 [0.281477, 0.755203, 0.432552],\n                 [0.288921, 0.758394, 0.428426],\n                 [0.296479, 0.761561, 0.424223],\n                 [0.304148, 0.764704, 0.419943],\n                 [0.311925, 0.767822, 0.415586],\n                 [0.319809, 0.770914, 0.411152],\n                 [0.327796, 0.773980, 0.406640],\n                 [0.335885, 0.777018, 0.402049],\n                 [0.344074, 0.780029, 0.397381],\n                 [0.352360, 0.783011, 0.392636],\n                 [0.360741, 0.785964, 0.387814],\n                 [0.369214, 0.788888, 0.382914],\n                 [0.377779, 0.791781, 0.377939],\n                 [0.386433, 0.794644, 0.372886],\n                 [0.395174, 0.797475, 0.367757],\n                 [0.404001, 0.800275, 0.362552],\n                 [0.412913, 0.803041, 0.357269],\n                 [0.421908, 0.805774, 0.351910],\n                 [0.430983, 0.808473, 0.346476],\n                 [0.440137, 0.811138, 0.340967],\n                 [0.449368, 0.813768, 0.335384],\n                 [0.458674, 0.816363, 0.329727],\n                 [0.468053, 0.818921, 0.323998],\n                 [0.477504, 0.821444, 0.318195],\n                 [0.487026, 0.823929, 0.312321],\n                 [0.496615, 0.826376, 0.306377],\n                 [0.506271, 0.828786, 0.300362],\n                 [0.515992, 0.831158, 0.294279],\n                 [0.525776, 0.833491, 0.288127],\n                 [0.535621, 0.835785, 0.281908],\n                 [0.545524, 0.838039, 0.275626],\n                 [0.555484, 0.840254, 0.269281],\n                 [0.565498, 0.842430, 0.262877],\n                 [0.575563, 0.844566, 0.256415],\n                 [0.585678, 0.846661, 0.249897],\n                 [0.595839, 0.848717, 0.243329],\n                 [0.606045, 0.850733, 0.236712],\n                 [0.616293, 0.852709, 0.230052],\n                 [0.626579, 0.854645, 0.223353],\n                 [0.636902, 0.856542, 0.216620],\n                 [0.647257, 0.858400, 0.209861],\n                 [0.657642, 0.860219, 0.203082],\n                 [0.668054, 0.861999, 0.196293],\n                 [0.678489, 0.863742, 0.189503],\n                 [0.688944, 0.865448, 0.182725],\n                 [0.699415, 0.867117, 0.175971],\n                 [0.709898, 0.868751, 0.169257],\n                 [0.720391, 0.870350, 0.162603],\n                 [0.730889, 0.871916, 0.156029],\n                 [0.741388, 0.873449, 0.149561],\n                 [0.751884, 0.874951, 0.143228],\n                 [0.762373, 0.876424, 0.137064],\n                 [0.772852, 0.877868, 0.131109],\n                 [0.783315, 0.879285, 0.125405],\n                 [0.793760, 0.880678, 0.120005],\n                 [0.804182, 0.882046, 0.114965],\n                 [0.814576, 0.883393, 0.110347],\n                 [0.824940, 0.884720, 0.106217],\n                 [0.835270, 0.886029, 0.102646],\n                 [0.845561, 0.887322, 0.099702],\n                 [0.855810, 0.888601, 0.097452],\n                 [0.866013, 0.889868, 0.095953],\n                 [0.876168, 0.891125, 0.095250],\n                 [0.886271, 0.892374, 0.095374],\n                 [0.896320, 0.893616, 0.096335],\n                 [0.906311, 0.894855, 0.098125],\n                 [0.916242, 0.896091, 0.100717],\n                 [0.926106, 0.897330, 0.104071],\n                 [0.935904, 0.898570, 0.108131],\n                 [0.945636, 0.899815, 0.112838],\n                 [0.955300, 0.901065, 0.118128],\n                 [0.964894, 0.902323, 0.123941],\n                 [0.974417, 0.903590, 0.130215],\n                 [0.983868, 0.904867, 0.136897],\n                 [0.993248, 0.906157, 0.143936]]\n\nfrom matplotlib.colors import ListedColormap\n\ncmaps = {}\nfor (name, data) in (('magma', _magma_data),\n                     ('inferno', _inferno_data),\n                     ('plasma', _plasma_data),\n                     ('viridis', _viridis_data)):\n\n    cmaps[name] = ListedColormap(data, name=name)\n\nmagma = cmaps['magma']\ninferno = cmaps['inferno']\nplasma = cmaps['plasma']\nviridis = cmaps['viridis']\n"
  },
  {
    "path": "evo_utils/src/evo_utils/display_DSI.py",
    "content": "# -*- coding: utf-8 -*-\n\nimport cv2\nimport numpy as np\nimport rospy\nfrom dvs_slam_msgs.msg import VoxelGrid\nfrom rospy.numpy_msg import numpy_msg\n\n\nfrom vispy import app, scene\nfrom vispy.visuals.transforms import STTransform\n\nimport time\n\nfov = 0.\nscale_factor = 500.\nbgcolor = 'gray'\ncmap = 'coolwarm'\n\n\ncanvas = scene.SceneCanvas(show=True, bgcolor=bgcolor, title='DSI')\nview = canvas.central_widget.add_view()\nview.camera = scene.cameras.TurntableCamera(\n    parent=view.scene, fov=fov, scale_factor=scale_factor)\n\nvol = scene.visuals.Volume(np.zeros((1, 1, 1)), parent=view.scene, cmap=cmap)\nvol.relative_step_size = 1.\n\n\ncv2.namedWindow('DSI', cv2.WINDOW_NORMAL)\n\n\ndef reorder_axes(arr):\n    \"\"\"\n    Shift right axes of arr, i.e., from (0,1,2) to (2,0,1)\n\n    @param arr array of which the axes have to be shifted\n    \"\"\"\n    arr = np.swapaxes(arr, 0, 2)\n    arr = np.swapaxes(arr, 1, 2)\n    return arr\n\n\ndef updateDSI(voxel_grid_msg):\n    \"\"\"\n    Updates the DSI in rviz from the received voxel_grid_msg\n\n    @param voxel_grid_msg message containing the new voxel grid\n    \"\"\"\n    msg = voxel_grid_msg.voxel_grid\n    h = msg.layout.dim[0].size\n    w = msg.layout.dim[1].size\n    N = msg.layout.dim[2].size\n\n    msg.data.setflags(write=True)\n    arr = reorder_axes(msg.data.reshape((h, w, N)))\n    clim = (np.min(arr), np.max(arr))\n\n    vol.set_data(arr, clim)\n    vol.update()\n\n    if updateDSI.set_transform:\n        z_scale = (w+h)/3./N\n        vol.transform = scene.STTransform(\n            scale=(1., 1., z_scale), translate=(-w/2, -h/2, -N/2*z_scale))\n        updateDSI.set_transform = False\n\n\nupdateDSI.set_transform = True\n\n\nif __name__ == '__main__':\n\n    topic_name = '/dvs_mapping/voxel_grid'\n\n    rospy.init_node('display_DSI')\n\n    rospy.Subscriber(topic_name,\n                     numpy_msg(VoxelGrid),\n                     updateDSI)\n    app.run()\n"
  },
  {
    "path": "evo_utils/src/evo_utils/publish_confidence.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport numpy as np\nimport rospy\nfrom dvs_slam_msgs.msg import VoxelGrid\nfrom rospy.numpy_msg import numpy_msg\nimport matplotlib.cm\nimport colormaps as cmaps\n\nfrom sensor_msgs.msg import Image\nfrom cv_bridge import CvBridge, CvBridgeError\n\nimport cv2\n\ncv_bridge = CvBridge()\nimage_pub = rospy.Publisher(\"dsi/confidence\",  Image, queue_size=10)\ncmap = matplotlib.cm.get_cmap('coolwarm')\n\n\ndef reorder_axes(arr):\n    \"\"\"\n    Shift right axes of arr, i.e., from (0,1,2) to (2,0,1)\n\n    @param arr array of which the axes have to be shifted\n    \"\"\"\n    arr = np.swapaxes(arr, 0, 2)\n    arr = np.swapaxes(arr, 1, 2)\n    return arr\n\n\ndef normalize(img):\n    \"\"\"\n    Scales image values between 0 and 1 (min-max normalization)\n\n    @param img the image to normalize\n    \"\"\"\n    return cv2.normalize(img, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)\n\n\ndef publish_confidence(voxel_grid_msg):\n    \"\"\"\n    Compute confidence for the received voxel grid and publishes it\n\n    Topic: \"voxel_grid\"\n\n    @param voxel_grid_msg message containing the voxel grid\n    \"\"\"\n    msg = voxel_grid_msg.voxel_grid\n    h = msg.layout.dim[0].size\n    w = msg.layout.dim[1].size\n    N = msg.layout.dim[2].size\n\n    msg.data.setflags(write=True)\n    arr = reorder_axes(msg.data.reshape((h, w, N)))  # axes: N h w\n\n    img = np.zeros((h+N, w+N), dtype=np.float32)\n    img[0:h, 0:w] = normalize(-np.amax(arr, axis=0))\n    img[h:h+N, 0:w] = normalize(-np.amax(arr, axis=1))\n    img[0:h, w:w+N] = normalize(-np.amax(arr, axis=2).T)\n    img[h+1:h+N, w+1:w+N] = 255\n    img = (255. * cmap(img)[:, :, :3]).astype(np.uint8)\n\n    c = (127, 127, 127)\n    cv2.line(img, (0, h), (img.shape[1], h), c)\n    cv2.line(img, (w, 0), (w, img.shape[0]), c)\n\n    image_pub.publish(cv_bridge.cv2_to_imgmsg(img, encoding=\"bgr8\"))\n\n\nif __name__ == '__main__':\n    topic_name = 'voxel_grid'\n    rospy.init_node('publish_confidence')\n    rospy.Subscriber(topic_name,\n                     numpy_msg(VoxelGrid),\n                     publish_confidence)\n    rospy.spin()\n"
  },
  {
    "path": "evo_utils/src/evo_utils/select_exposure_DAVIS.py",
    "content": "#!/usr/bin/env python\n\nimport roslib\nimport scipy.stats\nfrom cv_bridge import CvBridge, CvBridgeError\nimport cv2\nimport numpy as np\nfrom sensor_msgs.msg import Image\nimport dynamic_reconfigure.client\nimport rospy\nPACKAGE = 'davis_ros_driver'\nroslib.load_manifest(PACKAGE)\n\n\n\"\"\"\nSelects automatically the exposure for the davis sensor communicating \nwith the dynamic reconfigure service \"/davis_ros_driver\"\n\n@see computeEntropy, computeSumGradients, the score functions that can be \nused to evaluate the exposure quality. Set the desired one in \nExposureSelector.__init__, as self.computeScore = [desired score function]\n\"\"\"\n\n\nclass ExposureSelector:\n\n    def __init__(self):\n        self.bridge = CvBridge()\n        self.client = dynamic_reconfigure.client.Client(\n            \"/davis_ros_driver\", timeout=10, config_callback=self.exposureCallback)\n        rospy.Subscriber(\"image\", Image, self.imageCallback)\n\n        self.rate = 15\n        self.computeScore = self.computeEntropy\n        # self.computeScore = self.computeSumGradients # very sensitive to noise\n\n        self.reset()\n\n        self.selectOptimalExposureCallback()\n\n    def reset(self):\n        \"\"\"\n        Reset scores and current exposure\n        \"\"\"\n        self.current_exposure = None\n        self.scores = {}\n\n    def exposureCallback(self, config):\n        \"\"\"\n        Callback called when the dynamic reconfigure service changes the exposure.\n        Can be used to check the correctness of the update.\n\n        @config new configuration\n        \"\"\"\n        rospy.loginfo('Set exposure: {}'.format(config['exposure']))\n\n    def runPass(self, exposure_range, rate):\n        \"\"\"\n        For each possible exposure in exposure_range, evaluates the corresponding score \n        by waiting a new image after the exposure is selected. To do this, it works at a\n        frequency of rate Hz.\n\n        @param exposure_range possible values among which the optimal exposure has to be found\n        @param rate evaluation rate, used to wait imageCallback\n\n        @return the optimal exposure in the range given\n\n        @see imageCallback\n        \"\"\"\n        r = rospy.Rate(rate)\n        for i, exposure in enumerate(exposure_range):\n            if rospy.is_shutdown():\n                break\n\n            self.current_exposure = exposure\n            self.client.update_configuration(\n                {\"exposure\": self.current_exposure})\n            r.sleep()\n\n        finished = (i >= (len(exposure_range)-1))\n        if finished:\n            optimal_exposure = max(self.scores, key=self.scores.get)\n            self.reset()\n            return optimal_exposure  # an optimal exposure has been found\n        else:\n            return -1\n\n    def selectOptimalExposureCallback(self):\n        \"\"\"\n        Performs the automatic exposure selection algorithm\n\n        Two steps are performed. First, a first optimal exposure is found \n        with a coarse search in the range 100 <-> 27100. \n        Then, the exposure is refined with a finer search in the range \n        0.9 * first_solution <-> 1.1 first_solution.\n\n        @see runPass\n        \"\"\"\n        rospy.loginfo('Starting automatic exposure selection algorithm')\n\n        # Start searching for the optimal exposure\n        best_exp_pass1 = self.runPass(range(100, 27100, 3000), rate=self.rate)\n        # first pass, find coarse exposure\n        if best_exp_pass1 > 0:\n            rospy.loginfo('First pass: success!')\n            rospy.loginfo(\n                'Best exposure in first pass: {}'.format(best_exp_pass1))\n\n            # second pass, refine the exposure\n            exp_range = [int(exp) for exp in np.linspace(\n                0.9*best_exp_pass1, 1.1*best_exp_pass1, 10)]\n            best_exp_pass2 = self.runPass(exp_range, rate=self.rate)\n\n            if best_exp_pass2 > 0:\n                rospy.loginfo('Second pass: success!')\n                rospy.loginfo(\n                    'Best exposure in second pass: {}'.format(best_exp_pass2))\n                optimal_exposure = best_exp_pass2\n            else:\n                rospy.logerr(\n                    'Second pass: failure\\nSetting the best exposure found in first pass')\n                optimal_exposure = best_exp_pass1\n\n            self.client.update_configuration({\"exposure\": optimal_exposure})\n            self.reset()\n\n        else:\n            rospy.logerr(\n                'First pass: failure\\nCould not auto-set the exposure')\n\n    def computeEntropy(self, img):\n        \"\"\"\n        Computes image entropy as the entropy of the histogram of intensities\n\n        @param img the image of which the entropy has to be calculated\n\n        @return image entropy\n        \"\"\"\n        hist, bins = np.histogram(img.ravel(), bins=256, density=True)\n        return scipy.stats.entropy(hist)\n\n    def (self, img):\n        \"\"\"\n        Computes Ix.^2 + Iy.^2, the sum of the squared (pixel-wise) gradients\n\n        @param img image to calculate the gradients on\n\n        @return sum of squared (pixel-wise) gradients\n        \"\"\"\n        gradx, grady = cv2.Sobel(img, cv2.CV_8U, 1, 0, ksize=5), cv2.Sobel(\n            img, cv2.CV_8U, 0, 1, ksize=5)\n        #cv2.imshow(\"gradx\", gradx)\n        #cv2.imshow(\"grady\", grady)\n        # cv2.waitKey(10)\n        return np.sum(np.power(gradx, 2) + np.power(grady, 2))\n\n    def imageCallback(self, msg):\n        \"\"\"\n        After a new image is received, if it has been received with an exposure\n        for which no score is available, compute the score.\n\n        @param msg message containing the image received\n\n        @see computeEntropy, computeSumGradients which are the available score functions\n        \"\"\"\n        if self.current_exposure and (not self.current_exposure in self.scores):\n            self.img = self.bridge.imgmsg_to_cv2(msg, \"bgr8\")\n            self.img = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)\n\n            self.scores[self.current_exposure] = self.computeScore(self.img)\n            #rospy.loginfo('Score: {}'.format(self.scores[self.current_exposure]))\n\n\nif __name__ == \"__main__\":\n    rospy.init_node(\"exposure_selector_DAVIS\")\n\n    exposure_selector = ExposureSelector()\n    rospy.spin()\n"
  },
  {
    "path": "evo_utils/src/evo_utils/snakify.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport rospy\nimport rospkg\n\nimport numpy as np\n\nfrom nav_msgs.msg import Path\nfrom geometry_msgs.msg import PoseStamped\n\n\nfrom tf2_msgs.msg import TFMessage\n\n\"\"\"\nConverts history of poses into a trajectory (snake shape)\nparam: \"length\" is the length of the history of poses to \ntake into account when plotting the trajectory \n\"\"\"\n\n\nclass snakify:\n\n    def __init__(self):\n        self.length = rospy.get_param('~length', 500)\n        self.frame_id = rospy.get_param('dvs_frame_id', 'dvs_evo')\n        self.poses = []\n\n        self.snake_pub = rospy.Publisher(\"snake\", Path, queue_size=1)\n        rospy.Subscriber(\"tf\", TFMessage, self._TFCallback)\n\n    def _TFCallback(self, msg):\n        \"\"\"\n        Convert history of poses in trajectory (\"snake\")\n\n        @param msg message containing the last transformation\n        \"\"\"\n        if msg.transforms[0].child_frame_id != self.frame_id:\n            return\n\n        header = msg.transforms[0].header\n        p = msg.transforms[0].transform.translation\n        q = msg.transforms[0].transform.rotation\n\n        P = PoseStamped()\n        P.header = header\n        P.pose.position = p\n        P.pose.orientation = q\n\n        self.poses.append(P)\n\n        if self.length > 0 and len(self.poses) > self.length:\n            del self.poses[:-1-self.length]\n\n        path = Path()\n        path.header = header\n        path.poses = self.poses\n        self.snake_pub.publish(path)\n\n\nif __name__ == '__main__':\n    rospy.init_node('snakify')\n    node = snakify()\n    rospy.spin()\n"
  },
  {
    "path": "evo_utils/src/evo_utils/tf_to_camera_markers.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport rospy\nfrom visualization_msgs.msg import Marker\nimport numpy as np\n\nfrom tf2_msgs.msg import TFMessage\nfrom tf import TransformListener\n\n\"\"\"\nPublishes the transformation received to a camera representation for rviz visualization\n\ntopic: \"dvs/camera_marker\"\n\"\"\"\n\n\nclass tfToCamera:\n\n    def __init__(self):\n        rospy.Subscriber(\"tf\", TFMessage, self._TFCallback)\n        self.frame_dvs = rospy.get_param('dvs_frame_id', 'dvs_evo')\n        self.frame_gt = rospy.get_param(\n            'dvs_groundtruth_frame_id', 'dvs_groundtruth')\n\n        self.tf = TransformListener(True, rospy.Duration(1000.))\n        self.marker_scale = rospy.get_param('~marker_scale', 0.2)\n\n        self.pub_dvs = rospy.Publisher(\n            'dvs/camera_marker', Marker, queue_size=0)\n        self.pub_dvs_gt = rospy.Publisher(\n            'dvs_gt/camera_marker', Marker, queue_size=0)\n\n    def _TFCallback(self, msg):\n        \"\"\"\n        For each transormation received, if the frame is either the \n        self.frame_dvs or the self.frame_gt, publishes a camera marker\n\n        @param msg message containing the transformation \n        \"\"\"\n        transform = msg.transforms[0]\n        frame = transform.child_frame_id\n        if frame == self.frame_dvs:\n            self._publishCameraMarker(self.pub_dvs, msg, color=(\n                0.0, 0.0, 1.0), marker_scale=self.marker_scale)\n        elif frame == self.frame_gt:\n            self._publishCameraMarker(self.pub_dvs_gt, msg, color=(\n                1.0, 0.0, 0.0), marker_scale=self.marker_scale)\n\n    def _publishCameraMarker(self, pub, tf_msg, marker_scale=0.2, color=(1.0, 0.0, 0.0)):\n        \"\"\"\n        Publishes a camera marker\n\n        @param pub camera marker ros publisher\n        @param tf_msg transformation message received\n        @param marker_scale scale of the marker\n        @param color scale of the marker\n        \"\"\"\n        transform = tf_msg.transforms[0]\n        frame = transform.child_frame_id\n        stamp = transform.header.stamp\n\n        sqrt2_2 = 0.5 * np.sqrt(2)\n\n        marker = Marker()\n        marker.header.frame_id = frame\n        marker.header.stamp = stamp\n        marker.ns = ''\n        marker.action = 0\n        marker.id = 15\n\n        # make rectangles as frame\n        r_w = 1.0\n        z_plane = (r_w / 2.0)*marker_scale\n        marker.pose.position.x = 0\n        marker.pose.position.y = (r_w / 4.0) * marker_scale\n        marker.pose.position.z = z_plane\n\n        marker.type = Marker.CUBE\n        marker.scale.x = r_w*marker_scale\n        marker.scale.y = 0.04*marker_scale\n        marker.scale.z = 0.04*marker_scale\n        marker.color.r = color[0]\n        marker.color.g = color[1]\n        marker.color.b = color[2]\n        marker.color.a = 1\n\n        marker.pose.orientation.x = 0\n        marker.pose.orientation.y = 0\n        marker.pose.orientation.z = 0\n        marker.pose.orientation.w = 1\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.pose.position.y = -(r_w / 4.0)*marker_scale\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.scale.x = (r_w/2.0)*marker_scale\n        marker.pose.position.x = (r_w / 2.0) * marker_scale\n        marker.pose.position.y = 0\n        marker.pose.orientation.w = sqrt2_2\n        marker.pose.orientation.z = sqrt2_2\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.pose.position.x = -(r_w / 2.0) * marker_scale\n        marker.id -= 1\n        pub.publish(marker)\n\n        # make pyramid edges\n        marker.scale.x = (3.0*r_w/4.0)*marker_scale\n        marker.pose.position.z = 0.5*z_plane\n\n        marker.pose.position.x = (r_w / 4.0) * marker_scale\n        marker.pose.position.y = (r_w / 8.0) * marker_scale\n\n        # 0.08198092, -0.34727674,  0.21462883,  0.9091823\n        marker.pose.orientation.x = 0.08198092\n        marker.pose.orientation.y = -0.34727674\n        marker.pose.orientation.z = 0.21462883\n        marker.pose.orientation.w = 0.9091823\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.pose.position.x = -(r_w / 4.0) * marker_scale\n        marker.pose.position.y = (r_w / 8.0) * marker_scale\n        # -0.27395078, -0.22863284,  0.9091823 ,  0.21462883\n        marker.pose.orientation.x = 0.08198092\n        marker.pose.orientation.y = 0.34727674\n        marker.pose.orientation.z = -0.21462883\n        marker.pose.orientation.w = 0.9091823\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.pose.position.x = -(r_w / 4.0) * marker_scale\n        marker.pose.position.y = -(r_w / 8.0) * marker_scale\n        # -0.08198092,  0.34727674,  0.21462883,  0.9091823\n        marker.pose.orientation.x = -0.08198092\n        marker.pose.orientation.y = 0.34727674\n        marker.pose.orientation.z = 0.21462883\n        marker.pose.orientation.w = 0.9091823\n        marker.id -= 1\n        pub.publish(marker)\n\n        marker.pose.position.x = (r_w / 4.0) * marker_scale\n        marker.pose.position.y = -(r_w / 8.0) * marker_scale\n        # -0.08198092, -0.34727674, -0.21462883,  0.9091823\n        marker.pose.orientation.x = -0.08198092\n        marker.pose.orientation.y = -0.34727674\n        marker.pose.orientation.z = -0.21462883\n        marker.pose.orientation.w = 0.9091823\n        marker.id -= 1\n        pub.publish(marker)\n\n\nif __name__ == '__main__':\n\n    rospy.init_node('tf_to_camera_markers')\n\n    tf_to_camera = tfToCamera()\n\n    rospy.spin()\n"
  },
  {
    "path": "evo_utils/src/utils_geometry.cpp",
    "content": "#include \"evo_utils/geometry.hpp\"\n\n#define FORWARD 1\n#define BACKWARD (-1)\n\nnamespace evo_utils::geometry {\n\n/**\n * Compute median in list of elements\n *\n * @tparam T Type of the elements in the list\n * @param list Set of elements considered\n *\n * @return Median element in list\n */\ntemplate <typename T>\nT median(std::vector<T>& list) {\n    size_t middle = std::floor(list.size() / 2) + (list.size() % 2 - 1);\n    std::nth_element(list.begin(), list.begin() + middle, list.end());\n\n    return list[middle];\n}\n\n/**\n * Safely access pixel value in image\n *\n * Checks row and col parameters before to access the pixel value\n *\n * @param img Image from which to retrieve the intensity\n * @param mask Which pixels have to be considered\n * @param row Pixel row index\n * @param col Pixel column index\n *\n * @return Intensity of the pixel if row and col are neither out of boundary\n * nor are masked out\n */\ninline int get_value(const cv::Mat& img, const cv::Mat& mask, int row,\n                     int col) {\n    if (row >= 0 && col >= 0 && row < img.rows && col < img.cols &&\n        mask.at<uint8_t>(row, col) > 0)\n        return img.at<uchar>(row, col);\n    else\n        return -1;\n}\n\n// Naive 2D median filter. Complexity: O(p^2) where p is the patch size\n// It is here because it is used as a reference in the unit tests\nvoid naiveMedianFilter(const cv::Mat& img, cv::Mat& out_img,\n                       const cv::Mat& mask, int patch_size) {\n    CHECK(img.data);\n    CHECK(mask.data);\n    CHECK_GT(img.rows, 0);\n    CHECK_GT(img.cols, 0);\n    CHECK_EQ(img.rows, mask.rows);\n    CHECK_EQ(img.cols, mask.cols);\n    CHECK_EQ(img.type(), CV_8U);\n    CHECK_EQ(patch_size % 2, 1);\n\n    int p = patch_size / 2;\n\n    // Apply a 2D median filter naively\n    // Zero values in the mask are ignored by the filter\n    out_img = img.clone();\n    for (int y = 0; y < img.rows; ++y) {\n        for (int x = 0; x < img.cols; ++x) {\n            // Collect all the non-zeros values in a [patch_size*patch_size]\n            // patch centered around (x,y) img(x,y) = median of this list\n            std::vector<uchar> values_in_patch;\n            for (int k = -p; k <= p; ++k) {\n                for (int l = -p; l <= p; ++l) {\n                    if (x + k >= 0 && x + k < img.cols && y + l >= 0 &&\n                        y + l < img.rows) {\n                        uchar val = img.at<uchar>(y + l, x + k);\n                        if (mask.at<uint8_t>(y + l, x + k) > 0) {\n                            values_in_patch.push_back(val);\n                        }\n                    }\n                }\n            }\n            out_img.at<uchar>(y, x) = median(values_in_patch);\n        }\n    }\n}\n\nint compute_median_histogram(const int h[], int num_elements) {\n    int middle = (num_elements + 1) / 2;\n    int m, n;\n    for (m = 0, n = 0; n < 256; n++) {\n        m += h[n];\n        if (m >= middle) break;\n    }\n    return n;\n}\n\n// 2D median filter. Complexity: O(p) where p is the patch size\n// \"T. Huang, G. Yang, and G. Tang, \"A Fast Two-Dimensional Median Filtering\n// Algorithm\" Code adapted from:\n// http://www.sergejusz.com/engineering_tips/median_filter.htm\nvoid huangMedianFilter(const cv::Mat& img, cv::Mat& out_img,\n                       const cv::Mat& mask, int patch_size) {\n    CHECK(img.data);\n    CHECK(mask.data);\n    CHECK_GT(img.rows, 0);\n    CHECK_GT(img.cols, 0);\n    CHECK_EQ(img.rows, mask.rows);\n    CHECK_EQ(img.cols, mask.cols);\n    CHECK_EQ(img.type(), CV_8U);\n    CHECK_EQ(patch_size % 2, 1);\n\n    out_img = img.clone();\n\n    int p = patch_size / 2;\n\n    int med;\n    int prev, next;\n    int h[256];\n    int direction = FORWARD;\n    int row1, row2, col1, col2;\n    int row, col, r, c;\n\n    memset(h, 0, sizeof(h));\n\n    int num_elements = 0;\n\n    // Histogram For (0,0)-element\n    for (row = -p; row <= p; row++) {\n        for (col = -p; col <= p; col++) {\n            int val = get_value(img, mask, row, col);\n            if (val >= 0) {\n                h[val]++;\n                num_elements++;\n            }\n        }\n    }\n\n    // Median\n    med = compute_median_histogram(h, num_elements);\n\n    // Now, Median Is Defined For (0,0)-element\n    // Begin Scanning: direction - FORWARD\n    out_img.at<uchar>(0, 0) = med;\n\n    // main loop\n    for (col = 1, row = 0; row < img.rows; row++) {\n        // Prepare to Horizontal Scanning\n        row1 = row - p;\n        row2 = row + p;\n\n        for (; col >= 0 && col < img.cols; col += direction) {\n            // Determine Previous and Next Columns\n            // Pay Attention To Defined Direction !!!\n            prev = col - direction * (p + 1);\n            next = col + direction * p;\n\n            // Now Change Old Histogram\n            // New Histogram\n            // delete previous\n\n            for (r = row1; r <= row2; r++) {\n                int value_out = get_value(img, mask, r, prev);\n                int value_in = get_value(img, mask, r, next);\n                if (value_in >= 0 && value_out == value_in) continue;\n                if (value_out >= 0) {\n                    h[value_out]--;\n                    num_elements--;\n                }\n                if (value_in >= 0) {\n                    h[value_in]++;\n                    num_elements++;\n                }\n            }\n\n            // Update new median\n            med = compute_median_histogram(h, num_elements);\n            out_img.at<uchar>(row, col) = med;\n        }  // end of column loop\n\n        if (row == img.rows - 1) return;\n\n        // go back to the last/first pixel of the line\n        col -= direction;\n        // change direction to the opposite\n        direction *= -1;\n\n        // Shift Down One Line\n        prev = row1;\n        next = row2 + 1;\n\n        col1 = col - p;\n        col2 = col + p;\n\n        for (c = col1; c <= col2; c++) {\n            int value_out = get_value(img, mask, prev, c);\n            int value_in = get_value(img, mask, next, c);\n            if (value_in >= 0 && value_out == value_in) continue;\n            if (value_out >= 0) {\n                h[value_out]--;\n                num_elements--;\n            }\n            if (value_in >= 0) {\n                h[value_in]++;\n                num_elements++;\n            }\n        }\n\n        med = compute_median_histogram(h, num_elements);\n        out_img.at<uchar>(row + 1, col) = med;\n        col += direction;\n    }\n}\n\n}  // namespace evo_utils::geometry\n"
  },
  {
    "path": "install.sh",
    "content": "# #!/bin/bash\n\necho \"First, we install the required apt packages\"\nsudo add-apt-repository ppa:inivation-ppa/inivation\nsudo apt-get update\nsudo apt-get install            \\\n    ros-$1-sophus               \\\n    ros-$1-pcl-ros              \\\n    ros-$1-eigen-conversions    \\\n    ros-$1-camera-info-manager  \\\n    ros-$1-image-view           \\\n    libcaer-dev                 \\\n    libfftw3-dev libfftw3-doc   \\\n    libglew-dev                 \\\n    libopencv-dev               \\\n    libyaml-cpp-dev             \\\n    python-catkin-tools         \\\n    ros-$1-camera-info-manager  \\\n    ros-$1-image-geometry\n\n\n\necho \"Second, we clone the evo dependencies\"\nvcs-import < rpg_dvs_evo_open/dependencies.yaml\n"
  },
  {
    "path": "rqt_evo/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(rqt_evo)\n\nfind_package(catkin REQUIRED COMPONENTS\n  rospy\n  rqt_gui\n  rqt_gui_py\n)\ncatkin_package()\ncatkin_python_setup()\n\ninstall(FILES plugin.xml\n  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\n)\n\ninstall(DIRECTORY resource\n  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\n)\n\ninstall(PROGRAMS scripts/rqt_evo\n  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}\n)\n"
  },
  {
    "path": "rqt_evo/README.md",
    "content": "run with:\n\n    rosrun rqt_evo rqt_evo\n\nor start `rqt` and display the widget.\n\nIf it does not work, try this:\n\n    rm ~/.config/ros.org/rqt_gui.ini\n    rqt\n"
  },
  {
    "path": "rqt_evo/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package>\n  <name>rqt_evo</name>\n  <version>0.0.0</version>\n  <description>The rqt_evo package</description>\n\n  <maintainer email=\"rebecq@ifi.uzh.ch\">Henri Rebecq</maintainer>\n  <maintainer email=\"aterpin@ethz.ch\">Antonio Terpin</maintainer>\n\n\n  <license>TODO</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <build_depend>rospy</build_depend>\n  <build_depend>rqt_gui</build_depend>\n  <build_depend>rqt_gui_py</build_depend>\n  <run_depend>rospy</run_depend>\n  <run_depend>rqt_gui</run_depend>\n  <run_depend>rqt_gui_py</run_depend>\n\n\n  <!-- The export tag contains other, unspecified, tags -->\n  <export>\n    <rqt_gui plugin=\"${prefix}/plugin.xml\"/>\n  </export>\n</package>\n"
  },
  {
    "path": "rqt_evo/plugin.xml",
    "content": "<library path=\"src\">\n  <class name=\"Evo\" type=\"rqt_evo.evo.Evo\" base_class_type=\"rqt_gui_py::Plugin\">\n    <description>\n      Plugin for EVO\n    </description>\n    <qtgui>\n      <label>Evo</label>\n      <icon type=\"theme\">system-help</icon>\n      <statustip>Great user interface to manipulate the EVO demo.</statustip>\n    </qtgui>\n  </class>\n</library>\n"
  },
  {
    "path": "rqt_evo/resource/widget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>EvoWidget</class>\n <widget class=\"QWidget\" name=\"EvoWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>600</width>\n    <height>140</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>EVO</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\" stretch=\"0,0,0\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string>EVO Namespace:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QLineEdit\" name=\"topic_line_edit\">\n       <property name=\"toolTip\">\n        <string>Topic</string>\n       </property>\n       <property name=\"text\">\n        <string/>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\" stretch=\"0\">\n     <item>\n      <widget class=\"QLabel\" name=\"evo_info_label\">\n       <property name=\"toolTip\">\n        <string>Current angular velocity</string>\n       </property>\n       <property name=\"text\">\n        <string>Status Message</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\">\n     <item>\n      <widget class=\"QPushButton\" name=\"button_bootstrap\">\n       <property name=\"text\">\n        <string>Bootstrap</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"button_start\">\n       <property name=\"text\">\n        <string>Start/Reset</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"button_update\">\n       <property name=\"text\">\n        <string>Update</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"button_switch\">\n       <property name=\"text\">\n        <string>Switch to tracking</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QCheckBox\" name=\"checkbox_map_expansion\">\n       <property name=\"text\">\n        <string>Map-Expansion</string>\n       </property>\n       <property name=\"checked\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QCheckBox\" name=\"checkbox_copilot\">\n       <property name=\"text\">\n        <string>Switch copilot</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "rqt_evo/scripts/off_the_quad.sh",
    "content": "#!/bin/bash\n\nsource ~/setupros.sh\nrostopic pub -1 candice/copilot/off std_msgs/Empty \"{}\"\n"
  },
  {
    "path": "rqt_evo/scripts/rqt_evo",
    "content": "#!/usr/bin/env python\n\nimport sys\n\nfrom rqt_evo.evo import Evo\nfrom rqt_gui.main import Main\n\nplugin = 'rqt_evo'\nmain = Main(filename=plugin)\nsys.exit(main.main(sys.argv, standalone=plugin)) # , plugin_argument_provider=Evo.add_arguments\n"
  },
  {
    "path": "rqt_evo/setup.py",
    "content": "#!/usr/bin/env python\n\nfrom distutils.core import setup\nfrom catkin_pkg.python_setup import generate_distutils_setup\n\nd = generate_distutils_setup(\n    packages=['rqt_evo'],\n    package_dir={'': 'src'},\n    scripts=['scripts/rqt_evo']\n)\n\nsetup(**d)\n"
  },
  {
    "path": "rqt_evo/src/rqt_evo/.gitignore",
    "content": "*.pyc"
  },
  {
    "path": "rqt_evo/src/rqt_evo/__init__.py",
    "content": ""
  },
  {
    "path": "rqt_evo/src/rqt_evo/evo.py",
    "content": "#!/usr/bin/env python\nimport os\nimport rospy\nimport argparse\nfrom qt_gui.plugin import Plugin\nfrom .evo_widget import EvoWidget\n\n\nclass Evo(Plugin):\n    \"\"\"\n    Subclass of Plugin to display EVO status\n    \"\"\"\n\n    def __init__(self, context):\n\n        # Init Plugin\n        super(Evo, self).__init__(context)\n        self.setObjectName('EvoPlugin')\n\n        # Load arguments\n        # TODO load topic name from args\n        args = self._parse_args(context.argv())\n\n        # Create QWidget\n        self._widget = EvoWidget(evo_namespace=args.topic)\n\n        # Show _widget.windowTitle on left-top of each plugin (when\n        # it's set in _widget). This is useful when you open multiple\n        # plugins at once. Also if you open multiple instances of your\n        # plugin at once, these lines add number to make it easy to\n        # tell from pane to pane.\n        if context.serial_number() > 1:\n            self._widget.setWindowTitle(\n                self._widget.windowTitle() + (' (%d)' % context.serial_number()))\n\n        # Add widget to the user interface\n        context.add_widget(self._widget)\n\n    def _parse_args(self, argv):\n        parser = argparse.ArgumentParser()\n        parser.add_argument('--topic', help='Evo Info Topic to display')\n        args, unknown = parser.parse_known_args()\n        return args\n"
  },
  {
    "path": "rqt_evo/src/rqt_evo/evo_widget.py",
    "content": "#!/usr/bin/env python\nimport os\nimport rospy\nimport rospkg\nimport numpy as np\nfrom python_qt_binding import loadUi\nfrom python_qt_binding.QtWidgets import QWidget\nfrom python_qt_binding.QtCore import QTimer, Slot\n#from evo_msgs.msg import Info\nfrom std_msgs.msg import String, Bool\nimport subprocess\n\n\nclass EvoWidget(QWidget):\n    \"\"\"\n    EVO rqt widget actions\n    \"\"\"\n    #_last_info_msg = Info()\n    _publisher = None\n    _subscriber = None\n    _publisher_copilot = None\n    _num_received_msgs = 0\n    _evo_namespace = None\n\n    def __init__(self, evo_namespace='evo'):\n\n        # Init QWidget\n        super(EvoWidget, self).__init__()\n        self.setObjectName('EvoWidget')\n\n        # load UI\n        ui_file = os.path.join(rospkg.RosPack().get_path(\n            'rqt_evo'), 'resource', 'widget.ui')\n        loadUi(ui_file, self)\n\n        # init and start update timer for data, the timer calls the function update_info all 40ms\n        #self._update_info_timer = QTimer(self)\n        # self._update_info_timer.timeout.connect(self.update_info)\n        # self._update_info_timer.start(40)\n\n        # set the functions that are called when a button is pressed\n        self.button_bootstrap.pressed.connect(self.on_bootstrap_button_pressed)\n        self.button_start.pressed.connect(self.on_start_button_pressed)\n        self.button_update.pressed.connect(self.on_update_button_pressed)\n        self.button_switch.pressed.connect(self.on_switch_button_pressed)\n        self.checkbox_map_expansion.stateChanged.connect(\n            self.on_map_expansion_changed)\n        self.checkbox_copilot.stateChanged.connect(\n            self.on_copilot_state_changed)\n\n        # set callback for changed topic\n\n        if not evo_namespace:\n            evo_namespace = 'evo'\n\n        self._evo_namespace = evo_namespace\n        self.topic_line_edit.textChanged.connect(self._on_topic_changed)\n        self.register(evo_namespace)\n        self.topic_line_edit.setText(evo_namespace)\n\n        # TODO: set a timer when the last message was received and give a warning if it is too long ago!\n\n    @Slot(str)\n    def _on_topic_changed(self, topic):\n        \"\"\"\n        Switches publishers namespaces\n        \"\"\"\n        self._evo_namespace = str(topic)\n        self.unregister()\n        self.register(self._evo_namespace)\n\n    def register(self, evo_namespace):\n        \"\"\"\n        Subscribes to ROS Info topic and registers callbacks\n        \"\"\"\n        # self._subscriber = rospy.Subscriber(evo_namespace+'/info', Info, self.info_cb)\n\n        # Initialize Publisher\n        self._publisher = rospy.Publisher(\n            evo_namespace+'/remote_key', String, queue_size=1)\n        self._publisher_copilot = rospy.Publisher(\n            evo_namespace+'/copilot_remote', Bool, queue_size=1)\n\n    def unregister(self):\n        \"\"\"\n        Unregisters publishers\n        \"\"\"\n        if self._publisher is not None:\n            self._publisher.unregister()\n            self._publisher = None\n\n        if self._publisher_copilot is not None:\n            self._publisher_copilot.unregister()\n            self._publisher_copilot = None\n\n        if self._subscriber is not None:\n            self._subscriber.unregister()\n            self._subscriber = None\n\n    # def info_cb(self, msg):\n    #  self._last_info_msg = msg\n    #  self._num_received_msgs += 1\n\n    # def update_info(self):\n    #  info_text = 'Not Connected'\n    #  if self._num_received_msgs > 0:\n    #    pass\n\n        # set info text\n        # self.evo_info_label.setText(info_text)\n\n        # set progress bar\n        # self.num_tracked_bar.setValue(self._last_info_msg.num_matches)\n\n    def on_bootstrap_button_pressed(self):\n        \"\"\"\n        Triggers bootstrap\n        \"\"\"\n        print('BOOTSTRAPPING')\n        self.send_command('bootstrap')\n\n    def on_start_button_pressed(self):\n        \"\"\"\n        Triggers reset button\n        \"\"\"\n        print('START/RESET')\n        self.send_command('reset')\n\n    def on_update_button_pressed(self):\n        \"\"\"\n        Triggers map update\n        \"\"\"\n        print('UPDATE')\n        self.send_command('update')\n\n    def on_switch_button_pressed(self):\n        \"\"\"\n        Turns on tracking thread\n        \"\"\"\n        print('SWITCH TO TRACKING')\n        self.send_command('switch')\n\n    def on_map_expansion_changed(self):\n        \"\"\"\n        Switches on and off the map expansion algorithm based on checkbox_map_expansion \n        \"\"\"\n        if self.checkbox_map_expansion.isChecked():\n            print('ENABLE MAP EXPANSION')\n            self.send_command('enable_map_expansion')\n        else:\n            print('DISABLE EXPANSION')\n            self.send_command('disable_map_expansion')\n\n    def on_copilot_state_changed(self):\n        \"\"\"\n        Switch from bootstrapping tracker to evo tracker\n        \"\"\"\n        useEVO = self.checkbox_copilot.isChecked()\n        print('SWITCH COPILOT TO ' + ('EVO' if useEVO else 'INITIAL PILOT'))\n        self._publisher_copilot.publish(Bool(useEVO))\n\n    def send_command(self, cmd):\n        \"\"\"\n        Utils to send remote command\n        \"\"\"\n        if self._publisher is None:\n            return\n        self._publisher.publish(String(cmd))\n"
  },
  {
    "path": "rqt_svo/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(rqt_svo)\n\nIF(NOT DEFINED ENV{ARM_ARCHITECTURE})\n  find_package(catkin REQUIRED COMPONENTS\n    rospy\n    rqt_gui\n    rqt_gui_py\n  )\n  catkin_package()\n  catkin_python_setup()\n\n  install(FILES plugin.xml\n    DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\n  )\n\n  install(DIRECTORY resource\n    DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\n  )\n\n  install(PROGRAMS scripts/rqt_svo\n    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}\n  )\nENDIF()\n"
  },
  {
    "path": "rqt_svo/README.md",
    "content": "run with:\n\n    rosrun rqt_svo rqt_svo\n\nor start `rqt` and display the widget.\n\nIf it does not work, try this:\n\n    rm ~/.config/ros.org/rqt_gui.ini\n    rqt"
  },
  {
    "path": "rqt_svo/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package>\n  <name>rqt_svo</name>\n  <version>0.0.0</version>\n  <description>The rqt_svo package</description>\n\n  <maintainer email=\"cforster@todo.todo\">cforster</maintainer>\n\n\n  <license>TODO</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <build_depend>rospy</build_depend>\n  <build_depend>rqt_gui</build_depend>\n  <build_depend>rqt_gui_py</build_depend>\n  <run_depend>rospy</run_depend>\n  <run_depend>rqt_gui</run_depend>\n  <run_depend>rqt_gui_py</run_depend>\n\n\n  <!-- The export tag contains other, unspecified, tags -->\n  <export>\n    <rqt_gui plugin=\"${prefix}/plugin.xml\"/>\n  </export>\n</package>"
  },
  {
    "path": "rqt_svo/plugin.xml",
    "content": "<library path=\"src\">\n  <class name=\"Svo\" type=\"rqt_svo.svo.Svo\" base_class_type=\"rqt_gui_py::Plugin\">\n    <description>\n      Plugin for SVO - Semi-Direct Visual Odometry\n    </description>\n    <qtgui>\n      <label>Svo</label>\n      <icon type=\"theme\">system-help</icon>\n      <statustip>Great user interface to provide real value.</statustip>\n    </qtgui>\n  </class>\n</library>"
  },
  {
    "path": "rqt_svo/resource/widget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SvoWidget</class>\n <widget class=\"QWidget\" name=\"SvoWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>467</width>\n    <height>140</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>SVO</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\" stretch=\"0,0,0,0\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string>SVO Namespace:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QLineEdit\" name=\"topic_line_edit\">\n       <property name=\"toolTip\">\n        <string>Topic to send Twist message to</string>\n       </property>\n       <property name=\"text\">\n        <string/>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\" stretch=\"0\">\n     <item>\n      <widget class=\"QLabel\" name=\"svo_info_label\">\n       <property name=\"toolTip\">\n        <string>Current angular velocity</string>\n       </property>\n       <property name=\"text\">\n        <string>Status Message</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n     <item>\n      <widget class=\"QProgressBar\" name=\"num_tracked_bar\">\n       <property name=\"maximum\">\n        <number>100</number>\n       </property>\n       <property name=\"value\">\n        <number>100</number>\n       </property>\n       <property name=\"format\">\n        <string>%p%</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QPushButton\" name=\"button_start\">\n       <property name=\"text\">\n        <string>Start</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"button_reset\">\n       <property name=\"toolTip\">\n        <string>Reset velocities to zero</string>\n       </property>\n       <property name=\"text\">\n        <string>Reset</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"button_quit\">\n       <property name=\"text\">\n        <string>Quit</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "rqt_svo/scripts/rqt_svo",
    "content": "#!/usr/bin/env python\n\nimport sys\n\nfrom rqt_svo.svo import Svo\nfrom rqt_gui.main import Main\n\nplugin = 'rqt_svo'\nmain = Main(filename=plugin)\nsys.exit(main.main(sys.argv, standalone=plugin)) # , plugin_argument_provider=Svo.add_arguments"
  },
  {
    "path": "rqt_svo/setup.py",
    "content": "#!/usr/bin/env python\n\nfrom distutils.core import setup\nfrom catkin_pkg.python_setup import generate_distutils_setup\n\nd = generate_distutils_setup(\n    packages=['rqt_svo'],\n    package_dir={'': 'src'},\n    scripts=['scripts/rqt_svo']\n)\n\nsetup(**d)"
  },
  {
    "path": "rqt_svo/src/rqt_svo/.gitignore",
    "content": "*.pyc"
  },
  {
    "path": "rqt_svo/src/rqt_svo/__init__.py",
    "content": ""
  },
  {
    "path": "rqt_svo/src/rqt_svo/svo.py",
    "content": "#!/usr/bin/env python\nimport os\nimport rospy\nimport argparse\nfrom qt_gui.plugin import Plugin\nfrom .svo_widget import SvoWidget\n\nclass Svo(Plugin):\n  \"\"\"\n  Subclass of Plugin to display SVO status\n  \"\"\"\n  def __init__(self, context):\n\n    # Init Plugin\n    super(Svo, self).__init__(context)\n    self.setObjectName('SvoPlugin')\n\n    # Load arguments\n    # TODO load topic name from args\n    args = self._parse_args(context.argv())\n\n    # Create QWidget\n    self._widget = SvoWidget(svo_namespace=args.topic)\n\n    # Show _widget.windowTitle on left-top of each plugin (when\n    # it's set in _widget). This is useful when you open multiple\n    # plugins at once. Also if you open multiple instances of your\n    # plugin at once, these lines add number to make it easy to\n    # tell from pane to pane.\n    if context.serial_number() > 1:\n        self._widget.setWindowTitle(self._widget.windowTitle() + (' (%d)' % context.serial_number()))\n\n    # Add widget to the user interface\n    context.add_widget(self._widget)\n\n\n  def _parse_args(self, argv):\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--topic', help='Svo Info Topic to display')\n    args, unknown = parser.parse_known_args()\n    return args\n\n  # def _parse_args(self, argv):\n  #   parser = argparse.ArgumentParser(prog='rqt_svo', add_help=False)\n  #   group = parser.add_argument_group('Options for rqt_svo plugin')\n  #   group.add_argument('--topic', type=argparse.FileType('r'), nargs='*', default=[], help='Svo Info Topic to display')\n  #   return parser.parse_args(argv)\n\n  def save_settings(self, plugin_settings, instance_settings):\n     # TODO save intrinsic configuration, usually using:\n     # instance_settings.set_value(k, v)\n     print('Saving namespace')\n     namespace = self._widget._svo_namespace\n     instance_settings.set_value('namespace', namespace)\n     pass\n#\n  def restore_settings(self, plugin_settings, instance_settings):\n     # TODO restore intrinsic configuration, usually using:\n     # v = instance_settings.value(k)\n     namespace = instance_settings.value('namespace', 'default')\n     self._widget.topic_line_edit.setText(namespace)\n     pass\n\n#   def shutdown_plugin(self):\n#     # self._unregister_publisher()\n#     pass\n#\n#   def save_settings(self, plugin_settings, instance_settings):\n#     # TODO save intrinsic configuration, usually using:\n#     # instance_settings.set_value(k, v)\n#     pass\n#\n#   def restore_settings(self, plugin_settings, instance_settings):\n#     # TODO restore intrinsic configuration, usually using:\n#     # v = instance_settings.value(k)\n#     pass\n\n\n#     def _unregister_publisher(self):\n#         if self._publisher is not None:\n#             self._publisher.unregister()\n#             self._publisher = None\n\n\n  #def trigger_configuration(self):\n      # Comment in to signal that the plugin has a way to configure\n      # This will enable a setting button (gear icon) in each dock widget title bar\n      # Usually used to open a modal configuration dialog\n"
  },
  {
    "path": "rqt_svo/src/rqt_svo/svo_widget.py",
    "content": "#!/usr/bin/env python\nimport os\nimport rospy\nimport rospkg\nimport numpy as np\nfrom python_qt_binding import loadUi\nfrom python_qt_binding.QtWidgets import QWidget\nfrom python_qt_binding.QtCore import QTimer, Slot\nfrom svo_msgs.msg import Info\nfrom std_msgs.msg import String\n\nclass SvoWidget(QWidget):\n  _last_info_msg = Info()\n  _publisher = None\n  _subscriber = None\n  _num_received_msgs = 0\n  _svo_namespace = None\n  def __init__(self, svo_namespace='svo'):\n\n    # Init QWidget\n    super(SvoWidget, self).__init__()\n    self.setObjectName('SvoWidget')\n\n    # load UI\n    ui_file = os.path.join(rospkg.RosPack().get_path('rqt_svo'), 'resource', 'widget.ui')\n    loadUi(ui_file, self)\n\n    # init and start update timer for data, the timer calls the function update_info all 40ms\n    self._update_info_timer = QTimer(self)\n    self._update_info_timer.timeout.connect(self.update_info)\n    self._update_info_timer.start(40)\n\n    # set the functions that are called when a button is pressed\n    self.button_start.pressed.connect(self.on_start_button_pressed)\n    self.button_reset.pressed.connect(self.on_reset_button_pressed)\n    self.button_quit.pressed.connect(self.on_quit_button_pressed)\n\n    # set callback for changed topic\n    self._svo_namespace = svo_namespace\n    self.topic_line_edit.textChanged.connect(self._on_topic_changed)\n    self.register(svo_namespace)\n    self.topic_line_edit.setText(svo_namespace)\n\n    # TODO: set a timer when the last message was received and give a warning if it is too long ago!\n\n  @Slot(str)\n  def _on_topic_changed(self, topic):\n    self._svo_namespace = str(topic)\n    self.unregister()\n    self.register(self._svo_namespace)\n\n  def register(self, svo_namespace):\n    # Load parameters\n    if not svo_namespace:\n        svo_namespace = 'svo'\n\n    max_num_features = rospy.get_param(svo_namespace+'/max_fts', 120)\n\n    # Feature bar\n    self.num_tracked_bar.setMaximum(max_num_features)\n    print('set maximum number of features to '+str(max_num_features))\n\n    # Subscribe to ROS Info topic and register callback\n    self._subscriber = rospy.Subscriber(svo_namespace+'/info', Info, self.info_cb)\n\n    # Initialize Publisher\n    self._publisher = rospy.Publisher(svo_namespace+'/remote_key', String, queue_size=1)\n\n  def unregister(self):\n    if self._publisher is not None:\n      self._publisher.unregister()\n      self._publisher = None\n\n    if self._subscriber is not None:\n      self._subscriber.unregister()\n      self._subscriber = None\n\n\n  def info_cb(self, msg):\n    self._last_info_msg = msg\n    self._num_received_msgs += 1\n\n  def update_info(self):\n    info_text = 'Not Connected'\n    if self._num_received_msgs > 0:\n      fps = 0\n      if self._last_info_msg.processing_time > 0:\n        fps = 1.0/self._last_info_msg.processing_time\n      info_text = 'fps = %.2f' % fps\n      info_text += '\\t #Features = ' + str(self._last_info_msg.num_matches)\n      info_text += '\\t'\n      if self._last_info_msg.stage == 0:\n        info_text += '\\t PAUSED'\n      elif self._last_info_msg.stage == 1:\n        info_text += '\\t FIRST_FRAME'\n      elif self._last_info_msg.stage == 2:\n        info_text += '\\t SECOND_FRAME'\n      elif self._last_info_msg.stage == 3:\n        info_text += '\\t RUNNING'\n      if self._last_info_msg.tracking_quality == 0:\n        info_text += '\\t CRITICAL'\n      elif self._last_info_msg.tracking_quality == 1:\n        info_text += '\\t BAD TRACKING'\n      elif self._last_info_msg.tracking_quality == 2:\n        info_text += '\\t GOOD TRACKING'\n\n    # set info text\n    self.svo_info_label.setText(info_text)\n\n    # set progress bar\n    self.num_tracked_bar.setValue(self._last_info_msg.num_matches)\n\n  def on_start_button_pressed(self):\n    print('START SLAM')\n    self.send_command('s')\n\n  def on_reset_button_pressed(self):\n    print('RESET SLAM')\n    self.send_command('r')\n\n  def on_quit_button_pressed(self):\n    print('QUIT SLAM')\n    self.send_command('q')\n\n  def send_command(self, cmd):\n    if self._publisher is None:\n      return\n    self._publisher.publish(String(cmd))\n"
  },
  {
    "path": "svo/.gitignore",
    "content": "include/svo/config.h"
  },
  {
    "path": "svo/CMakeLists.txt",
    "content": "project(svo)\ncmake_minimum_required(VERSION 2.8.3)\n\n################################################################################\n# user build settings\noption(SVO_WITH_CUDA \"option to use CUDA within SVO\" OFF)\noption(SVO_WITH_PANGOLIN \"option to use PANGOLIN within SVO\" OFF)\n\n\n################################################################################\nfind_package(catkin_simple)\ncatkin_simple()\n\n################################################################################\n# generic setup (compiler flags, etc.)\ninclude(SvoSetup)\n\nset(CUDA_FOUND false)\nif(${cuda_catkin_FOUND})\n find_cuda()\n if ((NOT ${CUDA_FOUND}) OR (${CUDA_VERSION_MAJOR} LESS 7))\n   set(CUDA_FOUND false)\n endif()\nendif()\n\nif(NOT ${CUDA_FOUND})\n  set(SVO_WITH_CUDA OFF)\nendif()\n\nmessage(\"SVO_WITH_CUDA: ${SVO_WITH_CUDA}\")\nconfigure_file(include/svo/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/svo/config.h)\n\nlist(APPEND SVO_SOURCEFILES\n  src/frame_handler_mono.cpp\n  src/frame_handler_stereo.cpp\n  src/frame_handler_array.cpp\n  src/frame_handler_base.cpp\n  src/map.cpp\n  src/pose_optimizer.cpp\n  src/initialization.cpp\n  src/reprojector.cpp\n  src/imu_handler.cpp\n  #src/patch_normal.cpp\n  src/stereo_triangulation.cpp\n  src/io.cpp\n)\n\nlist(APPEND SVO_HEADERFILES\n  include/svo/abstract_bundle_adjustment.h\n  include/svo/frame_handler_base.h\n  include/svo/frame_handler_mono.h\n  include/svo/frame_handler_stereo.h\n  include/svo/frame_handler_array.h\n  include/svo/global.h\n  include/svo/imu_handler.h\n  include/svo/initialization.h\n  include/svo/map.h\n  include/svo/pose_optimizer.h\n  include/svo/reprojector.h\n  include/svo/stereo_triangulation.h\n  include/svo/io.h\n  include/svo/config.h\n  include/svo/svo.h\n  )\n\n################################################################################\n# Create svo library\ninclude_directories(include ${INCLUDE_DIRS})\ncs_add_library(svo SHARED ${SVO_SOURCEFILES} ${SVO_HEADERFILES})\ntarget_link_libraries(svo ${LINK_LIBS})\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo/include/rpg_common/batch_worker.h",
    "content": "#pragma once\n\n#include <atomic>\n#include <thread>\n\n#include <glog/logging.h>\n\n#include \"rpg_common/threadsafe_queue.h\"\n#include \"rpg_common/worker_base.h\"\n\nnamespace rpg_common {\n\ntemplate <typename DataType>\nclass BatchWorker : public WorkerBase\n{\n public:\n  BatchWorker() : paused_(true)\n {\n    resume();\n }\n\n  virtual ~BatchWorker()\n  {\n    shutdown();\n  }\n\n  void addTask(const DataType& item)\n  {\n    queue_.push(item);\n  }\n\n  virtual void shutdown() override\n  {\n    if (!thread_.joinable())\n    {\n      return;\n    }\n    queue_.shutdown();\n    thread_.join();\n  }\n\n  virtual void softShutdown() override\n  {\n    if (!thread_.joinable())\n    {\n      return;\n    }\n    queue_.waitUntilEmpty();\n    queue_.shutdown();\n    thread_.join();\n  }\n\n  virtual void pause() override\n  {\n    CHECK(!paused_);\n    CHECK(thread_.joinable());\n    paused_ = true;\n    thread_.join();\n  }\n\n  virtual bool isPaused() const override\n  {\n    return paused_;\n  }\n\n  virtual void resume() override\n  {\n    CHECK(paused_);\n    CHECK(!thread_.joinable());\n    paused_ = false;\n    thread_ = std::thread(&BatchWorker<DataType>::workLoop, this);\n  }\n\n private:\n  virtual void process(const std::vector<DataType>& item) = 0;\n\n  void workLoop()\n  {\n    std::vector<DataType> items;\n    while (!paused_ && queue_.waitAndPopAvailable(&items))\n    {\n      process(items);\n    }\n  }\n\n  ThreadSafeQueue<DataType> queue_;\n  std::atomic<bool> paused_;\n  std::thread thread_;\n};\n\n}  // namespace rpg_common\nnamespace rpg = rpg_common;\n"
  },
  {
    "path": "svo/include/rpg_common/callback_host.h",
    "content": "#pragma once\n\n#include <functional>\n#include <unordered_set>\n\n#include <glog/logging.h>\n\n#include \"rpg_common/batch_worker.h\"\n#include \"rpg_common/realtime_worker.h\"\n\nnamespace rpg_common {\n\ntemplate <typename ... CallbackArgs>\nclass CallbackHost\n{\n public:\n  typedef std::function<void(CallbackArgs...)> Callback;\n\n  void addCallback(const Callback& callback)\n  {\n    CHECK(callback) << \"Callback isn't a valid function!\";\n    CHECK(callbacks_.emplace(callback).second)\n    << \"Duplicate callback addition!\";\n  }\n\n  void linkBatchWorker(BatchWorker<CallbackArgs...>* worker)\n  {\n    CHECK_NOTNULL(worker);\n    addCallback([worker](CallbackArgs... args){\n      worker->addTask(args...);\n    });\n  }\n  void linkRealtimeWorker(RealtimeWorker<CallbackArgs...>* worker)\n  {\n    CHECK_NOTNULL(worker);\n    addCallback([worker](CallbackArgs... args){\n      worker->addTask(args...);\n    });\n  }\n\n protected:\n  void triggerCallbacks(CallbackArgs... args) const\n  {\n    for (const Callback& callback : callbacks_)\n    {\n      callback(args...);\n    }\n    VLOG(40) << callbacks_.size() << \" callbacks processed.\";\n  }\n private:\n  std::unordered_set<Callback> callbacks_;\n};\n\n}  // namespace rpg_common\n\nnamespace std {\n\ntemplate <typename ... CallbackArgs>\nstruct hash<std::function<void(CallbackArgs...)>>\n{\n  size_t operator()(const std::function<void(CallbackArgs...)>& x) const\n  {\n    CHECK(x);\n    void (*const* pointer)(CallbackArgs...) =\n        x.template target<void(*)(CallbackArgs...)>();\n    if (pointer)  // Functor is a function pointer.\n    {\n      return std::hash<const void*>()(reinterpret_cast<const void*>(pointer));\n    }\n    else  // Functor is a lambda.\n    {\n      return std::hash<std::string>()(x.target_type().name());\n    }\n  }\n};\n\ntemplate <typename ... CallbackArgs>\nbool operator ==(\n    const std::function<void(CallbackArgs...)>& a,\n    const std::function<void(CallbackArgs...)>& b)\n{\n  CHECK(a);\n  CHECK(b);\n  void (*const* a_pointer)(CallbackArgs...) =\n      a.template target<void(*)(CallbackArgs...)>();\n  void (*const* b_pointer)(CallbackArgs...) =\n      b.template target<void(*)(CallbackArgs...)>();\n  if (a_pointer)  // Functor is a function pointer.\n  {\n    return a_pointer == b_pointer;\n  }\n  else  // Functor is a lambda.\n  {\n    return a.target_type().name() == b.target_type().name();\n  }\n}\n\n}  // namespace std\nnamespace rpg = rpg_common;\n"
  },
  {
    "path": "svo/include/rpg_common/realtime_worker.h",
    "content": "#pragma once\n\n#include <thread>\n\n#include \"rpg_common/threadsafe_queue.h\"\n\nnamespace rpg_common {\n\ntemplate <typename DataType>\nclass RealtimeWorker\n{\n public:\n  RealtimeWorker() : thread_(&RealtimeWorker<DataType>::workLoop, this) {}\n\n  virtual ~RealtimeWorker()\n  {\n    shutdown();\n  }\n\n  void addTask(const DataType& item)\n  {\n    queue_.push(item);\n  }\n\n  void shutdown()\n  {\n    if (!thread_.joinable())\n    {\n      LOG(WARNING) << \"Redundant shutdown call of real-time worker!\";\n      return;\n    }\n    queue_.shutdown();\n    thread_.join();\n  }\n\n  void printBacklogWarningsWithTag(const std::string& tag)\n  {\n    queue_.printBacklogWarningsWithTag(\n        \"Queue of worker with tag \\\"\" + tag + \"\\\"\");\n  }\n\n private:\n  virtual void process(const DataType& item) = 0;\n\n  void workLoop()\n  {\n    DataType item;\n    while (queue_.skipToLatest(&item))\n    {\n      process(item);\n    }\n  }\n\n  ThreadSafeQueue<DataType> queue_;\n  std::thread thread_;\n};\n\n}  // namespace rpg_common\nnamespace rpg = rpg_common;\n"
  },
  {
    "path": "svo/include/rpg_common/threadsafe_queue.h",
    "content": "#pragma once\n\n#include <condition_variable>\n#include <mutex>\n#include <queue>\n#include <vector>\n\n#include <glog/logging.h>\n\nnamespace rpg_common {\n\ntemplate<typename DataType>\nclass ThreadSafeQueue\n{\n public:\n  ThreadSafeQueue() : warn_if_has_backlog_(false), shutdown_(false) {}\n\n  void push(const DataType& item)\n  {\n    {\n      std::lock_guard<std::mutex> lock(mutex_);\n      data_.push(item);\n    }\n    cv_push_.notify_all();\n  }\n\n  bool tryPopNow(DataType* item)\n  {\n    CHECK_NOTNULL(item);\n    std::lock_guard<std::mutex> lock(mutex_);\n    if (data_.empty())\n    {\n      return false;\n    }\n    else\n    {\n      *item = data_.front();\n      data_.pop();\n      cv_pop_.notify_all();\n      return true;\n    }\n  }\n\n  // Returns false if queue has been shut down.\n  bool waitAndPop(DataType* item)\n  {\n    CHECK_NOTNULL(item);\n    std::unique_lock<std::mutex> lock(mutex_);\n    if (!wait(&lock))\n    {\n      return false;\n    }\n    else\n    {\n      *item = data_.front();\n      data_.pop();\n      cv_pop_.notify_all();\n      return true;\n    }\n  }\n\n  // Returns false if queue has been shut down.\n  bool skipToLatest(DataType* item)\n  {\n    CHECK_NOTNULL(item);\n    std::unique_lock<std::mutex> lock(mutex_);\n    if (!wait(&lock))\n    {\n      return false;\n    }\n    else\n    {\n      *item = data_.back();\n      while (!data_.empty()) {\n        data_.pop();\n      }\n      cv_pop_.notify_all();\n      return true;\n    }\n  }\n\n  // Returns false if queue has been shut down.\n  bool waitAndPopAvailable(std::vector<DataType>* items)\n  {\n    CHECK_NOTNULL(items)->clear();\n    std::unique_lock<std::mutex> lock(mutex_);\n    if (!wait(&lock))\n    {\n      return false;\n    }\n    else\n    {\n      items->reserve(data_.size());\n      while (!data_.empty()) {\n        items->push_back(data_.front());\n        data_.pop();\n      }\n      cv_pop_.notify_all();\n      return true;\n    }\n  }\n\n  void shutdown()\n  {\n    {\n      std::lock_guard<std::mutex> lock(mutex_);\n      shutdown_ = true;\n    }\n    cv_push_.notify_all();\n    cv_pop_.notify_all();\n  }\n\n  void printBacklogWarningsWithTag(const std::string& tag)\n  {\n    warn_if_has_backlog_ = true;\n    backlog_warn_tag_ = tag;\n  }\n\n  // Returns false if shutdown has been requested.\n  bool waitUntilEmpty()\n  {\n    std::unique_lock<std::mutex> lock(mutex_);\n    cv_pop_.wait(\n        lock, [this] { return data_.empty() || shutdown_; });\n    if (shutdown_)\n    {\n      return false;\n    }\n    return true;\n  }\n\n private:\n  // Returns false if shutdown has been requested.\n  bool wait(std::unique_lock<std::mutex>* lock)\n  {\n    CHECK_NOTNULL(lock);\n    if (warn_if_has_backlog_ && !data_.empty())\n    {\n      LOG(WARNING) << \"Backlog in queue \\\"\" << backlog_warn_tag_ << \"\\\"\";\n    }\n    cv_push_.wait(\n        *lock, [this] { return !data_.empty() || shutdown_; });\n    if (shutdown_)\n    {\n      return false;\n    }\n    return true;\n  }\n\n  std::queue<DataType> data_;\n  std::mutex mutex_;\n  std::condition_variable cv_push_;\n  std::condition_variable cv_pop_;\n\n  bool warn_if_has_backlog_;\n  std::string backlog_warn_tag_;\n  volatile bool shutdown_;\n};\n\n}  // namespace rpg_common\nnamespace rpg = rpg_common;\n"
  },
  {
    "path": "svo/include/rpg_common/worker_base.h",
    "content": "#pragma once\n\nnamespace rpg_common {\n\n// Template-free interface to worker features that do not depend on the queue\n// data type.\nclass WorkerBase\n{\npublic:\n  virtual ~WorkerBase() = default;\n\n  // Shuts down once the current loop is finished.\n  virtual void shutdown() = 0;\n  // Shuts down once the queue is empty.\n  virtual void softShutdown() = 0;\n\n  virtual void pause() = 0;\n  virtual bool isPaused() const = 0;\n  virtual void resume() = 0;\n};\n\n}  // namespace rpg_common\nnamespace rpg = rpg_common;\n"
  },
  {
    "path": "svo/include/svo/abstract_bundle_adjustment.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n// svo\n#include <svo/global.h>\n\nnamespace svo\n{\n\n/// EXPERIMENTAL Defines interface for various bundle adjustment methods\nclass AbstractBundleAdjustment\n{\npublic:\n\n  typedef std::shared_ptr<AbstractBundleAdjustment> Ptr;\n\n  /// Default constructor.\n  AbstractBundleAdjustment() {}\n\n  virtual ~AbstractBundleAdjustment() {}\n\n  // no copy\n  AbstractBundleAdjustment(const AbstractBundleAdjustment&) = delete;\n  AbstractBundleAdjustment& operator=(const AbstractBundleAdjustment&) = delete;\n\n  /// Invoke bundle adjustment.\n  virtual void bundleAdjustment(\n      const FrameBundlePtr& frame_bundle) = 0;\n\n  /// Update map with results from bundle adjustment.\n  virtual void loadMapFromBundleAdjustment(\n      const FrameBundlePtr& new_frames,\n      const FrameBundlePtr& last_frames,\n      const MapPtr& map) = 0;\n\n  /// Reset bundle adjustment\n  virtual void reset() = 0;\n\n  /// Bundle adjustment can run completely in parallel. Start the thread to do so.\n  virtual void startThread() = 0;\n\n  /// Stop and join the bundle adjustment thread\n  virtual void quitThread() = 0;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/config.h.in",
    "content": "#pragma once\n\n#cmakedefine SVO_WITH_CUDA\n#cmakedefine SVO_WITH_PANGOLIN"
  },
  {
    "path": "svo/include/svo/frame_handler_array.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/frame_handler_base.h>\n\nnamespace svo {\n\nclass FrameHandlerArray : public FrameHandlerBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<FrameHandlerArray> Ptr;\n\n  /// Default constructor\n  FrameHandlerArray(\n      const BaseOptions& base_options,\n      const DepthFilterOptions& depth_filter_options,\n      const DetectorOptions& feature_detector_options,\n      const InitializationOptions& init_options,\n      const ReprojectorOptions& reprojector_options,\n      const FeatureTrackerOptions& tracker_options,\n      const CameraBundle::Ptr& cameras);\n\n  virtual ~FrameHandlerArray() = default;\n\n  // deprecated. use addImageBundle().\n  void addImages(\n      const std::vector<cv::Mat>& images,\n      const uint64_t timestamp);\n\n  const FrameBundlePtr& lastFrames() const\n  {\n    return last_frames_;\n  }\n  \nprotected:\n\n  /// Pipeline implementation. Called by base class.\n  virtual UpdateResult processFrameBundle() override;\n\n  UpdateResult processFirstFrame();\n\n  UpdateResult processSecondFrame();\n\n  UpdateResult processFrame();\n\n  UpdateResult makeKeyframe(const size_t camera_id);\n\n  /// Reset the frame handler. Implement in derived class.\n  virtual void resetAll();\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/frame_handler_base.h",
    "content": "﻿// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <mutex>\n#include <queue>\n#include <functional>\n#include <vikit/timer.h>\n#include <vikit/ringbuffer.h>\n#include <rpg_common/callback_host.h>\n#include <svo/global.h>\n#include <svo/config.h>\n#include <vikit/params_helper.h>\n#include <vikit/cameras/ncamera.h>\n\n// forward declarations:\nnamespace vk\n{\nclass PerformanceMonitor;\n}\n\nnamespace svo\n{\n/// Keyframe Selection Criterion\nenum class KeyframeCriterion {\n  DOWNLOOKING, FORWARD\n};\n\n/// Options for base frame handler module. Sets tracing and quality options.\nstruct BaseOptions\n{\n  /// The VO only keeps a list of N keyframes in the map. If a new keyframe\n  /// is selected, then one furthest away from the current position is removed\n  /// Default is 10. Set to 0 if all keyframes should remain in the map.\n  /// More keyframes may reduce drift but since no loop-closures are actively\n  /// detected and closed it is not beneficial to accumulate all keyframes.\n  size_t max_n_kfs = 10;\n\n  /// Keyframe selection criterion: If we have a downlooking camera (e.g. on\n  /// quadrotor), select DOWNLOOKING. Otherwise, select FORWARD.\n  KeyframeCriterion kfselect_criterion = KeyframeCriterion::DOWNLOOKING;\n\n  /// (!) Parameter for DOWNLOOKING keyframe criterion. We select a new KF\n  /// whenever we move kfselect_min_dist of the average depth away from the\n  /// closest keyframe.\n  double kfselect_min_dist = 0.12;\n\n  /// Keyframe selection for FORWARD: If we are tracking more than this amount\n  /// of features, then we don't take a new keyframe.\n  size_t kfselect_numkfs_upper_thresh = 110;\n\n  /// Keyframe selection for FORWARD : If we have less than this amount of\n  /// features we always select a new keyframe.\n  size_t kfselect_numkfs_lower_thresh = 80;\n\n  /// Keyframe selection for FORWARD : Minimum distance in meters (set initial\n  /// scale!) before a new keyframe is selected.\n  double kfselect_min_dist_metric = 0.5;\n\n  /// Keyframe selection for FORWARD: Minimum angle in degrees to closest KF\n  double kfselect_min_angle = 5.0;\n\n  int kfselect_min_num_frames_between_kfs = 2;\n  double kfselect_min_disparity = -1;\n\n  /// By default, when the VO initializes, it sets the average depth to this\n  /// value. This is because from monocular views, we can't estimate the scale.\n  /// If you initialize SVO with a downward-looking camera at 1.5m height over\n  /// a flat surface, then set this value to 1.5 and the resulting map will\n  /// be approximately in the right scale.\n  double init_map_scale = 1.0;\n\n  /// By default, the orientation of the first camera-frame is set to be the\n  /// identity (camera facing in z-direction, camera-right is in x-direction,\n  /// camera-down is in y-direction) and the map scale is initialized with the\n  /// option init_map_scale. However, if you would like to provide another\n  /// initial orientation and inital scene depth, then activate this flag.\n  /// If activated, you need to provide attitude and depth measurements using\n  /// the functions addAttitudeMeasurement(), addDepthMeasurement() in the\n  /// base class.\n  /// This option is useful for in-flight initialization of SVO.\n  bool init_use_att_and_depth = false;\n\n  /// (!) During sparse image alignment (see [1]), we find the pose relative\n  /// to the last frame by minimizing the photometric error between the frames.\n  /// This KLT-style optimizer is pyramidal to allow more motion between two\n  /// frames.\n  /// Depending on the image size, you should increase this value.\n  /// For images of the size 640x480 we set this value to 4. If your image is\n  /// double the resolution, increase to 5, and so on.\n  size_t img_align_max_level = 4;\n\n  /// (!) During sparse image alignment, we stop optimizing at this level for\n  /// efficiency reasons. If you have the time, you can go down to the zero'th\n  /// level.\n  /// Depending on the image size, you should increase this value.\n  /// For images of the size 640x480 we set this value to 2. If your image is\n  /// double the resolution, increase to 3, and so on.\n  size_t img_align_min_level = 2;\n\n  /// control whether to use robustification in image alignment\n  bool img_align_robustification = false;\n\n  /// If you are using a gyroscope and provide an attitude estimate\n  /// together with the image in the function addImage() then this parameter\n  /// specifies how much you trust your gyroscope. If you set it to 2.0\n  /// (default) it means that the gyroscope attitude is valued two times more\n  /// than the actualy orientation estimate from the visual measurements.\n  double img_align_prior_lambda_rot = 0.0;\n\n  /// Internally, we have a very basic constant velocity motion model.\n  /// similarly to lambda_rot, this parameter trades-off the visual measurements\n  /// with the constant velocity prior. By default this weight is way below 1.\n  double img_align_prior_lambda_trans = 0.0;\n\n  /// If you choose to extract many features then sparse image alignment may\n  /// become too slow. You can limit the number of features for this step with\n  /// this parameter to randomly sample N features that are used for alignment.\n  size_t img_align_max_num_features = 0;\n\n  /// Whether or not to include the distortion when calculating the jacobian.\n  /// For small FoV pinhole projection, it is safe to leave it as false.\n  /// For fisheye lens, set this to true.\n  bool img_align_use_distortion_jacobian = false;\n  \n  /// Estimate an affine transformation for illumination/exposure change.\n  /// If you observe bad tracking because of illumination/exposure change,\n  /// enabling these parameters might help.\n  /// Normally it is OK to leave them as default.\n  bool img_align_est_illumination_gain = false;\n  bool img_align_est_illumination_offset = false;\n\n  /// (!) This parameter is the reprojection error threshold during pose\n  /// optimization. If the distance between a feature and the projected pixel\n  /// position of the corresponding 3D point is further than this threshold\n  /// appart (on the zero'th level pyramid), then the feature is removed from\n  /// the frame. With a good camera and image resolution of 640x480 a threshold\n  /// of 2.0 is typically ok. If you use shitty cameras (rolling shutter),\n  /// higher resolution cameras, cameras with imperfect calibration etc. you\n  /// might increase this threshold. But first, check the tracefile for the\n  /// average reprojection threshold. We made the experice that with GoPro\n  /// cameras, we had to increase this threshold.\n  double poseoptim_thresh = 2.0;\n\n  /// This is the same parameter as img_align_prior_lambda_rot but for\n  /// the pose optimization instead of the sparse image alignment. Only used\n  /// if you provide gyroscope measurements.\n  double poseoptim_prior_lambda = 0.0;\n\n  /// This parameter controls whether the pose optimizer works on:\n  /// - unit plane: preferable for pinhole model\n  /// - unit sphere: omnidirectional camera model(e.g. fisheye, catadioptric)\n  double poseoptim_using_unit_sphere = false;\n\n  /// By default SVO does not do bundle adjustment but it optimizes the pose\n  /// and the structure separately. This is not optimal but much faster. This\n  /// parameters specifies how many 3D points should be randomly selected at\n  /// every frame and be optimized. For speed reasons, we don't optimize all\n  /// points at every iteration. Set to -1 if you want to do so anyway.\n  int structure_optimization_max_pts = 20;\n\n  /// Location where the tracefile is saved.\n  std::string trace_dir = \"/tmp\";\n\n  /// Minimum number of features that should be tracked. If the number falls\n  /// bellow then the stage is set to STAGE_RELOCALIZING and the tracking\n  /// quality to TRACKING_INSUFFICIENT until we find more features again.\n  size_t quality_min_fts = 50;\n\n  /// If from one frame to the other we suddenly track much less features,\n  /// this can be an indication that something is wrong and we set the stage\n  /// to STAGE_RELOCALIZING and the tracking quality to TRACKING_INSUFFICIENT.\n  int quality_max_fts_drop = 40;\n\n  /// Once we are in relocalization mode, we allow a fixed number of images\n  /// to try and relocalize before we reset() and set to STAGE_PAUSED.\n  size_t relocalization_max_trials = 100;\n\n  /// EXPERIMENTAL Should IMU measurements be used.\n  bool use_imu = false;\n\n  /// EXPERIMENTAL Update seeds with old keyframes.\n  bool update_seeds_with_old_keyframes = false;\n\n  /// EXPERIMENTAL Asynchronous reprojection (for multi-camera svo)\n  bool use_async_reprojectors = false;\n};\n\nenum class Stage {\n  kPaused,           ///< Stage at the beginning and after reset\n  kInitializing,     ///< Stage until the first frame with enough features is found\n  kTracking,         ///< Stage when SVO is running and everything is well\n  kRelocalization    ///< Stage when SVO looses tracking and it tries to relocalize\n};\nenum class TrackingQuality {\n  kInsufficient,\n  kBad,\n  kGood\n};\nenum class UpdateResult {\n  kDefault,\n  kKeyframe,\n  kFailure\n};\n\n/// Base class for various VO pipelines. Manages the map and the state machine.\nclass FrameHandlerBase : public rpg_common::CallbackHost<const FrameBundlePtr&>\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef std::mutex mutex_t;\n  typedef std::unique_lock<mutex_t> ulock_t;\n  typedef std::function<bool(const Transformation& pose)> NewKeyFrameCriteria;\n\n  /// Default constructor\n  FrameHandlerBase(\n      const BaseOptions& base_options,\n      const ReprojectorOptions& reprojector_options,\n      const DepthFilterOptions& depthfilter_options,\n      const DetectorOptions& detector_options,\n      const InitializationOptions& init_options,\n      const FeatureTrackerOptions& tracker_options,\n      const CameraBundle::Ptr& cameras);\n\n  virtual ~FrameHandlerBase();\n\n  // no copy\n  FrameHandlerBase(const FrameHandlerBase&) = delete;\n  FrameHandlerBase& operator=(const FrameHandlerBase&) = delete;\n\n  /// @name Main Interface\n  ///\n  /// These are the main functions to be used in this class when interfacing with\n  /// the odometry pipeline.\n  ///\n  /// @{\n\n  /// Start processing. Call this function at the beginning or to restart once\n  /// the stage is set to paused.\n  void start() { set_start_ = true; }\n\n  /// Will reset the map as soon as the current frame is finished processing.\n  void reset() { set_reset_ = true; }\n\n  /// Get the current stage of the algorithm.\n  Stage stage() const { return stage_; }\n\n  bool addFrameBundle(const FrameBundlePtr& frame_bundle);\n\n  bool addImageBundle(\n        const std::vector<cv::Mat>& imgs,\n        const uint64_t timestamp);\n\n  void setRotationPrior(const Quaternion& R_imu_world);\n  void setRotationIncrementPrior(const Quaternion& R_lastimu_newimu);\n\n  FrameBundlePtr getLastFrames() const { return last_frames_; }\n\n  /// @}\n\n  /// Has the pipeline started? (set_start_ is set to false when started).\n  inline bool hasStarted() const { return !set_start_; }\n\n  /// Get the current map.\n  inline const MapPtr& map() const { return map_; }\n\n  /// Get camera bundle.\n  inline const CameraBundle::Ptr& getNCamera() const { return cams_; }\n\n  /// Get tracking quality.\n  inline TrackingQuality trackingQuality() const { return tracking_quality_; }\n\n  /// Get the processing time of the previous iteration.\n  inline double lastProcessingTime() const { return timer_.getTime(); }\n\n  /// Get the number of feature observations of the last frame.\n  inline size_t lastNumObservations() const { return num_obs_last_; }\n\n  /// EXPERIMENTAL Set Bundle-Adjuster handler\n  inline void setBundleAdjuster(const AbstractBundleAdjustmentPtr& ba)\n  {\n    bundle_adjustment_ = ba;\n  }\n\n  inline const AbstractBundleAdjustmentPtr& getBundleAdjuster() const\n  {\n    return bundle_adjustment_;\n  }\n\n  /// Set pose of first frame by specifying the IMU pose\n  inline void setInitialImuPose(const Transformation& T_world_imu)\n  {\n    T_world_imuinit = T_world_imu;\n  }\n\n  /// Set pose of first frame by specifying the camera pose\n  inline void setInitialCamPose(const Transformation& T_world_cam, size_t cam_index = 0)\n  {\n    T_world_imuinit = T_world_cam*cams_->get_T_C_B(cam_index);\n  }\n\n  /// Get the set of spatially closest keyframes of the last frame.\n  std::vector<FramePtr> closeKeyframes() const;\n\n  /// Set compensation parameters.\n  void setCompensation(const bool do_compensation);\n\n  /// Set the first frame (used for synthetic datasets in benchmark node)\n  virtual void setFirstFrames(const std::vector<FramePtr>& first_frames);\n\n  /// @name Debug Interface\n  /// These parameters should be private but are currently not for easier debugging.\n  /// It is unlikely that you need them.\n  ///\n  /// @{\n\n  /// Options for BaseFrameHandler module\n  BaseOptions options_;\n\n  /// Camera model, can be ATAN, Pinhole or Ocam (see vikit)\n  CameraBundle::Ptr cams_;\n\n  /// Current frame-bundle that is being processed\n  FrameBundlePtr new_frames_;\n\n  /// Last frame-bundle that was processed. Can be nullptr.\n  FrameBundlePtr last_frames_;\n\n  /// Custom callback to check if new keyframe is required\n  NewKeyFrameCriteria need_new_kf_;\n\n  /// Default keyframe selection criterion.\n  virtual bool needNewKf(const Transformation& T_f_w);\n\n  /// Translation prior computed from simple constant velocity assumption\n  Vector3d t_lastimu_newimu_;\n\n  /// Initial orientation\n  Transformation T_world_imuinit;\n\n#ifdef SVO_LOOP_CLOSING\n  // Copy of data from the loop closure class\n  std::vector<Eigen::Matrix<float, 1, 6 >,\n  Eigen::aligned_allocator<Eigen::Matrix<float, 1, 6> > > loop_closure_data;\n#endif\n\n  // SVO Modules\n  SparseImgAlignBasePtr sparse_img_align_;\n  std::vector<ReprojectorPtr> reprojectors_;\n  PoseOptimizerPtr pose_optimizer_;\n  DepthFilterPtr depth_filter_;\n  InitializerPtr initializer_;\n#ifdef SVO_LOOP_CLOSING\n  LoopClosingPtr lc_;\n#endif\n  /// @}\n\nprotected:\n  Stage stage_;                 //!< Current stage of the algorithm.\n  bool set_reset_;              //!< Flag that the user can set. Will reset the system before the next iteration.\n  bool set_start_;              //!< Flag the user can set to start the system when the next image is received.\n  MapPtr map_;                  //!< Map of keyframes created by the slam system.\n  vk::Timer timer_;             //!< Stopwatch to measure time to process frame.\n  vk::RingBuffer<double> acc_frame_timings_;    //!< Total processing time of the last 10 frames, used to give some user feedback on the performance.\n  vk::RingBuffer<size_t> acc_num_obs_;          //!< Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance.\n  size_t num_obs_last_;                         //!< Number of observations in the previous frame.\n  TrackingQuality tracking_quality_;            //!< An estimate of the tracking quality based on the number of tracked features.\n  size_t frame_counter_ = 0; //!< Number of frames processed since started\n  double depth_median_;                 //!< Median depth at last frame\n  double depth_min_;                    //!< Min depth at last frame\n  double depth_max_;\n\n  std::vector<std::vector<FramePtr>> overlap_kfs_;\n\n  // Rotation prior.\n  bool have_rotation_prior_ = false;\n  Quaternion R_imu_world_;\n  Quaternion R_imulast_world_;\n\n  // Motion prior\n  bool have_motion_prior_ = false;\n  Transformation T_newimu_lastimu_prior_;\n\n  // base modules\n  AbstractBundleAdjustmentPtr bundle_adjustment_;\n\n  // relocalization\n  FramePtr reloc_keyframe_;\n  size_t relocalization_n_trials_;      //!< With how many frames did we try to relocalize?\n\n  void setInitialPose(const FrameBundlePtr& frame_bundle) const;\n\n  size_t sparseImageAlignment();\n\n  size_t projectMapInFrame();\n\n  size_t optimizePose();\n\n  void optimizeStructure(\n      const FrameBundlePtr& frames,\n      int max_n_pts,\n      int max_iter);\n\n  void upgradeSeedsToFeatures(const FramePtr& frame);\n\n  /// Reset the map and frame handler to start from scratch.\n  void resetCommon();\n\n  /// Pipeline implementation in derived class.\n  virtual UpdateResult processFrameBundle() = 0;\n\n  /// Reset the frame handler. Implement in derived class.\n  virtual void resetAll() { resetCommon(); }\n\n  /// Set the tracking quality based on the number of tracked features.\n  virtual void setTrackingQuality(const size_t num_observations);\n\n  /// Set all cells in detector to occupied in which a point reprojected during\n  /// the reprojection stage.\n  virtual void setDetectorOccupiedCells(\n      const size_t reprojector_grid_idx,\n      const DetectorPtr& feature_detector);\n\n  /// Get motion prior, between last and new frames expressed in IMU frame.\n  virtual void getMotionPrior(const bool use_velocity_in_frame);\n};\n\n} // namespace nslam\n"
  },
  {
    "path": "svo/include/svo/frame_handler_mono.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/frame_handler_base.h>\n\nnamespace svo {\n\n/// Monocular Semi-Direct Visual Odometry Pipeline\n///\n/// References:\n/// [1] Christian Forster, Matia Pizzoli, Davide Scaramuzza, \"SVO: Semi-Direct\n/// Monocular Visual Odometry for Micro Aerial Vehicles\", Proc. IEEE International\n/// Conference on Robotics and Automation, Honkong 2015.\n///\n/// This is the main interface class of the VO. It derives from FrameHandlerBase\n/// which maintains the state machine (start, stop, reset).\nclass FrameHandlerMono : public FrameHandlerBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<FrameHandlerMono> Ptr;\n\n  /// Default constructor\n  FrameHandlerMono(\n      const BaseOptions& base_options,\n      const DepthFilterOptions& depth_filter_options,\n      const DetectorOptions& feature_detector_options,\n      const InitializationOptions& init_options,\n      const ReprojectorOptions& reprojector_options,\n      const FeatureTrackerOptions& tracker_options,\n      const CameraBundle::Ptr& cam);\n\n  virtual ~FrameHandlerMono() = default;\n\n  /// @name Main Interface\n  ///\n  /// These are the main functions that you will need to interface\n  /// with the visual odometry pipeline. Other important functions like\n  /// start(), reset(), stage() are provided in the FrameHandlerBase class which\n  /// maintains the state-machine.\n  ///\n  /// @{\n\n  /// Provide an image to the odometry pipeline\n  /// \\param img A 8bit grayscale OpenCV image.\n  /// \\param timestamp Corresponding timestamp of the image. Is saved in the\n  /// frame class.\n  /// \\param R_origin_imu If you use a IMU gyroscope and you integrate it outside\n  /// of SVO, you can provide the orientation here. In order to be used, you have\n  /// to set option->use_provided_attitude to true. If you set the priors in the\n  /// options larger than one the gyroscope measurement is used as weighted prior\n  /// in the optimizations. Note that you have to provide the orientation of the\n  /// IMU frame and not the camera. The relative transformation between imu and\n  /// camera is set inside cam_. Another way to provide an orientation estimate\n  /// is to use set the imuHandler and to provide it with rotation rate\n  /// measurements.\n  /// \\param custom_id If you would like to save an identifier key with the the\n  /// frame you can provide it here. It is not used by SVO for anything but can\n  /// be accessed with frame->customId().\n  //! @deprecated. use addImageBundle().\n  void addImage(\n      const cv::Mat& img,\n      const uint64_t timestamp);\n\n  /// After adding an image to SVO with addImage(), the image is saved in a\n  /// Frame class, the frame is processed and it's pose computed. Most likely you\n  /// want to know the pose of the cam. Therefore, use this function to access\n  /// the pose of the last provided image (e.g., vo->lastFrame()->T_world_cam()).\n  /// \\return FramePtr !!!IMPORTANT!!! can be nullptr if something did not work\n  /// well or if you call this function when pipeline is not running, i.e.,\n  /// vo->stage()==STAGE_PAUSED.\n  FramePtr lastFrame() const;\n\n  /// @}\n\n  inline CameraPtr cam() const { return cams_->getCameraShared(0); }\n\nprotected:\n\n  // helpers\n  const FramePtr& newFrame() const;\n\n  // unsafe because last_frame might be nullptr. use this function only\n  // when you are sure that it is set!\n  const FramePtr& lastFrameUnsafe() const;\n\n  bool haveLastFrame() const;\n\n  /// Pipeline implementation. Called by base class.\n  virtual UpdateResult processFrameBundle() override;\n\n  /// Processes the first frame and sets it as a keyframe.\n  virtual UpdateResult processFirstFrame();\n\n  /// Processes all frames after the first two keyframes.\n  virtual UpdateResult processFrame();\n\n  /// Try relocalizing the frame at relative position to provided keyframe.\n  virtual UpdateResult relocalizeFrame(\n      const Transformation& T_cur_ref,\n      const FramePtr& ref_keyframe);\n\n  /// Reset the frame handler. Implement in derived class.\n  virtual void resetAll();\n};\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo/include/svo/frame_handler_stereo.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/frame_handler_base.h>\n\nnamespace svo {\n\n// forward declaration\nclass StereoTriangulationOptions;\nclass StereoTriangulation;\ntypedef std::shared_ptr<StereoTriangulation> StereoTriangulationPtr;\n\n/// Monocular Semi-Direct Visual Odometry Pipeline\n///\n/// References:\n/// [1] Christian Forster, Matia Pizzoli, Davide Scaramuzza, \"SVO: Semi-Direct\n/// Monocular Visual Odometry for Micro Aerial Vehicles\", Proc. IEEE International\n/// Conference on Robotics and Automation, Honkong 2015.\n///\n/// This is the main interface class of the VO. It derives from FrameHandlerBase\n/// which maintains the state machine (start, stop, reset).\nclass FrameHandlerStereo : public FrameHandlerBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<FrameHandlerStereo> Ptr;\n\n  /// Default constructor\n  FrameHandlerStereo(\n      const BaseOptions& base_options,\n      const DepthFilterOptions& depth_filter_options,\n      const DetectorOptions& feature_detector_options,\n      const InitializationOptions& init_options,\n      const StereoTriangulationOptions& stereo_options,\n      const ReprojectorOptions& reprojector_options,\n      const FeatureTrackerOptions& tracker_options,\n      const CameraBundle::Ptr& stereo_camera);\n\n  virtual ~FrameHandlerStereo() = default;\n\n  /// @name Main Interface\n  ///\n  /// These are the main functions that you will need to interface\n  /// with the visual odometry pipeline. Other important functions like\n  /// start(), reset(), stage() are provided in the FrameHandlerBase class which\n  /// maintains the state-machine.\n  ///\n  /// @{\n\n  /// Provide an image to the odometry pipeline\n  /// \\param img A 8bit grayscale OpenCV image.\n  /// \\param timestamp Corresponding timestamp of the image. Is saved in the\n  /// frame class.\n  /// \\param R_origin_imu If you use a IMU gyroscope and you integrate it outside\n  /// of SVO, you can provide the orientation here. In order to be used, you have\n  /// to set option->use_provided_attitude to true. If you set the priors in the\n  /// options larger than one the gyroscope measurement is used as weighted prior\n  /// in the optimizations. Note that you have to provide the orientation of the\n  /// IMU frame and not the camera. The relative transformation between imu and\n  /// camera is set inside cam_. Another way to provide an orientation estimate\n  /// is to use set the imuHandler and to provide it with rotation rate\n  /// measurements.\n  /// \\param custom_id If you would like to save an identifier key with the the\n  /// frame you can provide it here. It is not used by SVO for anything but can\n  /// be accessed with frame->customId().\n  // deprecated. use addImageBundle().\n  void addImages(\n      const cv::Mat& img_left,\n      const cv::Mat& img_right,\n      const uint64_t timestamp);\n\n  /// After adding an image to SVO with addImage(), the image is saved in a\n  /// Frame class, the frame is processed and it's pose computed. Most likely you\n  /// want to know the pose of the cam. Therefore, use this function to access\n  /// the pose of the last provided image (e.g., vo->lastFrame()->T_world_cam()).\n  /// \\return FramePtr !!!IMPORTANT!!! can be nullptr if something did not work\n  /// well or if you call this function when pipeline is not running, i.e.,\n  /// vo->stage()==STAGE_PAUSED.\n  const FrameBundlePtr& lastFrames() const\n  {\n    return last_frames_;\n  }\n\n  /// @}\n\n  /// @name Debug Interface\n  /// These parameters should be private but are currently not for easier debugging.\n  /// It is unlikely that you need them.\n  ///\n  /// @{\n\n  // SVO Modules:\n  StereoTriangulationPtr stereo_triangulation_;\n\n  /// @}\n\nprotected:\n\n  /// Pipeline implementation. Called by base class.\n  virtual UpdateResult processFrameBundle() override;\n\n  /// Processes the first frame and sets it as a keyframe.\n  virtual UpdateResult processFirstFrame();\n\n  /// Processes all frames after the first two keyframes.\n  virtual UpdateResult processFrame();\n\n  virtual UpdateResult makeKeyframe();\n\n  /// Reset the frame handler. Implement in derived class.\n  virtual void resetAll();\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/global.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <list>\n#include <vector>\n#include <string>\n//#include <cmath>      // sin, cos\n#include <memory>     // shared_ptr\n#include <stdexcept>  // assert, runtime_error\n\n#include <Eigen/Core>\n#include <Eigen/Geometry>\n#include <opencv2/core/core.hpp>\n#include <vikit/performance_monitor.h>\n\n#include <svo/common/logging.h>\n#include <svo/common/types.h>\n#include <svo/common/camera.h>\n#include <svo/common/transformation.h>\n\n\nnamespace svo\n{\n  //using namespace Eigen;\n  using Eigen::Vector2i;\n  using Eigen::Vector2f;\n  using Eigen::Vector2d;\n  using Eigen::Vector3d;\n  using Eigen::Matrix2f;\n  using Eigen::Matrix2d;\n  using Eigen::Matrix3d;\n  using Eigen::Matrix;\n\n  typedef std::shared_ptr<vk::PerformanceMonitor> PerformanceMonitorPtr;\n#ifdef SVO_TRACE\n  extern PerformanceMonitorPtr g_permon;\n  #define SVO_LOG(name, value) g_permon->log(std::string(name),(value))\n  #define SVO_START_TIMER(name) g_permon->startTimer((name))\n  #define SVO_STOP_TIMER(name) g_permon->stopTimer((name))\n#else\n  #define SVO_LOG(name, v) (void) v\n  #define SVO_START_TIMER(name)\n  #define SVO_STOP_TIMER(name)\n#endif\n\n  // forward declaration of modules\n  class Frame;\n  typedef std::shared_ptr<Frame> FramePtr;\n  typedef std::weak_ptr<Frame> FrameWeakPtr;\n  class FrameBundle;\n  typedef std::shared_ptr<FrameBundle> FrameBundlePtr;\n  struct Feature;\n  typedef std::shared_ptr<Feature> FeaturePtr;\n  typedef std::weak_ptr<Feature> FeatureWeakPtr;\n  class Point;\n  typedef std::shared_ptr<Point> PointPtr;\n  class ImuHandler;\n  typedef std::shared_ptr<ImuHandler> ImuHandlerPtr;\n  class SparseImgAlignBase;\n  typedef std::shared_ptr<SparseImgAlignBase> SparseImgAlignBasePtr;\n  class Map;\n  typedef std::shared_ptr<Map> MapPtr;\n  class Matcher;\n  typedef std::shared_ptr<Matcher> MatcherPtr;\n  class SeedInverse;\n  typedef SeedInverse SeedImplementation;\n  typedef std::shared_ptr<SeedImplementation> SeedPtr;\n  typedef std::vector<SeedPtr> Seeds;\n  class AbstractDetector;\n  typedef std::shared_ptr<AbstractDetector> DetectorPtr;\n  typedef std::vector<cv::Mat> ImgPyr;\n  typedef std::vector<FeaturePtr> Features;\n  class AbstractBundleAdjustment;\n  typedef std::shared_ptr<AbstractBundleAdjustment> AbstractBundleAdjustmentPtr;\n\n  struct DetectorOptions;\n  struct DepthFilterOptions;\n  struct ReprojectorOptions;\n  struct InitializationOptions;\n  struct FeatureTrackerOptions;\n  struct LoopClosureOptions;\n  class AbstractInitialization;\n  typedef std::unique_ptr<AbstractInitialization> InitializerPtr;\n  class PoseOptimizer;\n  typedef std::unique_ptr<PoseOptimizer> PoseOptimizerPtr;\n  class SparseImgAlign;\n  typedef std::unique_ptr<SparseImgAlign> SparseImgAlignPtr;\n  class DepthFilter;\n  typedef std::unique_ptr<DepthFilter> DepthFilterPtr;\n  class Reprojector;\n  typedef std::unique_ptr<Reprojector> ReprojectorPtr;\n  class LoopClosing;\n  using LoopClosingPtr = std::unique_ptr<LoopClosing>;\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo/include/svo/imu_handler.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <memory>          // std::shared_ptr\n#include <mutex>           // std::mutex\n#include <iostream>\n#include <fstream>\n#include <deque>\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <svo/common/imu_calibration.h>\n\nnamespace svo {\n\nclass PreintegratedImuMeasurement\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  Eigen::Vector3d omega_bias_;\n  Eigen::Vector3d acc_bias_;\n  Eigen::Vector3d delta_t_ij_;\n  Eigen::Vector3d delta_v_ij_;\n  Quaternion delta_R_ij_;\n  double dt_sum_;\n\n  PreintegratedImuMeasurement(\n      const Eigen::Vector3d& omega_bias,\n      const Eigen::Vector3d& acc_bias);\n\n  /// Add single measurements to be integrated\n  void addMeasurement(const ImuMeasurement& m);\n\n  /// Add many measurements to be integrated\n  void addMeasurements(const ImuMeasurements& ms);\n\nprivate:\n  bool last_imu_measurement_set_;\n  ImuMeasurement last_imu_measurement;\n};\n\nclass ImuHandler\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef std::shared_ptr<ImuHandler> Ptr;\n  typedef std::mutex mutex_t;\n  typedef std::unique_lock<mutex_t> ulock_t;\n\n  ImuCalibration imu_calib_;\n  ImuInitialization imu_init_;\n\n  // TODO: make private\n  mutable mutex_t bias_mut_;\n  Eigen::Vector3d acc_bias_; //!< Accleration bias used during preintegration\n  Eigen::Vector3d omega_bias_; //!< Angular rate bias values used during preintegration\n\n  ImuHandler(\n      const ImuCalibration& imu_calib,\n      const ImuInitialization& imu_init);\n  ~ImuHandler();\n\n\n  const Eigen::Vector3d& getAccelerometerBias() const\n  {\n    ulock_t lock(bias_mut_);\n    return acc_bias_;\n  }\n\n  const Eigen::Vector3d& getGyroscopeBias() const\n  {\n    ulock_t lock(bias_mut_);\n    return omega_bias_;\n  }\n\n  void setAccelerometerBias(const Eigen::Vector3d& acc_bias)\n  {\n    ulock_t lock(bias_mut_);\n    acc_bias_ = acc_bias;\n  }\n\n  void setGyroscopeBias(const Eigen::Vector3d& omega_bias)\n  {\n    ulock_t lock(bias_mut_);\n    omega_bias_ = omega_bias;\n  }\n\n  ImuMeasurements getMeasurementsCopy() const\n  {\n    ulock_t lock(measurements_mut_);\n    return measurements_;\n  }\n\n  /// Get IMU measurements in some time interval. Note that you have to provide\n  /// the camera timestamps. Internally, given the calibration it corrects the\n  /// timestamps for delays.\n  bool getMeasurements(\n      const double old_cam_timestamp, // seconds\n      const double new_cam_timestamp, // seconds\n      const bool delete_old_measurements,\n      ImuMeasurements& measurements);\n\n  bool getClosestMeasurement(\n      const double timestamp,\n      ImuMeasurement& measurement) const;\n\n  // deprecated, use preintegrated imu measurement!\n  /// Gets relative transformation in IMU coordinate frame\n  bool getRelativeRotationPrior(\n      const double old_cam_timestamp,\n      const double new_cam_timestamp,\n      bool delete_old_measurements,\n      Quaternion& R_oldimu_newimu);\n\n  bool getAngularVelocity(\n      double timestamp,\n      Eigen::Vector3d& omega) const;\n\n  /// Assumes we are in hover condition and estimates the inital orientation by\n  /// estimating the gravity direction. The yaw direction is not deterministic.\n  bool getInitialAttitude(\n      double timestamp,\n      Quaternion& R_imu_world) const;\n\n  bool addImuMeasurement(const ImuMeasurement& measurement);\n\n  bool loadImuMeasurementsFromFile(const std::string& filename);\n\n  bool loadImuMeasurementsFromCsvFile(const std::string& filename);\n\n  static Eigen::Matrix3d integrateGyroMeasurement(\n      const Eigen::Vector3d& omega_measured,\n      const Eigen::Matrix3d& R_cam_imu,\n      const double delta_t);\n\n  static ImuCalibration loadCalibrationFromFile(const std::string& filename);\n  static ImuInitialization loadInitializationFromFile(const std::string& filename);\n\n  void reset();\n\nprivate:\n\n  mutable mutex_t measurements_mut_;\n  ImuMeasurements measurements_; ///< Newest measurement is at the front of the list\n  std::ofstream ofs_; //!< File stream for tracing the received measurments\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/initialization.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <svo/common/camera_fwd.h>\n\nnamespace svo {\n\n// forward declarations\nclass StereoTriangulation;\nclass FeatureTracker;\nusing FeatureTrackerUniquePtr = std::unique_ptr<FeatureTracker>;\nclass AbstractDetector;\nstruct DetectorOptions;\nstruct FeatureTrackerOptions;\n\nenum class InitializerType {\n  kHomography,       ///< Estimates a plane from the first two views\n  kTwoPoint,         ///< Assumes known rotation from IMU and estimates translation\n  kFivePoint,        ///< Estimate relative pose of two cameras using 5pt RANSAC\n  kOneShot,          ///< Initialize points on a plane with given depth\n  kStereo,           ///< Triangulate from two views with known pose\n  kArrayGeometric,   ///< Estimate relative pose of two camera arrays, using 17pt RANSAC\n  kArrayOptimization ///< Estimate relative pose of two camera arrays using GTSAM\n};\n\n/// Common options for all initializers\n/// Options marked with (!) are more important.\nstruct InitializationOptions\n{\n\n  /// Initializer method. See options above.\n  InitializerType init_type = InitializerType::kHomography;\n\n  /// (!) Minimum disparity (length of feature tracks) required to select the\n  /// second frame. After that we triangulate the first pointcloud. For easy\n  /// initialization you want to make this small (minimum 20px) but actually\n  /// it is much better to have more disparity to ensure the initial pointcloud\n  /// is good.\n  double init_min_disparity = 50.0;\n\n  /// When checking whether the disparity of the tracked features are large enough,\n  /// we check that a certain percentage of tracked features have disparities large\n  /// than init_min_disparity. The default percentage is 0.5, which means the median\n  /// is checked. For example, if this parameter is set to 0.25, it means we go for\n  /// realtive pose estimation only when at least 25% of the tracked features have\n  ///  disparities large than init_min_disparity\n  double init_disparity_pivot_ratio = 0.5;\n\n  /// (!) If less features than init_min_features can be extracted at the\n  /// first frame, the first frame is not accepted and we check the next frame.\n  size_t init_min_features = 100;\n\n  /// (!) This threshold defines how many features should be tracked in the\n  /// first place. Basically, the initializer tries to extract and track\n  /// init_min_features*init_min_features_factor features.\n  double init_min_features_factor = 2.5;\n\n  /// (!) If number of tracked features during initialization falls below this\n  /// threshold than the initializer returns FAILURE.\n  size_t init_min_tracked = 50;\n\n  /// (!) At the end of initialization, we triangulate the first pointcloud\n  /// and check the quality of the triangulation by evaluating the reprojection\n  /// errors. All points that have more reprojection error than reproj_error_thresh\n  /// are considered outliers. Only return SUCCESS if we have more inliers\n  /// than  init_min_inliers.\n  size_t init_min_inliers = 40;\n\n  /// Reprojection threshold in pixels. The same as we also use in pose optimizer.\n  double reproj_error_thresh = 2.0;\n\n\n  // TODO: what are these for? (introduced by Art)\n  double expected_avg_depth = 1.0;\n  double init_min_depth_error = 1.0;\n};\n\nenum class InitResult\n{\n  kFailure,\n  kNoKeyframe,\n  kTracking,\n  kSuccess\n};\n\n/// Bootstrapping the map from the first two views.\nclass AbstractInitialization\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  using BearingVectors = std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d>>;\n  using Ptr = std::shared_ptr<AbstractInitialization>;\n  using UniquePtr = std::unique_ptr<AbstractInitialization>;\n  using InlierMask = Eigen::Matrix<bool, Eigen::Dynamic, 1, Eigen::ColMajor>;\n  using FeatureMatches = std::vector<std::pair<size_t, size_t>>;\n\n  InitializationOptions options_;       //!< Initializer options\n  FeatureTrackerUniquePtr tracker_;     //!< Feature tracker\n  FrameBundlePtr frames_ref_;           //!< reference frames\n  Transformation T_cur_from_ref_;       //!< computed transformation between the first two frames.\n  Quaternion R_ref_world_;\n  Quaternion R_cur_world_;              //!< Absolute orientation prior.\n  Eigen::Vector3d t_ref_cur_;           //!< Translation prior\n  bool have_rotation_prior_ = false;    //!< Do we have a rotation prior?\n  bool have_translation_prior_ = false; //!< Do we have a translation prior?\n  bool have_depth_prior_ = false;       //!< Do we have a depth prior?\n  double depth_at_current_frame_ = 1.0; //!< Depth prior of 3D points in current frame\n\n  AbstractInitialization(\n      const InitializationOptions& init_options,\n      const FeatureTrackerOptions& tracker_options,\n      const DetectorOptions& detector_options,\n      const CameraBundlePtr& cams);\n\n  virtual ~AbstractInitialization();\n\n  bool trackFeaturesAndCheckDisparity(const FrameBundlePtr& frames);\n\n  virtual InitResult addFrameBundle(const FrameBundlePtr& frames_cur) = 0;\n\n  virtual void reset();\n\n  inline void setAbsoluteOrientationPrior(const Quaternion& R_cam_world)\n  {\n    R_cur_world_ = R_cam_world;\n    have_rotation_prior_ = true;\n  }\n\n  inline void setTranslationPrior(const Eigen::Vector3d& t_ref_cur) {\n    t_ref_cur_ = t_ref_cur;\n    have_translation_prior_ = true;\n  }\n\n  inline void setDepthPrior(double depth) {\n    depth_at_current_frame_ = depth;\n    have_depth_prior_ = true;\n  }\n\n};\n\n/// Tracks features using Lucas-Kanade tracker and then estimates a homography.\nclass HomographyInit : public AbstractInitialization\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~HomographyInit() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\n/// Tracks features using KLT and then uses the IMU rotation prior to estimate\n/// the relative pose using a 2Pt RANSAC\nclass TwoPointInit : public AbstractInitialization\n{\npublic:\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~TwoPointInit() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\n/// Tracks features using KLT and then estimate the relative pose using 5pt RANSAC\nclass FivePointInit : public AbstractInitialization\n{\npublic:\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~FivePointInit() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\n/// Assumes horizontal ground and given depth. Initializes all features in the\n/// plane. Used for autonomous take-off.\nclass OneShotInit : public AbstractInitialization\n{\npublic:\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~OneShotInit() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\nclass StereoInit : public AbstractInitialization\n{\npublic:\n\n  StereoInit(\n      const InitializationOptions& init_options,\n      const FeatureTrackerOptions& tracker_options,\n      const DetectorOptions& detector_options,\n      const CameraBundlePtr& cams);\n\n  virtual ~StereoInit() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n\n  std::unique_ptr<StereoTriangulation> stereo_;\n  std::shared_ptr<AbstractDetector> detector_;\n};\n\nclass ArrayInitGeometric : public AbstractInitialization\n{\npublic:\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~ArrayInitGeometric() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\nclass ArrayInitOptimization : public AbstractInitialization\n{\npublic:\n  using AbstractInitialization::AbstractInitialization;\n  virtual ~ArrayInitOptimization() = default;\n\n  virtual InitResult addFrameBundle(\n      const FrameBundlePtr& frames_cur) override;\n};\n\n\nnamespace initialization_utils {\n\nbool triangulateAndInitializePoints(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref,\n    const Transformation& T_cur_ref,\n    const double reprojection_threshold,\n    const double depth_at_current_frame,\n    const size_t min_inliers_threshold,\n    AbstractInitialization::FeatureMatches& matches_cur_ref);\n\nvoid triangulatePoints(\n    const Frame& frame_cur,\n    const Frame& frame_ref,\n    const Transformation& T_cur_ref,\n    const double reprojection_threshold,\n    AbstractInitialization::FeatureMatches& matches_cur_ref,\n    Positions& points_in_cur);\n\nvoid rescaleAndInitializePoints(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref,\n    const AbstractInitialization::FeatureMatches& matches_cur_ref,\n    const Positions& points_in_cur,\n    const Transformation& T_cur_ref,\n    const double depth_at_current_frame);\n\nvoid displayFeatureTracks(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref);\n\nAbstractInitialization::UniquePtr makeInitializer(\n    const InitializationOptions& init_options,\n    const FeatureTrackerOptions& tracker_options,\n    const DetectorOptions& detector_options,\n    const std::shared_ptr<CameraBundle>& camera_array);\n\nvoid copyBearingVectors(\n    const Frame& frame_cur,\n    const Frame& frame_ref,\n    const AbstractInitialization::FeatureMatches& matches_cur_ref,\n    AbstractInitialization::BearingVectors* f_cur,\n    AbstractInitialization::BearingVectors* f_ref);\n\ninline double angleError(const Eigen::Vector3d& f1, const Eigen::Vector3d& f2)\n{\n  return std::acos(f1.dot(f2) / (f1.norm()*f2.norm()));\n}\n\n} // namespace initialization_utils\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/io.h",
    "content": "#pragma once\n\n#include <string>\n#include <svo/map.h>\n\nnamespace svo {\nnamespace io {\n\nbool saveMap(\n    const Map::Ptr& map,\n    const std::string& save_dir,\n    const std::string& map_name);\n\nbool loadMap(\n    const std::string& save_dir,\n    Map::Ptr& map);\n\n} // namespace io\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/map.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <unordered_map>\n#include <mutex>\n#include <svo/global.h>\n\nnamespace svo {\n\n/// Map object which saves all keyframes which are in a map.\nclass Map\n{\npublic:\n  typedef std::shared_ptr<Map> Ptr;\n  typedef std::unordered_map<int, FramePtr> Keyframes; // Frame-Id & Pointer\n\n  Keyframes keyframes_;                   //!< List of keyframes in the map.\n  std::vector<PointPtr> points_to_delete_;\n  std::mutex points_to_delete_mutex_;\n  int last_added_kf_id_;\n\n  Map();\n  ~Map();\n\n  Map(const Map&) = delete;             // no copy\n  Map& operator=(const Map&) = delete;  // no copy\n\n  /// Reset the map. Delete all keyframes and reset the frame and point counters.\n  void reset();\n\n  /// Add a new keyframe to the map.\n  void addKeyframe(const FramePtr& new_keyframe);\n\n  /// Moves the frame to the trash queue which is cleaned now and then.\n  void removeKeyframe(const int frame_id);\n\n  /// Safely remove a point from a map\n  void safeDeletePoint(const PointPtr& pt);\n\n  /// Moves the point to the trash bin, cleared after all reprojectors have done their job\n  void addPointToTrash(const PointPtr& pt);\n\n  /// Effectively delete points in the trash bin\n  void emptyPointsTrash();\n\n  /// Given a frame, return all keyframes which have an overlapping field of view.\n  void getOverlapKeyframes(\n      const FramePtr& frame,\n      std::vector<std::pair<FramePtr,double>>* close_kfs) const;\n\n  /// Given a frame, return N closest keyframes with overlapping FoV.\n  void getClosestNKeyframesWithOberlap(\n      const FramePtr& cur_frame,\n      const size_t num_frames,\n      std::vector<FramePtr>* visible_kfs) const;\n\n  /// Return the keyframe which is spatially closest and has overlapping field of view.\n  FramePtr getClosestKeyframe(const FramePtr& frame) const;\n\n  /// Return the keyframe which is furthest apart from pos.\n  FramePtr getFurthestKeyframe(const Vector3d& pos) const;\n\n  /// Get Keyframe by Frame-Id. Used for relocalizer.\n  FramePtr getKeyframeById(const int id) const;\n\n  /// We use a hashtable to store the keyframes. This function provides a sorted\n  /// list of keyframes.\n  void getSortedKeyframes(std::vector<FramePtr>& kfs_sorted) const;\n\n  /// Transform the whole map with rotation R, translation t and scale s.\n  void transform(const Matrix3d& R, const Vector3d& t, const double& s);\n\n  /// Return the number of keyframes in the map\n  inline size_t size() const { return keyframes_.size(); }\n\n  /// Returns the last added keyframe (or a nullptr if none has been added)\n  inline FramePtr getLastKeyframe() { return this->getKeyframeById(last_added_kf_id_); }\n\n  void checkDataConsistency() const;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/pose_optimizer.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <fstream>\n#include <iostream>\n#include <svo/common/frame.h>\n#include <svo/global.h>\n#include <vikit/solver/mini_least_squares_solver.h>\n#include <vikit/solver/robust_cost.h>\n\nnamespace svo {\n\nclass PoseOptimizer : public vk::solver::MiniLeastSquaresSolver<6, Transformation, PoseOptimizer>\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  using ScaleEstimator = vk::solver::MADScaleEstimator;\n  using RobustWeightFunction = vk::solver::TukeyWeightFunction;\n  using SolverOptions = vk::solver::MiniLeastSquaresSolverOptions;\n  typedef std::shared_ptr<PoseOptimizer> Ptr;\n  typedef Matrix<double,6,6> Matrix6d;\n  typedef Matrix<double,2,6> Matrix26d;\n  typedef Matrix<double,3,6> Matrix36d;\n  typedef Matrix<double,1,6> Matrix16d;\n  typedef Matrix<double,6,1> Vector6d;\n  enum class ErrorType {kUnitPlane, kBearingVectorDiff, kImagePlane} ;\n\n  struct Statistics {\n    double reproj_error_after;\n    double reproj_error_before;\n    Statistics()\n      : reproj_error_after(0.0)\n      , reproj_error_before(0.0)\n    {}\n  } stats_;\n\n  PoseOptimizer(SolverOptions solver_options);\n  virtual ~PoseOptimizer() = default;\n\n  static SolverOptions getDefaultSolverOptions();\n\n  /// Optimize frame pose (frame->T_f_w_) by minimizing the reprojection\n  /// error w.r.t. to its features.\n  size_t run(const FrameBundle::Ptr& frame, double reproj_thresh);\n\n  void setRotationPrior(const Quaternion& R_frame_world, double lambda);\n\n  inline size_t iterCount() const {\n    return iter_;\n  }\n\n  inline void setErrorType(ErrorType type) {\n    err_type_ = type;\n  }\n\n  inline void initTracing(const std::string& trace_dir) {\n    ofs_reproj_errors_.open((trace_dir+\"/reproj_errors.txt\").c_str());\n  }\n\n//protected:\n  FrameBundle::Ptr frame_bundle_;\n  double prior_lambda_;\n  ScaleEstimator scale_estimator_;\n  RobustWeightFunction robust_weight_;\n  double measurement_sigma_ = 1.0;\n  ErrorType err_type_ = ErrorType::kUnitPlane;\n  double focal_length_ = 1.0; /// focal length TODO: should be different for every camera\n  std::ofstream ofs_reproj_errors_;\n\n  double evaluateError(\n      const Transformation& T_imu_world,\n      HessianMatrix* H,\n      GradientVector* g);\n\n  double evaluateErrorImpl(\n      const Transformation& T_imu_world,\n      HessianMatrix* H,\n      GradientVector* g,\n      std::vector<float>* unwhitened_errors);\n\n  void removeOutliers(\n      const double reproj_err_threshold,\n      Frame* frame,\n      std::vector<double>* reproj_errors,\n      size_t* n_deleted_edges,\n      size_t* n_deleted_corners);\n\n  void update(\n      const State& T_frameold_from_world,\n      const UpdateVector& dx,\n      State& T_framenew_from_world);\n\n  virtual void applyPrior(const State& current_model);\n};\n\nnamespace pose_optimizer_utils {\n\nvoid calculateFeatureResidualUnitPlane(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction &robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\nvoid calculateFeatureResidualImagePlane(\n    const Eigen::Ref<const Keypoint>& px,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction &robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\nvoid calculateFeatureResidualBearingVectorDiff(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction &robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\nvoid calculateEdgeletResidualUnitPlane(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\nvoid calculateEdgeletResidualImagePlane(\n    const Eigen::Ref<const Keypoint>& px,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\nvoid calculateEdgeletResidualBearingVectorDiff(\n    const Eigen::Ref<const Keypoint>& px,\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g);\n\n\n} // namespace pose_optimizer_utils\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/reprojector.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/feature_wrapper.h>\n\nnamespace vk {\nclass AbstractCamera;\n}\n\nnamespace svo {\n\nclass Matcher;\nclass OccupandyGrid2D;\n\n/// Reprojector config parameters\n/// Parameters marked with (!) are more important than the others.\nstruct ReprojectorOptions\n{\n  /// (!) Maximum numbers of features to match. The image is divided in a grid\n  /// and we try to find at maximum one feature per cell to assure that the\n  /// features are well distributed in the image. (-1) means unlimited.\n  size_t max_n_features_per_frame = 120;\n\n  /// (!) Cell width of a grid-cell. Controls the distribution of features.\n  size_t cell_size = 30;\n\n  /// We try to find the max_n_kfs closest keyframes that have overlapping\n  /// field of view.\n  size_t max_n_kfs = 5;\n\n  /// If we don't find enough 3d points or converged seeds, also try to match\n  /// unconverged seeds.\n  bool reproject_unconverged_seeds = true;\n\n  /// Remove points that have less than two observations\n  /// Disable this flag when initializing 3D points from the ground truth\n  bool remove_unconstrained_points = true;\n\n  /// use affine transformation to compensate for brightness change\n  bool affine_est_offset = true;\n  bool affine_est_gain = false;\n};\n\n/// Project points from the map into the image and find the corresponding\n/// feature (corner). We don't search a match for every point but only for one\n/// point per cell. Thereby, we achieve a homogeneously distributed set of\n/// matched features and at the same time we can save processing time by not\n/// projecting all points.\nclass Reprojector\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<Reprojector> Ptr;\n\n  Reprojector(const ReprojectorOptions& options,\n              size_t camera_index);\n\n  ~Reprojector() = default;\n\n  ReprojectorOptions options_;\n\n  struct Statistics\n  {\n    size_t n_matches = 0;\n    size_t n_trials = 0;\n  } stats_;\n\n  /// A candidate is a point that projects into the image plane and for which we\n  /// will search a maching feature in the image.\n  struct Candidate\n  {\n    EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n    FramePtr ref_frame;   //!< Reference frame.\n    size_t ref_index;     //!< Feature index in reference frame.\n    Keypoint cur_px;      //!< Projected 2D pixel location in current frame.\n    int n_reproj = 0;     //!< Number of previously successful projections for quality.\n    Score score;          //!< Feature Detection Score\n    FeatureType type;     //!< Type of feature to determine quality.\n\n    Candidate() = default;\n\n    Candidate(const FramePtr _ref_frame, const size_t _ref_index,\n              const Keypoint& _cur_px, const size_t _n_reproj,\n              const Score _score, const FeatureType& _type)\n      : ref_frame(_ref_frame)\n      , ref_index(_ref_index)\n      , cur_px(_cur_px)\n      , n_reproj(_n_reproj)\n      , score(_score)\n      , type(_type)\n    { ; }\n  };\n  using Candidates = std::vector<Candidate>;\n\n  std::unique_ptr<OccupandyGrid2D> grid_;\n  Candidates candidates_;\n  size_t camera_index_; // When using multiple cameras, each camera has a reprojector.\n\n  /// Project points seed in close_kfs into frame.\n  void reprojectFrames(\n      const FramePtr &frame,\n      const std::vector<FramePtr>& close_kfs,\n      std::vector<PointPtr>& trash_points);\n};\n\nnamespace reprojector_utils {\n\n  void sortCandidates(\n    Reprojector::Candidates& candidates);\n\n  void matchCandidates(const FramePtr& frame,\n      const size_t max_n_features_per_frame,\n      const bool affine_est_offset,\n      const bool affine_est_gain,\n      Reprojector::Candidates& candidates,\n      OccupandyGrid2D& grid,\n      Reprojector::Statistics& stats);\n\n  bool matchCandidate(\n      const FramePtr& frame,\n      Reprojector::Candidate& c,\n      Matcher& matcher,\n      FeatureWrapper& feature);\n\n  bool getCandidate(\n      const FramePtr& cur_frame,\n      const FramePtr& ref_frame,\n      const size_t& ref_index,\n      Reprojector::Candidate& candidate);\n\n  bool projectPointAndCheckVisibility(\n      const FramePtr& frame,\n      const Eigen::Vector3d& xyz,\n      Eigen::Vector2d* px);\n\n  void setGridCellsOccupied(\n      const Reprojector::Candidates& candidates,\n      OccupandyGrid2D& grid);\n\n} // namespace reprojector_utils\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/stereo_triangulation.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#pragma once\n\n#include <svo/global.h>\n\nnamespace svo {\n\nstruct StereoTriangulationOptions\n{\n  size_t triangulate_n_features = 120;\n  double mean_depth_inv = 1.0/3.0;\n  double min_depth_inv = 1.0/1.0;\n  double max_depth_inv = 1.0/50.0;\n};\n\nclass StereoTriangulation\n{\npublic:\n  typedef std::shared_ptr<StereoTriangulation> Ptr;\n\n  StereoTriangulationOptions options_;\n  DetectorPtr feature_detector_;\n\n  StereoTriangulation(\n      const StereoTriangulationOptions& options,\n      const DetectorPtr& feature_detector);\n  ~StereoTriangulation() = default;\n\n  void compute(const FramePtr& frame0, const FramePtr& frame1);\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo/include/svo/svo.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/depth_filter.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/tracker/feature_tracker.h>\n#include <svo/common/frame.h>\n#include <svo/frame_handler_mono.h>\n#include <svo/frame_handler_stereo.h>\n#include <svo/frame_handler_array.h>\n#include <svo/global.h>\n#include <svo/imu_handler.h>\n#include <svo/initialization.h>\n#include <svo/map.h>\n#include <svo/reprojector.h>\n#include <svo/stereo_triangulation.h>\n"
  },
  {
    "path": "svo/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo</name>\n  <version>0.1.0</version>\n  <description>\n    Monocular Visual Odometry\n  </description>\n  <author>Christian Forster</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n  <license>GPLv3</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n\n  <depend>cmake_modules</depend> <!-- for FindEigen.cmake -->\n  <depend>cuda_catkin</depend>\n  <depend>svo_cmake</depend>\n  <depend>svo_common</depend>\n  <depend>svo_direct</depend>\n  <depend>svo_tracker</depend>\n  <depend>svo_img_align</depend>\n  <depend>roscpp</depend>\n  <depend>roslib</depend>\n  <depend>rpg_common</depend>\n  <depend>vikit_common</depend>\n  <depend>vikit_cameras</depend>\n  <depend>vikit_solver</depend>\n  <depend>vikit_ros</depend>\n  <depend>eigen_catkin</depend>\n  <depend>minkindr</depend>\n  <depend>fast</depend>\n  <depend>opengv</depend>\n  <depend>cv_bridge</depend>\n  <depend>glog_catkin</depend>\n  \n</package>\n"
  },
  {
    "path": "svo/src/config.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#ifdef SVO_USE_ROS\n# include <vikit/params_helper.h>\n# include <ros/package.h>\n#endif\n#include <svo/config.h>\n#include <vikit/timer.h>\n\nnamespace svo {\n\nConfig::Config() :\n#ifdef SVO_USE_ROS\n  trace_name(vk::getParam<string>(\"svo/trace_name\", \"svo_\"+vk::Timer::getCurrentTimeStr())),\n  trace_dir(vk::getParam<string>(\"svo/trace_dir\", ros::package::getPath(\"svo\")+\"/trace\")),\n  n_pyr_levels(vk::getParam<int>(\"svo/n_pyr_levels\", 3)),\n  use_imu(vk::getParam<bool>(\"svo/use_imu\", false)),\n  core_n_kfs(vk::getParam<int>(\"svo/core_n_kfs\", 3)),\n  map_scale(vk::getParam<double>(\"svo/map_scale\", 1.0)),\n  grid_size(vk::getParam<int>(\"svo/grid_size\", 30)),\n  init_min_disparity(vk::getParam<double>(\"svo/init_min_disparity\", 50.0)),\n  init_min_tracked(vk::getParam<int>(\"svo/init_min_tracked\", 50)),\n  init_min_inliers(vk::getParam<int>(\"svo/init_min_inliers\", 40)),\n  init_min_features(vk::getParam<int>(\"svo/init_min_features\", 100)),\n  init_min_depth_error(vk::getParam<double>(\"svo/init_min_depth_error\", 1.)),\n  init_use_att_and_depth(vk::getParam<bool>(\"svo/init_use_att_and_depth\", false)),\n  klt_max_level(vk::getParam<int>(\"svo/klt_max_level\", 4)),\n  klt_min_level(vk::getParam<int>(\"svo/klt_min_level\", 2)),\n  klt_max_iter(vk::getParam<int>(\"svo/klt_max_iter\", 30)),\n  reproj_thresh(vk::getParam<double>(\"svo/reproj_thresh\", 2.0)),\n  poseoptim_thresh(vk::getParam<double>(\"svo/poseoptim_thresh\", 2.0)),\n  poseoptim_num_iter(vk::getParam<int>(\"svo/poseoptim_num_iter\", 10)),\n  structureoptim_max_pts(vk::getParam<int>(\"svo/structureoptim_max_pts\", 20)),\n  structureoptim_num_iter(vk::getParam<int>(\"svo/structureoptim_num_iter\", 5)),\n  loba_thresh(vk::getParam<double>(\"svo/loba_thresh\", 2.0)),\n  loba_robust_huber_width(vk::getParam<double>(\"svo/loba_robust_huber_width\", 1.0)),\n  loba_num_iter(vk::getParam<int>(\"svo/loba_num_iter\", 0)),\n  kfselect_min_dist(vk::getParam<double>(\"svo/kfselect_min_dist\", 0.12)),\n  kfselect_min_fts(vk::getParam<int>(\"svo/kfselect_min_fts\", 80)),\n  kfselect_min_frames(vk::getParam<int>(\"svo/kfselect_min_frames\", 10)),\n  triang_min_corner_score(vk::getParam<double>(\"svo/triang_min_corner_score\", 20.0)),\n  triang_half_patch_size(vk::getParam<int>(\"svo/triang_half_patch_size\", 4)),\n  subpix_n_iter(vk::getParam<int>(\"svo/subpix_n_iter\", 10)),\n  max_n_kfs(vk::getParam<int>(\"svo/max_n_kfs\", 10)),\n  img_imu_delay(vk::getParam<double>(\"svo/img_imu_delay\", 0.0)),\n  limit_n_fts(vk::getParam<bool>(\"svo/limit_n_fts\", true)),\n  max_fts(vk::getParam<int>(\"svo/max_fts\", 120)),\n  quality_min_fts(vk::getParam<int>(\"svo/quality_min_fts\", 50)),\n  quality_max_drop_fts(vk::getParam<int>(\"svo/quality_max_drop_fts\", 40)),\n  use_edgelets(vk::getParam<bool>(\"svo/use_edgelets\", false)),\n  relocalization_max_trials(vk::getParam<int>(\"svo/relocalization_max_trials\", 100)),\n  img_align_halfpatch_size(vk::getParam<int>(\"svo/img_align_halfpatch_size\", 2)),\n  img_align_prior_lambda(vk::getParam<double>(\"svo/img_align_prior_lambda\", 2.0)),\n  poseoptim_prior_lambda(vk::getParam<double>(\"svo/poseoptim_prior_lambda\", 2.0)),\n  features_min_level(vk::getParam<int>(\"svo/features_min_level\", 0))\n#else\n  trace_name(\"svo_\"+vk::Timer::getCurrentTimeStr()),\n  trace_dir(\"/tmp\"),\n  n_pyr_levels(4),\n  use_imu(false),\n  core_n_kfs(3),\n  map_scale(1.0),\n  grid_size(40),\n  init_min_disparity(50.0),\n  init_min_tracked(50),\n  init_min_inliers(40),\n  init_min_features(100),\n\n  init_min_depth_error(0.02), // in [m] 2cm +-\n  init_baseline_thresholding(false),\n  init_expected_depth(1.0), // in [m]\n\n  init_use_att_and_depth(false),\n  klt_max_level(5),\n  klt_min_level(3),\n  klt_max_iter(30),\n  reproj_thresh(2.0),\n  poseoptim_thresh(2.0),\n  poseoptim_num_iter(10),\n  structureoptim_max_pts(20),\n  structureoptim_num_iter(5),\n  loba_thresh(2.0),\n  loba_robust_huber_width(1.0),\n  loba_num_iter(20),\n  kfselect_min_dist(0.3/*12*/),\n  kfselect_min_fts(80),\n  kfselect_min_frames(10),\n  triang_min_corner_score(20.0),\n  triang_half_patch_size(4),\n  subpix_n_iter(10),\n  max_n_kfs(0),\n  img_imu_delay(0.0),\n  limit_n_fts(true),\n  max_fts(300),\n  quality_min_fts(70),\n  quality_max_drop_fts(100),\n  use_edgelets(true),\n  relocalization_max_trials(100),\n  img_align_halfpatch_size(4), // patch size for sparse image align\n  img_align_prior_lambda(2.0),\n  poseoptim_prior_lambda(2.0),\n  features_min_level(1),\n  max_fts_in_img_align_(0)\n#endif\n{}\n\nConfig& Config::getInstance()\n{\n  static Config instance; // Instantiated on first use and guaranteed to be destroyed\n  return instance;\n}\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo/src/frame_handler_array.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/frame_handler_array.h>\n#include <svo/map.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/pose_optimizer.h>\n#include <svo/img_align/sparse_img_align.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/stereo_triangulation.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/reprojector.h>\n#include <svo/initialization.h>\n#include <vikit/performance_monitor.h>\n\nnamespace svo {\n\nFrameHandlerArray::FrameHandlerArray(\n    const BaseOptions& base_options,\n      const DepthFilterOptions& depth_filter_options,\n      const DetectorOptions& feature_detector_options,\n      const InitializationOptions& init_options,\n      const ReprojectorOptions& reprojector_options,\n      const FeatureTrackerOptions& tracker_options,\n      const CameraBundle::Ptr& cameras)\n  : FrameHandlerBase(\n      base_options, reprojector_options, depth_filter_options,\n      feature_detector_options, init_options, tracker_options, cameras)\n{ ; }\n\nUpdateResult FrameHandlerArray::processFrameBundle()\n{\n  UpdateResult res = UpdateResult::kFailure;\n  if(stage_ == Stage::kTracking)\n    res = processFrame();\n  else if(stage_ == Stage::kInitializing)\n    res = processSecondFrame();\n  else if(stage_ == Stage::kInitializing)\n    res = processFirstFrame();\n\n  return res;\n}\n\nvoid FrameHandlerArray::addImages(\n    const std::vector<cv::Mat>& images,\n    const uint64_t timestamp)\n{\n  // TODO: deprecated\n  addImageBundle(images, timestamp);\n}\n\nUpdateResult FrameHandlerArray::processFirstFrame()\n{\n  // Add first frame to initializer. It may return a failure if not enough features\n  // can be detected, i.e., we are in a texture-less area.\n  initializer_->setDepthPrior(options_.init_map_scale);\n  if(initializer_->addFrameBundle(new_frames_) == InitResult::kFailure)\n    return UpdateResult::kDefault;\n\n  stage_ = Stage::kTracking;\n  SVO_INFO_STREAM(\"Init: Selected first frame.\");\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerArray::processSecondFrame()\n{\n  vk::Timer t;\n\n  initializer_->setDepthPrior(options_.init_map_scale);\n  auto res = initializer_->addFrameBundle(new_frames_);\n  SVO_INFO_STREAM(\"Init: Processing took \" << t.stop()*1000 << \"ms\");\n\n  if(res == InitResult::kFailure)\n    return UpdateResult::kFailure;\n  else if(res == InitResult::kNoKeyframe)\n    return UpdateResult::kDefault;\n\n  // make old frame keyframe\n  for(const FramePtr& frame : initializer_->frames_ref_->frames_)\n  {\n    frame->setKeyframe();\n    map_->addKeyframe(frame);\n  }\n\n  // make new frame keyframe\n  for(const FramePtr& frame : new_frames_->frames_)\n  {\n    frame->setKeyframe();\n    frame_utils::getSceneDepth(frame, depth_median_, depth_min_, depth_max_);\n    depth_filter_->addKeyframe(\n                frame, depth_median_, 0.5*depth_min_, depth_median_*1.5);\n    map_->addKeyframe(frame);\n  }\n\n  stage_ = Stage::kTracking;\n  initializer_->reset();\n  SVO_INFO_STREAM(\"Init: Selected second frame, triangulated initial map.\");\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerArray::processFrame()\n{\n  // ---------------------------------------------------------------------------\n  // tracking\n\n  // STEP 1: Sparse Image Align\n  size_t n_tracked_features = 0;\n  sparseImageAlignment();\n\n  // STEP 2: Map Reprojection & Feature Align\n  n_tracked_features = projectMapInFrame();\n  if(n_tracked_features < options_.quality_min_fts)\n    return UpdateResult::kFailure;\n\n  // STEP 3: Pose & Structure Optimization\n  n_tracked_features = optimizePose();\n  if(n_tracked_features < options_.quality_min_fts)\n    return UpdateResult::kFailure;\n  optimizeStructure(new_frames_, options_.structure_optimization_max_pts, 5);\n\n  // return if tracking bad\n  setTrackingQuality(n_tracked_features);\n  if(tracking_quality_ == TrackingQuality::kInsufficient)\n    return UpdateResult::kFailure;\n\n  // ---------------------------------------------------------------------------\n  // select keyframe\n  frame_utils::getSceneDepth(new_frames_->at(0), depth_median_, depth_min_, depth_max_);\n  //if(!need_new_kf_(new_frames_->at(0)->T_f_w_))\n  if(frame_counter_ % 4 != 0)\n  {\n    for(size_t i=0; i<new_frames_->size(); ++i)\n      depth_filter_->updateSeeds(overlap_kfs_.at(i), new_frames_->at(i));\n    return UpdateResult::kDefault;\n  }\n  SVO_DEBUG_STREAM(\"New keyframe selected.\");\n\n  for(size_t i = 0; i<new_frames_->size(); ++i)\n    makeKeyframe(i);\n\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerArray::makeKeyframe(const size_t camera_id)\n{\n  const FramePtr& frame = new_frames_->at(camera_id);\n\n  // ---------------------------------------------------------------------------\n  // new keyframe selected\n  frame->setKeyframe();\n  map_->addKeyframe(frame);\n  upgradeSeedsToFeatures(frame);\n\n  // init new depth-filters, set feature-detection grid-cells occupied that\n  // already have a feature\n  {\n    DepthFilter::ulock_t lock(depth_filter_->feature_detector_mut_);\n    setDetectorOccupiedCells(camera_id, depth_filter_->feature_detector_);\n  } // release lock\n  double depth_median = -1, depth_min, depth_max;\n  if(!frame_utils::getSceneDepth(frame, depth_median, depth_min, depth_max))\n  {\n    depth_min = 0.2; depth_median = 3.0; depth_max = 100;\n  }\n  SVO_DEBUG_STREAM(\"Average Depth \" << frame->cam()->getLabel() << \": \" << depth_median);\n  depth_filter_->addKeyframe(\n        new_frames_->at(camera_id), depth_median, 0.5*depth_min, depth_median*1.5);\n  depth_filter_->updateSeeds(overlap_kfs_.at(camera_id), frame);\n\n  // if limited number of keyframes, remove the one furthest apart\n  while(map_->size() > options_.max_n_kfs && options_.max_n_kfs > 2)\n  {\n    FramePtr furthest_frame = map_->getFurthestKeyframe(frame->pos());\n    map_->removeKeyframe(furthest_frame->id());\n  }\n  return UpdateResult::kKeyframe;\n}\n\nvoid FrameHandlerArray::resetAll()\n{\n  resetCommon();\n  depth_filter_->reset();\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/frame_handler_base.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <functional>\n#include <future>\n#include <memory>\n\n#include <svo/common/conversions.h>\n#include <svo/common/point.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo/direct/matcher.h>\n#include <svo/frame_handler_base.h>\n#include <svo/pose_optimizer.h>\n#include <svo/tracker/feature_tracker.h>\n\n#ifdef SVO_LOOP_CLOSING\n#include <svo/online_loopclosing/loop_closing.h>\n#endif\n\n#ifdef SVO_WITH_CUDA\n# include <svo/img_align/frame_gpu.h>\n# include <svo/img_align/sparse_img_align_gpu.h>\n#else\n# include <svo/img_align/sparse_img_align.h>\n#endif\n\n#include \"svo/abstract_bundle_adjustment.h\"\n#include \"svo/initialization.h\"\n#include \"svo/map.h\"\n#include \"svo/reprojector.h\"\n\nnamespace svo\n{\n\n// definition of global and static variables which were declared in the header\n#ifdef SVO_TRACE\nPerformanceMonitorPtr g_permon;\n#endif\n\nFrameHandlerBase::FrameHandlerBase(\n    const BaseOptions& base_options,\n    const ReprojectorOptions& reprojector_options,\n    const DepthFilterOptions& depthfilter_options,\n    const DetectorOptions& detector_options,\n    const InitializationOptions& init_options,\n    const FeatureTrackerOptions& tracker_options,\n    const CameraBundle::Ptr& cameras)\n  : options_(base_options)\n  , cams_(cameras)\n  , stage_(Stage::kPaused)\n  , set_reset_(false)\n  , set_start_(false)\n  , map_(new Map)\n  , acc_frame_timings_(10)\n  , acc_num_obs_(10)\n  , num_obs_last_(0)\n  , tracking_quality_(TrackingQuality::kInsufficient)\n  , relocalization_n_trials_(0)\n{\n  // sanity checks\n  CHECK_EQ(reprojector_options.cell_size, detector_options.cell_size);\n\n  need_new_kf_ = std::bind(&FrameHandlerBase::needNewKf, this, std::placeholders::_1);\n\n#ifdef SVO_TRACE\n  // Initialize Performance Monitor\n  g_permon.reset(new vk::PerformanceMonitor());\n  g_permon->addTimer(\"pyramid_creation\");\n  g_permon->addTimer(\"sparse_img_align\");\n  g_permon->addTimer(\"reproject\");\n  g_permon->addTimer(\"reproject_kfs\");\n  g_permon->addTimer(\"reproject_candidates\");\n  g_permon->addTimer(\"feature_align\");\n  g_permon->addTimer(\"pose_optimizer\");\n  g_permon->addTimer(\"point_optimizer\");\n  g_permon->addTimer(\"local_ba\");\n  g_permon->addTimer(\"tot_time\");\n  g_permon->addLog(\"timestamp\");\n  g_permon->addLog(\"img_align_n_tracked\");\n  g_permon->addLog(\"repr_n_mps\");\n  g_permon->addLog(\"repr_n_new_references\");\n  g_permon->addLog(\"sfba_thresh\");\n  g_permon->addLog(\"sfba_error_init\");\n  g_permon->addLog(\"sfba_error_final\");\n  g_permon->addLog(\"sfba_n_edges_final\");\n  g_permon->addLog(\"loba_n_erredges_init\");\n  g_permon->addLog(\"loba_n_erredges_fin\");\n  g_permon->addLog(\"loba_err_init\");\n  g_permon->addLog(\"loba_err_fin\");\n  g_permon->addLog(\"n_candidates\");\n  g_permon->addLog(\"dropout\");\n  g_permon->init(\"trace\", options_.trace_dir);\n#endif\n\n  // init modules\n  reprojectors_.reserve(cams_->getNumCameras());\n  for(size_t camera_idx = 0; camera_idx < cams_->getNumCameras(); ++camera_idx)\n  {\n    reprojectors_.emplace_back(new Reprojector(reprojector_options, camera_idx));\n  }\n  SparseImgAlignOptions img_align_options;\n  img_align_options.max_level = options_.img_align_max_level;\n  img_align_options.min_level = options_.img_align_min_level;\n  img_align_options.robustification = options_.img_align_robustification;\n  img_align_options.use_distortion_jacobian =\n      options_.img_align_use_distortion_jacobian;\n  img_align_options.estimate_illumination_gain = options_.img_align_est_illumination_gain;\n  img_align_options.estimate_illumination_offset = options_.img_align_est_illumination_offset;\n\n#ifdef SVO_WITH_CUDA\n  sparse_img_align_.reset(new SparseImgAlignGpu(\n                            SparseImgAlignGpu::getDefaultSolverOptions(),\n                            img_align_options));\n#else\n  sparse_img_align_.reset(new SparseImgAlign(\n                            SparseImgAlign::getDefaultSolverOptions(),\n                            img_align_options));\n#endif // SVO_WITH_CUDA\n  pose_optimizer_.reset(new PoseOptimizer(PoseOptimizer::getDefaultSolverOptions()));\n  if(options_.poseoptim_using_unit_sphere)\n    pose_optimizer_->setErrorType(PoseOptimizer::ErrorType::kBearingVectorDiff);\n\n  // DEBUG ***\n  //pose_optimizer_->initTracing(options_.trace_dir);\n  DetectorOptions detector_options2 = detector_options;\n  //detector_options2.detector_type = DetectorType::kGridGrad;\n\n  depth_filter_.reset(new DepthFilter(depthfilter_options, detector_options2, cams_));\n  initializer_ = initialization_utils::makeInitializer(\n        init_options, tracker_options, detector_options, cams_);\n  overlap_kfs_.resize(cams_->getNumCameras());\n\n  VLOG(1) << \"SVO initialized\";\n}\n\nFrameHandlerBase::~FrameHandlerBase()\n{\n  VLOG(1) << \"SVO destructor invoked\";\n}\n\n//------------------------------------------------------------------------------\nbool FrameHandlerBase::addImageBundle(\n      const std::vector<cv::Mat>& imgs,\n      const uint64_t timestamp)\n{\n  SVO_START_TIMER(\"pyramid_creation\");\n  CHECK_EQ(imgs.size(), cams_->getNumCameras());\n  std::vector<FramePtr> frames;\n  for(size_t i=0; i<imgs.size(); ++i)\n  {\n#ifdef SVO_WITH_CUDA\n    frames.push_back(\n          std::make_shared<FrameGpu>(cams_->getCameraShared(i), imgs[i].clone(), timestamp,\n                                  options_.img_align_max_level+1));\n#else\n    frames.push_back(\n          std::make_shared<Frame>(cams_->getCameraShared(i), imgs[i].clone(),\n                                  timestamp, options_.img_align_max_level+1));\n#endif // SVO_WITH_CUDA\n    frames.back()->set_T_cam_imu(cams_->get_T_C_B(i));\n    frames.back()->setNFrameIndex(i);\n  }\n  FrameBundlePtr frame_bundle(new FrameBundle(frames));\n  SVO_STOP_TIMER(\"pyramid_creation\");\n\n  // Process frame bundle.\n  return addFrameBundle(frame_bundle);\n}\n\n//------------------------------------------------------------------------------\nbool FrameHandlerBase::addFrameBundle(const FrameBundlePtr& frame_bundle)\n{\n  VLOG(40) << \"New Frame Bundle received: \" << frame_bundle->getBundleId();\n  CHECK_EQ(frame_bundle->size(), cams_->numCameras());\n\n  // ---------------------------------------------------------------------------\n  // Prepare processing.\n\n  if(set_start_)\n  {\n    // Temporary copy rotation prior. TODO(cfo): fix this.\n    Quaternion R_imu_world = R_imu_world_;\n    bool have_rotation_prior = have_rotation_prior_;\n    resetAll();\n    R_imu_world_ = R_imu_world;\n    have_rotation_prior_ = have_rotation_prior;\n    setInitialPose(frame_bundle);\n    stage_ = Stage::kInitializing;\n  }\n\n  if(stage_ == Stage::kPaused)\n    return false;\n\n  SVO_LOG(\"timestamp\", frame_bundle->at(0)->getTimestampNSec());\n  SVO_START_TIMER(\"tot_time\");\n  timer_.start();\n\n  // ---------------------------------------------------------------------------\n  // Add to pipeline.\n\n  new_frames_ = frame_bundle;\n  ++frame_counter_;\n\n  // if we have bundle adjustment running in parallel thread, check if it has\n  // computed a new map. in this case, we replace our map with the latest estimate\n  if(bundle_adjustment_)\n  {\n    VLOG(40) << \"Load frame from bundle adjustment.\";\n    bundle_adjustment_->loadMapFromBundleAdjustment(\n          new_frames_, last_frames_, map_);\n  }\n\n  // Predict pose of new frame using motion prior.\n  // TODO(cfo): remove same from processFrame in mono.\n  if(last_frames_)\n  {\n    VLOG(40) << \"Predict pose of new image using motion prior.\";\n    getMotionPrior(false);\n\n    // set initial pose estimate\n    for(size_t i = 0; i < new_frames_->size(); ++i)\n    {\n      new_frames_->at(i)->T_f_w_ =\n          new_frames_->at(i)->T_cam_imu() * T_newimu_lastimu_prior_\n          * last_frames_->at(i)->T_imu_world();\n    }\n  }\n\n  // Perform tracking.\n  UpdateResult res = processFrameBundle();\n\n  if(res == UpdateResult::kKeyframe)\n  {\n    // Set flag in bundle. Before we only set each frame individually.\n    new_frames_->setKeyframe();\n  }\n\n  if(bundle_adjustment_)\n  {\n    VLOG(40) << \"Call bundle adjustment.\";\n    bundle_adjustment_->bundleAdjustment(new_frames_);\n  }\n\n  // ---------------------------------------------------------------------------\n  // Finish pipeline.\n\n  if(last_frames_)\n  {\n    // Set translation motion prior for next frame.\n    t_lastimu_newimu_ =\n        new_frames_->at(0)->T_imu_world().getRotation().rotate(\n          new_frames_->at(0)->imuPos() - last_frames_->at(0)->imuPos());\n  }\n\n  // Statistics.\n  acc_frame_timings_.push_back(timer_.stop());\n  num_obs_last_ = new_frames_->numTrackedFeatures();\n  if(stage_ == Stage::kTracking)\n  {\n    acc_num_obs_.push_back(num_obs_last_);\n  }\n\n  // Try relocalizing if tracking failed.\n  if(res == UpdateResult::kFailure)\n  {\n    VLOG(2) << \"Tracking failed: RELOCALIZE.\";\n    CHECK(stage_ == Stage::kTracking\n          || stage_ == Stage::kInitializing\n          || stage_ == Stage::kRelocalization);\n\n    // Let's try to relocalize with respect to the last keyframe:\n    reloc_keyframe_ = map_->getLastKeyframe();\n    CHECK_NOTNULL(reloc_keyframe_.get());\n\n    // Reset pose to previous frame to avoid crazy jumps.\n    if(stage_ == Stage::kTracking && last_frames_)\n    {\n      for(size_t i = 0; i < last_frames_->size(); ++i)\n        new_frames_->at(i)->T_f_w_ = last_frames_->at(i)->T_f_w_;\n    }\n\n    // Reset if we tried many times unsuccessfully to relocalize.\n    if(stage_ == Stage::kRelocalization\n       && relocalization_n_trials_ > options_.relocalization_max_trials)\n    {\n      VLOG(2) << \"Relocalization failed \" <<  options_.relocalization_max_trials\n              << \" times: RESET.\";\n      set_reset_ = true;\n    }\n\n    // Set stage.\n    stage_ = Stage::kRelocalization;\n    tracking_quality_ = TrackingQuality::kInsufficient;\n  }\n\n  // Set last frame.\n  last_frames_ = new_frames_;\n  new_frames_.reset();\n\n#ifdef SVO_LOOP_CLOSING\n  // get timestamp of the first svo frame (this is to be used in loop closure detection)\n  if(last_frames_->getBundleId() == 1 && lc_ != nullptr)\n  {\n    lc_->first_frame_timestamp_ = last_frames_->at(0)->getTimestampNSec();\n  }\n  // add frame to loop closure detection database and run loop closure detection if required\n  if(last_frames_->isKeyframe())\n  {\n    if(lc_ != nullptr)\n    {\n      lc_->addFrameToPR(last_frames_);\n      if(lc_->publish_ == true)\n      {\n    \tloop_closure_data.clear();\n    \tstd::lock_guard < std::mutex > lock(lc_->mu_);\n    \tloop_closure_data = lc_->loop_closure_info_;\n    \tlc_->publish_ = false;\n      }\n    }\n  }\n#endif\n\n\n  // Reset if we should.\n  if(set_reset_)\n  {\n    resetAll();\n  }\n\n  // Reset rotation prior.\n  have_rotation_prior_ = false;\n  R_imulast_world_ = R_imu_world_;\n\n  // Reset motion prior\n  have_motion_prior_ = false;\n  T_newimu_lastimu_prior_.setIdentity();\n\n  // tracing\n  SVO_LOG(\"dropout\", static_cast<int>(res));\n  SVO_STOP_TIMER(\"tot_time\");\n#ifdef SVO_TRACE\n  g_permon->writeToFile();\n#endif\n\n  // Call callbacks.\n  VLOG(40) << \"Triggering addFrameBundle() callbacks...\";\n  triggerCallbacks(last_frames_);\n\n  return true;\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::setRotationPrior(const Quaternion& R_imu_world)\n{\n  VLOG(40) << \"Set rotation prior.\";\n  R_imu_world_ = R_imu_world;\n  have_rotation_prior_ = true;\n}\n\nvoid FrameHandlerBase::setRotationIncrementPrior(const Quaternion& R_lastimu_newimu)\n{\n  VLOG(40) << \"Set rotation increment prior.\";\n  R_imu_world_ = R_lastimu_newimu.inverse() * R_imulast_world_;\n  have_rotation_prior_ = true;\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::setInitialPose(const FrameBundlePtr& frame_bundle) const\n{\n  if(have_rotation_prior_)\n  {\n    VLOG(40) << \"Set initial pose: With rotation prior\";\n    for(size_t i = 0; i < frame_bundle->size(); ++i)\n    {\n      frame_bundle->at(i)->T_f_w_ =\n          cams_->get_T_C_B(i) * Transformation(R_imu_world_, Vector3d::Zero());\n    }\n  }\n  else if(frame_bundle->imu_measurements_.cols() > 0)\n  {\n    VLOG(40) << \"Set initial pose: Use inertial measurements in frame to get gravity.\";\n    const Vector3d g = frame_bundle->imu_measurements_.topRows<3>().rowwise().sum();\n    const Vector3d z = g.normalized(); // imu measures positive-z when static\n    // TODO: make sure z != -1,0,0\n    Vector3d p(1,0,0);\n    Vector3d p_alternative(0,1,0);\n    if(std::fabs(z.dot(p)) > std::fabs(z.dot(p_alternative)))\n      p = p_alternative;\n    Vector3d y = z.cross(p); // make sure gravity is not in x direction\n    y.normalize();\n    const Vector3d x = y.cross(z);\n    Matrix3d C_imu_world; // world unit vectors in imu coordinates\n    C_imu_world.col(0) = x;\n    C_imu_world.col(1) = y;\n    C_imu_world.col(2) = z;\n    Transformation T_imu_world(Quaternion(C_imu_world), Eigen::Vector3d::Zero());\n    frame_bundle->set_T_W_B(T_imu_world.inverse());\n    VLOG(3) << \"Initial Rotation = \" << std::endl << C_imu_world.transpose() << std::endl;\n  }\n  else\n  {\n    VLOG(40) << \"Set initial pose: set such that T_imu_world is identity.\";\n    for(size_t i = 0; i < frame_bundle->size(); ++i)\n    {\n      frame_bundle->at(i)->T_f_w_ = cams_->get_T_C_B(i) * T_world_imuinit.inverse();\n    }\n  }\n}\n\n//------------------------------------------------------------------------------\nsize_t FrameHandlerBase::sparseImageAlignment()\n{\n  // optimize the pose of the new frame such that it matches the pose of the previous frame best\n  // this will improve the relative transformation between the previous and the new frame\n  // the result is the number of feature points which could be tracked\n  // this is a hierarchical KLT solver\n  VLOG(40) << \"Sparse image alignment.\";\n  SVO_START_TIMER(\"sparse_img_align\");\n  sparse_img_align_->reset();\n  if(have_motion_prior_)\n  {\n    SVO_DEBUG_STREAM(\"Apply IMU Prior to Image align\");\n    double prior_trans = options_.img_align_prior_lambda_trans;\n    if(map_->size() < 5)\n      prior_trans = 0; // during the first few frames we don't want a prior (TODO)\n\n    sparse_img_align_->setWeightedPrior(\n          T_newimu_lastimu_prior_,\n          0.0, 0.0,\n          options_.img_align_prior_lambda_rot,\n          prior_trans,\n          0.0, 0.0);\n  }\n  sparse_img_align_->setMaxNumFeaturesToAlign(options_.img_align_max_num_features);\n  size_t img_align_n_tracked = sparse_img_align_->run(last_frames_, new_frames_);\n\n  SVO_STOP_TIMER(\"sparse_img_align\");\n  SVO_LOG(\"img_align_n_tracked\", img_align_n_tracked);\n  VLOG(40) << \"Sparse image alignment tracked \" << img_align_n_tracked << \" features.\";\n  return img_align_n_tracked;\n}\n\n//------------------------------------------------------------------------------\nsize_t FrameHandlerBase::projectMapInFrame()\n{\n  VLOG(40) << \"Project map in frame.\";\n  SVO_START_TIMER(\"reproject\");\n\n  // compute overlap keyframes\n  for(size_t camera_idx = 0; camera_idx < cams_->numCameras(); ++camera_idx)\n  {\n    overlap_kfs_.at(camera_idx).clear();\n    map_->getClosestNKeyframesWithOberlap(\n          new_frames_->at(camera_idx),\n          reprojectors_.at(camera_idx)->options_.max_n_kfs,\n          &overlap_kfs_.at(camera_idx));\n  }\n\n  std::vector<std::vector<PointPtr>> trash_points;\n  trash_points.resize(cams_->numCameras());\n  if(options_.use_async_reprojectors && cams_->numCameras() > 1)\n  {\n    // start reprojection workers\n    std::vector<std::future<void>> reprojector_workers;\n    for(size_t camera_idx = 0; camera_idx < cams_->numCameras(); ++camera_idx)\n    {\n      auto func = std::bind(\n            &Reprojector::reprojectFrames, reprojectors_.at(camera_idx).get(),\n            new_frames_->at(camera_idx), overlap_kfs_.at(camera_idx),\n            trash_points.at(camera_idx));\n      reprojector_workers.push_back(std::async(std::launch::async, func));\n    }\n\n    // make sure all of them are finished\n    for(size_t i=0; i < reprojector_workers.size(); ++i)\n      reprojector_workers[i].get();\n  }\n  else\n  {\n    for(size_t camera_idx = 0; camera_idx < cams_->numCameras(); ++camera_idx)\n    {\n      reprojectors_.at(camera_idx)->reprojectFrames(\n            new_frames_->at(camera_idx), overlap_kfs_.at(camera_idx),\n            trash_points.at(camera_idx));\n    }\n  }\n\n  // Effectively clear the points that were discarded by the reprojectors\n  for(auto point_vec : trash_points)\n    for(auto point : point_vec)\n      map_->safeDeletePoint(point);\n\n  // Count the total number of trials and matches for all reprojectors\n  Reprojector::Statistics cumul_stats_;\n  for(const ReprojectorPtr& reprojector : reprojectors_)\n  {\n    cumul_stats_.n_matches += reprojector->stats_.n_matches;\n    cumul_stats_.n_trials += reprojector->stats_.n_trials;\n  }\n\n  SVO_STOP_TIMER(\"reproject\");\n  SVO_LOG(\"repr_n_new_references\", cumul_stats_.n_matches);\n  SVO_LOG(\"repr_n_mps\", cumul_stats_.n_trials);\n  VLOG(40) << \"Reprojection:\"\n           << \"\\t nPoints = \" << cumul_stats_.n_trials\n           << \"\\t\\t nMatches = \" << cumul_stats_.n_matches;\n\n  if(cumul_stats_.n_matches < options_.quality_min_fts)\n    SVO_WARN_STREAM_THROTTLE(1.0, \"Not enough matched features.\");\n\n  return cumul_stats_.n_matches;\n}\n\n//------------------------------------------------------------------------------\nsize_t FrameHandlerBase::optimizePose()\n{\n  // pose optimization\n  // optimize the pose of the frame in such a way, that the projection of all feature world coordinates\n  // is not far off the position of the feature points within the frame. The optimization is done for all points\n  // in the same time, hence optimizing frame pose.\n  SVO_START_TIMER(\"pose_optimizer\");\n  pose_optimizer_->reset();\n  if(have_motion_prior_)\n  {\n    VLOG(40) << \"Apply prior to pose optimization\";\n    pose_optimizer_->setRotationPrior(\n          new_frames_->get_T_W_B().getRotation().inverse(),\n          options_.poseoptim_prior_lambda);\n  }\n  size_t sfba_n_edges_final = pose_optimizer_->run(new_frames_, options_.poseoptim_thresh);\n  SVO_LOG(\"sfba_error_init\", pose_optimizer_->stats_.reproj_error_before);\n  SVO_LOG(\"sfba_error_final\", pose_optimizer_->stats_.reproj_error_after);\n  SVO_LOG(\"sfba_n_edges_final\", sfba_n_edges_final);\n  SVO_STOP_TIMER(\"pose_optimizer\");\n  SVO_DEBUG_STREAM(\"PoseOptimizer:\"\n                   << \"\\t ErrInit = \" << pose_optimizer_->stats_.reproj_error_before\n                   << \"\\t ErrFin = \" << pose_optimizer_->stats_.reproj_error_after\n                   << \"\\t nObs = \" << sfba_n_edges_final);\n  return sfba_n_edges_final;\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::optimizeStructure(\n    const FrameBundle::Ptr& frames,\n    int max_n_pts,\n    int max_iter)\n{\n  VLOG(40) << \"Optimize structure.\";\n  // some feature points will be optimized w.r.t keyframes they were observed\n  // in the way that their projection error into all other keyframes is minimzed\n\n  if(max_n_pts == 0)\n    return; // don't return if max_n_pts == -1, this means we optimize ALL points\n\n  SVO_START_TIMER(\"point_optimizer\");\n  for(const FramePtr& frame : frames->frames_)\n  {\n    bool optimize_on_sphere = false;\n    if(frame->cam()->getType() == Camera::Type::kOmni)\n      optimize_on_sphere = true;\n    std::deque<PointPtr> pts;\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      if(frame->landmark_vec_[i] == nullptr || isEdgelet(frame->type_vec_[i]))\n        continue;\n      pts.push_back((frame->landmark_vec_[i]));\n    }\n    auto it_end = pts.end();\n    if(max_n_pts > 0)\n    {\n      max_n_pts = std::min(static_cast<size_t>(max_n_pts), pts.size());\n      std::nth_element(\n            pts.begin(), pts.begin() + max_n_pts, pts.end(),\n            [](const PointPtr& lhs, const PointPtr& rhs)\n            {\n              // we favour points that have not been optimized in a while\n              return (lhs->last_structure_optim_ < rhs->last_structure_optim_);\n            });\n      it_end = pts.begin()+max_n_pts;\n    }\n    for(const PointPtr& point : pts)\n    {\n      point->optimize(max_iter, optimize_on_sphere);\n      point->last_structure_optim_ = frame->id_;\n    }\n  }\n  SVO_STOP_TIMER(\"point_optimizer\");\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::upgradeSeedsToFeatures(const FramePtr& frame)\n{\n  VLOG(40) << \"Upgrade seeds to features\";\n  size_t update_count = 0;\n  for(size_t i = 0; i < frame->num_features_; ++i)\n  {\n    if(frame->landmark_vec_[i])\n    {\n      CHECK(frame->type_vec_[i] == FeatureType::kCorner ||\n            frame->type_vec_[i] == FeatureType::kEdgelet);\n      frame->landmark_vec_[i]->addObservation(frame, i);\n    }\n    else if(frame->seed_ref_vec_[i].keyframe)\n    {\n      SeedRef& ref = frame->seed_ref_vec_[i];\n\n      // In multi-camera case, it might be that we already created a 3d-point\n      // for this seed previously when processing another frame from the bundle.\n      PointPtr point = ref.keyframe->landmark_vec_[ref.seed_id];\n      if(point == nullptr)\n      {\n        // That's not the case. Therefore, create a new 3d point.\n        Position xyz_world = ref.keyframe->T_world_cam()\n            * ref.keyframe->getSeedPosInFrame(ref.seed_id);\n        point = std::make_shared<Point>(xyz_world);\n        ref.keyframe->landmark_vec_[ref.seed_id] = point;\n        ref.keyframe->track_id_vec_[ref.seed_id] = point->id();\n        point->addObservation(ref.keyframe, ref.seed_id);\n      }\n\n      // add reference to current frame.\n      frame->landmark_vec_[i] = point;\n      frame->track_id_vec_[i] = point->id();\n      point->addObservation(frame, i);\n      if(isCorner(ref.keyframe->type_vec_[ref.seed_id]))\n      {\n        ref.keyframe->type_vec_[ref.seed_id] = FeatureType::kCorner;\n        frame->type_vec_[i] = FeatureType::kCorner;\n      }\n      else if(isEdgelet(ref.keyframe->type_vec_[ref.seed_id]))\n      {\n        ref.keyframe->type_vec_[ref.seed_id] = FeatureType::kEdgelet;\n        frame->type_vec_[i] = FeatureType::kEdgelet;\n\n        // Update the edgelet direction.\n        double angle = feature_detection_utils::getAngleAtPixelUsingHistogram(frame->img_pyr_[frame->level_vec_[i]],\n            (frame->px_vec_.col(i)/(1 << frame->level_vec_[i])).cast<int>(), 4u);\n        frame->grad_vec_.col(i) = GradientVector(std::cos(angle), std::sin(angle));\n      }\n      else\n      {\n        CHECK(false) << \"Seed-Type not known\";\n      }\n      ++update_count;\n    }\n\n    // when using the feature-wrapper, we might copy some old references?\n    frame->seed_ref_vec_[i].keyframe.reset();\n    frame->seed_ref_vec_[i].seed_id = -1;\n  }\n  VLOG(40) << \"NEW KEYFRAME: Updated \" << update_count\n           << \" seeds to features in reference frame.\";\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::resetCommon()\n{\n  stage_ = Stage::kPaused;\n  tracking_quality_ = TrackingQuality::kInsufficient;\n  set_reset_ = false;\n  set_start_ = false;\n  num_obs_last_ = 0;\n  reloc_keyframe_.reset();\n  relocalization_n_trials_ = 0;\n  t_lastimu_newimu_ = Vector3d::Zero();\n  have_motion_prior_ = false;\n  T_newimu_lastimu_prior_.setIdentity();\n  have_rotation_prior_ = false;\n  for(auto& frame_vec : overlap_kfs_)\n  {\n    frame_vec.clear();\n  }\n\n  if(bundle_adjustment_)\n  {\n    bundle_adjustment_->reset();\n  }\n\n  new_frames_.reset();\n  last_frames_.reset();\n  map_->reset();\n\n  sparse_img_align_->reset();\n  depth_filter_->reset();\n  initializer_->reset();\n\n  VLOG(1) << \"SVO RESET ALL\";\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::setTrackingQuality(const size_t num_observations)\n{\n  tracking_quality_ = TrackingQuality::kGood;\n  if(num_observations < options_.quality_min_fts)\n  {\n    SVO_WARN_STREAM_THROTTLE(\n          0.5, \"Tracking less than \"<< options_.quality_min_fts <<\" features!\");\n    tracking_quality_ = TrackingQuality::kInsufficient;\n  }\n  const int feature_drop =\n      static_cast<int>(std::min(num_obs_last_, size_t(120))) - num_observations;\n  if(feature_drop > options_.quality_max_fts_drop)\n  {\n    SVO_WARN_STREAM(\"Lost \"<< feature_drop <<\" features!\");\n    tracking_quality_ = TrackingQuality::kInsufficient;\n  }\n}\n\n//------------------------------------------------------------------------------\nbool FrameHandlerBase::needNewKf(const Transformation&)\n{\n  const std::vector<FramePtr>& visible_kfs = overlap_kfs_.at(0);\n  if(options_.kfselect_criterion == KeyframeCriterion::DOWNLOOKING)\n  {\n    for(const auto& frame : visible_kfs)\n    {\n      // TODO: does not generalize to multiple cameras!\n      Vector3d relpos = new_frames_->at(0)->T_cam_world()*frame->pos();\n      if(fabs(relpos.x())/depth_median_ < options_.kfselect_min_dist &&\n         fabs(relpos.y())/depth_median_ < options_.kfselect_min_dist*0.8 &&\n         fabs(relpos.z())/depth_median_ < options_.kfselect_min_dist*1.3)\n        return false;\n    }\n    VLOG(40) << \"KF Select: NEW KEYFRAME\";\n    return true;\n  }\n\n  // else, FORWARD:\n  size_t n_tracked_fts = new_frames_->numLandmarks();\n  if(n_tracked_fts > options_.kfselect_numkfs_upper_thresh)\n  {\n    VLOG(40) << \"KF Select: NO NEW KEYFRAME Above upper bound\";\n    return false;\n  }\n\n  // TODO: this only works for mono!\n  if(last_frames_->at(0)->id() - map_->last_added_kf_id_ < options_.kfselect_min_num_frames_between_kfs)\n  {\n    VLOG(40) << \"KF Select: NO NEW KEYFRAME We just had a KF\";\n    return false;\n  }\n\n  if(n_tracked_fts < options_.kfselect_numkfs_lower_thresh)\n  {\n    VLOG(40) << \"KF Select: NEW KEYFRAME Below lower bound\";\n    return true;\n  }\n\n  // check that we have at least X disparity w.r.t to last keyframe\n  if(options_.kfselect_min_disparity > 0)\n  {\n    int kf_id = map_->getLastKeyframe()->id();\n    std::vector<double> disparities;\n    const FramePtr& frame = new_frames_->at(0);\n    disparities.reserve(frame->num_features_);\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      if(frame->landmark_vec_[i])\n      {\n        const Point::KeypointIdentifierList& observations = frame->landmark_vec_[i]->obs_;\n        for(auto it = observations.rbegin(); it != observations.rend(); ++it)\n        {\n          if(it->frame_id == kf_id)\n          {\n            if(FramePtr kf = it->frame.lock())\n              disparities.push_back(\n                    (frame->px_vec_.col(i) - kf->px_vec_.col(it->keypoint_index_)).norm());\n            break;\n          }\n        }\n      }\n      // TODO(cfo): loop also over seed references!\n    }\n\n    if(!disparities.empty())\n    {\n      double disparity = vk::getMedian(disparities);\n      VLOG(40) << \"KF Select: disparity = \" << disparity;\n      if(disparity < options_.kfselect_min_disparity)\n      {\n        VLOG(40) << \"KF Select: NO NEW KEYFRAME disparity not large enough\";\n        return false;\n      }\n    }\n  }\n\n  for(const auto& kf : visible_kfs)\n  {\n    // TODO: doesn't generalize to rig!\n    const double a =\n        Quaternion::log(new_frames_->at(0)->T_f_w_.getRotation()\n                        *kf->T_f_w_.getRotation().inverse()).norm()*180/M_PI;\n    const double d = (new_frames_->at(0)->pos() - kf->pos()).norm();\n    if(a < options_.kfselect_min_angle && d < options_.kfselect_min_dist_metric)\n    {\n      VLOG(40) << \"KF Select: NO NEW KEYFRAME Min angle = \" << a << \", min dist = \" << d;\n      return false;\n    }\n  }\n  VLOG(40) << \"KF Select: NEW KEYFRAME\";\n  return true;\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::getMotionPrior(const bool /*use_velocity_in_frame*/)\n{\n  if(have_rotation_prior_)\n  {\n    VLOG(40) << \"Get motion prior from provided rotation prior.\";\n    T_newimu_lastimu_prior_ = Transformation(\n          R_imulast_world_ * R_imu_world_.inverse(),t_lastimu_newimu_).inverse();\n    have_motion_prior_ = true;\n  }\n  else if(new_frames_->imu_timestamps_ns_.cols() > 0)\n  {\n    VLOG(40) << \"Get motion prior from integrated IMU measurements.\";\n    const Eigen::Matrix<int64_t, 1, Eigen::Dynamic>& imu_timestamps_ns =\n        new_frames_->imu_timestamps_ns_;\n    const Eigen::Matrix<double, 6, Eigen::Dynamic>& imu_measurements =\n        new_frames_->imu_measurements_;\n    Eigen::Vector3d gyro_bias = Eigen::Vector3d::Zero(); // TODO!\n    const size_t num_measurements = imu_timestamps_ns.cols();\n    Quaternion delta_R;\n    for (size_t m_idx = 0u; m_idx < num_measurements - 1u; ++m_idx)\n    {\n      const double delta_t_seconds =\n          (imu_timestamps_ns(m_idx + 1) - imu_timestamps_ns(m_idx)) *\n          common::conversions::kNanoSecondsToSeconds;\n      CHECK_LE(delta_t_seconds, 1e-12) <<\n          \"IMU timestamps need to be strictly increasing.\";\n\n      const Eigen::Vector3d w =\n          imu_measurements.col(m_idx).tail<3>() - gyro_bias;\n      const Quaternion R_incr = Quaternion::exp(w * delta_t_seconds);\n      delta_R = delta_R * R_incr;\n    }\n    T_newimu_lastimu_prior_ =\n        Transformation(delta_R, t_lastimu_newimu_).inverse();\n    have_motion_prior_ = true;\n  }\n  /*\n  else if(imu_handler_)\n  {\n    ImuMeasurements imu_measurements;\n    if(!imu_handler_->getMeasurements(\n         last_frames_->getTimestampSec(), new_frames_->getTimestampSec(), false, imu_measurements))\n      return false;\n\n    PreintegratedImuMeasurement preint(\n          //      last_frames_->omega_bias_, last_frames_->omega_bias_); TODO: check why this worked before\n          imuHandler()->getGyroscopeBias(), imuHandler()->getAccelerometerBias());\n    preint.addMeasurements(imu_measurements);\n\n    Vector3d t_last_new = t_lastimu_newimu_;\n    if(use_velocity_in_frame)\n    {\n      t_last_new =\n          preint.delta_t_ij_\n          + last_frames_->T_f_w_.getRotation().rotate(\n            last_frames_->velocity_*preint.dt_sum_\n            - Vector3d(0, 0, -imu_handler_->imu_calib_.gravity_magnitude)*0.5*preint.dt_sum_*preint.dt_sum_);\n    }\n\n    Quaternion R_lastimu_newimu;\n    imu_handler_->getRelativeRotationPrior(\n          last_frames_->getTimestampSec(), new_frames_->getTimestampSec(), false, R_lastimu_newimu);\n    T_newimu_lastimu_prior_ = Transformation(R_lastimu_newimu, t_last_new).inverse();\n    return true;\n  }\n  */\n  else if(options_.poseoptim_prior_lambda > 0 ||\n          options_.img_align_prior_lambda_rot > 0 ||\n          options_.img_align_prior_lambda_trans > 0)\n  {\n    VLOG(40) << \"Get motion prior by assuming constant velocity.\";\n    T_newimu_lastimu_prior_ =\n        Transformation(Quaternion(), t_lastimu_newimu_).inverse();\n    have_motion_prior_ = true;\n  }\n  return;\n}\n\n//------------------------------------------------------------------------------\nvoid FrameHandlerBase::setDetectorOccupiedCells(\n    const size_t reprojector_grid_idx,\n    const DetectorPtr& feature_detector)\n{\n  CHECK_EQ(feature_detector->grid_.size(), reprojectors_.at(reprojector_grid_idx)->grid_->size());\n  feature_detector->grid_.occupancy_ =\n      reprojectors_.at(reprojector_grid_idx)->grid_->occupancy_;\n}\n\nvoid FrameHandlerBase::setFirstFrames(const std::vector<FramePtr>& first_frames)\n{\n  resetAll();\n  last_frames_.reset(new FrameBundle(first_frames));\n  for(auto f : last_frames_->frames_)\n  {\n    f->setKeyframe();\n    map_->addKeyframe(f);\n  }\n  stage_ = Stage::kTracking;\n}\n\nstd::vector<FramePtr> FrameHandlerBase::closeKeyframes() const\n{\n  std::vector<FramePtr> close_kfs;\n  for(const auto& kfs : overlap_kfs_)\n  {\n    close_kfs.insert(close_kfs.begin(), kfs.begin(), kfs.end());\n  }\n  return close_kfs;\n}\n\nvoid FrameHandlerBase::setCompensation(const bool do_compensation)\n{\n  sparse_img_align_->setCompensation(do_compensation);\n  for (const ReprojectorPtr& rep : reprojectors_)\n  {\n    rep->options_.affine_est_gain = do_compensation;\n  }\n  depth_filter_->getMatcher().options_.affine_est_gain_ = do_compensation;\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/frame_handler_mono.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/frame_handler_mono.h>\n#include <svo/map.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/img_align/sparse_img_align.h>\n#include <svo/abstract_bundle_adjustment.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/tracker/feature_tracking_types.h>\n#include <svo/initialization.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/reprojector.h>\n#include <vikit/performance_monitor.h>\n\nnamespace svo {\n\nFrameHandlerMono::FrameHandlerMono(\n    const BaseOptions& base_options,\n    const DepthFilterOptions& depth_filter_options,\n    const DetectorOptions& feature_detector_options,\n    const InitializationOptions& init_options,\n    const ReprojectorOptions& reprojector_options,\n    const FeatureTrackerOptions& tracker_options,\n    const CameraBundle::Ptr& cam)\n  : FrameHandlerBase(\n      base_options, reprojector_options, depth_filter_options,\n      feature_detector_options, init_options, tracker_options, cam)\n{ ; }\n\nUpdateResult FrameHandlerMono::processFrameBundle()\n{\n  UpdateResult res = UpdateResult::kFailure;\n  if(stage_ == Stage::kTracking)\n    res = processFrame();\n  else if(stage_ == Stage::kInitializing)\n    res = processFirstFrame();\n  else if(stage_ == Stage::kRelocalization)\n    res = relocalizeFrame(Transformation(), reloc_keyframe_);\n\n  return res;\n}\n\nvoid FrameHandlerMono::addImage(\n    const cv::Mat& img,\n    const uint64_t timestamp)\n{\n  addImageBundle({img}, timestamp);\n}\n\nUpdateResult FrameHandlerMono::processFirstFrame()\n{\n  if(!initializer_->have_depth_prior_)\n  {\n    initializer_->setDepthPrior(options_.init_map_scale);\n  }\n  if(have_rotation_prior_)\n  {\n    VLOG(2) << \"Setting absolute orientation prior\";\n    initializer_->setAbsoluteOrientationPrior(newFrame()->T_cam_imu().getRotation() * R_imu_world_);\n  }\n  const auto res = initializer_->addFrameBundle(new_frames_);\n\n  if(res == InitResult::kTracking)\n    return UpdateResult::kDefault;\n\n  // make old frame keyframe\n  initializer_->frames_ref_->setKeyframe();\n  initializer_->frames_ref_->at(0)->setKeyframe();\n  map_->addKeyframe(initializer_->frames_ref_->at(0));\n  if(bundle_adjustment_)\n  {\n    bundle_adjustment_->bundleAdjustment(initializer_->frames_ref_);\n  }\n\n  // make new frame keyframe\n  newFrame()->setKeyframe();\n  frame_utils::getSceneDepth(newFrame(), depth_median_, depth_min_, depth_max_);\n  VLOG(40) << \"Current Frame Depth: \" << \"min: \" << depth_min_\n          << \", max: \" << depth_max_ << \", median: \" << depth_median_;\n  depth_filter_->addKeyframe(\n              newFrame(), depth_median_, 0.5*depth_min_, depth_median_*1.5);\n  VLOG(40) << \"Updating seeds in second frame using last frame...\";\n  depth_filter_->updateSeeds({ newFrame() }, lastFrameUnsafe());\n\n  // add frame to map\n  map_->addKeyframe(newFrame());\n  stage_ = Stage::kTracking;\n  initializer_->reset();\n  VLOG(1) << \"Init: Selected second frame, triangulated initial map.\";\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerMono::processFrame()\n{\n  // ---------------------------------------------------------------------------\n  // tracking\n\n  // STEP 1: Sparse Image Align\n  VLOG(40) << \"===== Sparse Image Alignment =====\";\n  size_t n_tracked_features = 0;\n  sparseImageAlignment();\n\n  // STEP 2: Map Reprojection & Feature Align\n  VLOG(40) << \"===== Project Map to Current Frame =====\";\n  n_tracked_features = projectMapInFrame();\n  if(n_tracked_features < options_.quality_min_fts)\n    return UpdateResult::kFailure;\n\n  // STEP 3: Pose & Structure Optimization\n  VLOG(40) << \"===== Pose Optimization =====\";\n  n_tracked_features = optimizePose();\n  if(n_tracked_features < options_.quality_min_fts)\n    return UpdateResult::kFailure;\n  optimizeStructure(new_frames_, options_.structure_optimization_max_pts, 5);\n\n  // return if tracking bad\n  setTrackingQuality(n_tracked_features);\n  if(tracking_quality_ == TrackingQuality::kInsufficient)\n    return UpdateResult::kFailure;\n\n  // ---------------------------------------------------------------------------\n  // select keyframe\n  VLOG(40) << \"===== Keyframe Selection =====\";\n  frame_utils::getSceneDepth(newFrame(), depth_median_, depth_min_, depth_max_);\n  VLOG(40) << \"Current Frame Depth: \" << \"min: \" << depth_min_\n           << \", max: \" << depth_max_ << \", median: \" << depth_median_;\n  if(!need_new_kf_(newFrame()->T_f_w_)\n     || tracking_quality_ == TrackingQuality::kBad\n     || stage_ == Stage::kRelocalization)\n  {\n    if(tracking_quality_ == TrackingQuality::kGood)\n    {\n      VLOG(40) << \"Updating seeds in overlapping keyframes...\";\n      CHECK(!overlap_kfs_.empty());\n      depth_filter_->updateSeeds(overlap_kfs_.at(0), newFrame());\n    }\n    return UpdateResult::kDefault;\n  }\n  newFrame()->setKeyframe();\n  VLOG(40) << \"New keyframe selected.\";\n\n  // ---------------------------------------------------------------------------\n  // new keyframe selected\n  upgradeSeedsToFeatures(newFrame());\n\n  // init new depth-filters, set feature-detection grid-cells occupied that\n  // already have a feature\n  //\n  // TODO: we should also project all seeds first! to make sure that we don't\n  //       initialize seeds in the same location!!! this can be done in the\n  //       depth-filter\n  //\n  {\n    DepthFilter::ulock_t lock(depth_filter_->feature_detector_mut_);\n    setDetectorOccupiedCells(0, depth_filter_->feature_detector_);\n  } // release lock\n  depth_filter_->addKeyframe(\n        newFrame(), depth_median_, 0.5*depth_min_, depth_median_*1.5);\n\n  if(options_.update_seeds_with_old_keyframes)\n  {\n    VLOG(40) << \"Updating seeds in current frame using last frame...\";\n    depth_filter_->updateSeeds({ newFrame() }, lastFrameUnsafe());\n    VLOG(40) << \"Updating seeds in current frame using overlapping keyframes...\";\n    for(const FramePtr& old_keyframe : overlap_kfs_.at(0))\n      depth_filter_->updateSeeds({ newFrame() }, old_keyframe);\n  }\n\n  VLOG(40) << \"Updating seeds in overlapping keyframes...\";\n  depth_filter_->updateSeeds(overlap_kfs_.at(0), newFrame());\n\n  // add keyframe to map\n  map_->addKeyframe(newFrame());\n\n  // if limited number of keyframes, remove the one furthest apart\n  if(options_.max_n_kfs > 2 && map_->size() >= options_.max_n_kfs)\n  {\n    FramePtr furthest_frame = map_->getFurthestKeyframe(newFrame()->pos());\n    map_->removeKeyframe(furthest_frame->id());\n  }\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerMono::relocalizeFrame(\n    const Transformation& /*T_cur_ref*/,\n    const FramePtr& ref_keyframe)\n{\n  ++relocalization_n_trials_;\n  if(ref_keyframe == nullptr)\n    return UpdateResult::kFailure;\n\n  VLOG_EVERY_N(1, 20) << \"Relocalizing frame\";\n  FrameBundle::Ptr ref_frame(new FrameBundle({ref_keyframe}));\n  last_frames_ = ref_frame;\n  UpdateResult res = processFrame();\n  if(res == UpdateResult::kDefault)\n  {\n    // Reset to default mode.\n    stage_ = Stage::kTracking;\n    relocalization_n_trials_ = 0;\n    VLOG(1) << \"Relocalization successful.\";\n  }\n  else\n  {\n    // reset to last well localized pose\n    newFrame()->T_f_w_ = ref_keyframe->T_f_w_;\n  }\n  return res;\n}\n\nvoid FrameHandlerMono::resetAll()\n{\n  resetCommon();\n}\n\nFramePtr FrameHandlerMono::lastFrame() const\n{\n  return (last_frames_ == nullptr) ? nullptr : last_frames_->at(0);\n}\n\nconst FramePtr& FrameHandlerMono::newFrame() const\n{\n  return new_frames_->frames_[0];\n}\n\nconst FramePtr& FrameHandlerMono::lastFrameUnsafe() const\n{\n  return last_frames_->frames_[0];\n}\n\nbool FrameHandlerMono::haveLastFrame() const\n{\n  return (last_frames_ != nullptr);\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/frame_handler_stereo.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/frame_handler_stereo.h>\n#include <svo/map.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/pose_optimizer.h>\n#include <svo/img_align/sparse_img_align.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/stereo_triangulation.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo/reprojector.h>\n#include <svo/initialization.h>\n#include <vikit/performance_monitor.h>\n\nnamespace svo {\n\nFrameHandlerStereo::FrameHandlerStereo(\n    const BaseOptions& base_options,\n    const DepthFilterOptions& depth_filter_options,\n    const DetectorOptions& feature_detector_options,\n    const InitializationOptions& init_options,\n    const StereoTriangulationOptions& stereo_options,\n    const ReprojectorOptions& reprojector_options,\n    const FeatureTrackerOptions& tracker_options,\n    const CameraBundle::Ptr& stereo_camera)\n  : FrameHandlerBase(\n      base_options, reprojector_options, depth_filter_options,\n      feature_detector_options, init_options, tracker_options, stereo_camera)\n{\n  // init initializer\n  stereo_triangulation_.reset(\n        new StereoTriangulation(\n          stereo_options,\n          feature_detection_utils::makeDetector(\n            feature_detector_options, cams_->getCameraShared(0))));\n}\n\nUpdateResult FrameHandlerStereo::processFrameBundle()\n{\n  UpdateResult res = UpdateResult::kFailure;\n  if(stage_ == Stage::kTracking)\n    res = processFrame();\n  else if(stage_ == Stage::kInitializing)\n    res = processFirstFrame();\n  return res;\n}\n\nvoid FrameHandlerStereo::addImages(\n    const cv::Mat& img_left,\n    const cv::Mat& img_right,\n    const uint64_t timestamp)\n{\n  // TODO: deprecated\n  addImageBundle({img_left, img_right}, timestamp);\n}\n\nUpdateResult FrameHandlerStereo::processFirstFrame()\n{\n  if(initializer_->addFrameBundle(new_frames_) == InitResult::kFailure)\n  {\n    SVO_ERROR_STREAM(\"Initialization failed. Not enough triangulated points.\");\n    return UpdateResult::kDefault;\n  }\n\n  new_frames_->at(0)->setKeyframe();\n  map_->addKeyframe(new_frames_->at(0));\n  new_frames_->at(1)->setKeyframe();\n  map_->addKeyframe(new_frames_->at(1));\n\n  frame_utils::getSceneDepth(new_frames_->at(0), depth_median_, depth_min_, depth_max_);\n  depth_filter_->addKeyframe(new_frames_->at(0), depth_median_, 0.5*depth_min_, depth_median_*1.5);\n\n  SVO_INFO_STREAM(\"Init: Selected first frame.\");\n  stage_ = Stage::kTracking;\n  return UpdateResult::kKeyframe;\n}\n\nUpdateResult FrameHandlerStereo::processFrame()\n{\n  // ---------------------------------------------------------------------------\n  // tracking\n\n  // STEP 1: Sparse Image Align\n  size_t n_tracked_features = 0;\n  sparseImageAlignment();\n\n  // STEP 2: Map Reprojection & Feature Align\n  n_tracked_features = projectMapInFrame();\n  if(n_tracked_features < options_.quality_min_fts)\n  {\n    return makeKeyframe(); // force stereo triangulation to recover\n  }\n\n  // STEP 3: Pose & Structure Optimization\n  n_tracked_features = optimizePose();\n  if(n_tracked_features < options_.quality_min_fts)\n  {\n    return makeKeyframe(); // force stereo triangulation to recover\n  }\n  optimizeStructure(new_frames_, options_.structure_optimization_max_pts, 5);\n\n  // return if tracking bad\n  setTrackingQuality(n_tracked_features);\n  if(tracking_quality_ == TrackingQuality::kInsufficient)\n  {\n    return makeKeyframe(); // force stereo triangulation to recover\n  }\n\n  // ---------------------------------------------------------------------------\n  // select keyframe\n  frame_utils::getSceneDepth(new_frames_->at(0), depth_median_, depth_min_, depth_max_);\n  if(!need_new_kf_(new_frames_->at(0)->T_f_w_))\n  {\n    for(size_t i=0; i<new_frames_->size(); ++i)\n      depth_filter_->updateSeeds(overlap_kfs_.at(i), new_frames_->at(i));\n    return UpdateResult::kDefault;\n  }\n  SVO_DEBUG_STREAM(\"New keyframe selected.\");\n  return makeKeyframe();\n}\n\nUpdateResult FrameHandlerStereo::makeKeyframe()\n{\n  static size_t kf_counter = 0;\n  const size_t kf_id = kf_counter++ % cams_->numCameras();\n  const size_t other_id = kf_counter % cams_->numCameras();\n  CHECK(kf_id != other_id);\n\n  // ---------------------------------------------------------------------------\n  // add extra features when num tracked is critically low!\n  if(new_frames_->numLandmarks() < options_.kfselect_numkfs_lower_thresh)\n  {\n    setDetectorOccupiedCells(0, stereo_triangulation_->feature_detector_);\n    new_frames_->at(other_id)->setKeyframe();\n    map_->addKeyframe(new_frames_->at(other_id));\n    upgradeSeedsToFeatures(new_frames_->at(other_id));\n    stereo_triangulation_->compute(new_frames_->at(0), new_frames_->at(1));\n  }\n\n  // ---------------------------------------------------------------------------\n  // new keyframe selected\n  new_frames_->at(kf_id)->setKeyframe();\n  map_->addKeyframe(new_frames_->at(kf_id));\n  upgradeSeedsToFeatures(new_frames_->at(kf_id));\n\n  // init new depth-filters, set feature-detection grid-cells occupied that\n  // already have a feature\n  {\n    DepthFilter::ulock_t lock(depth_filter_->feature_detector_mut_);\n    setDetectorOccupiedCells(kf_id, depth_filter_->feature_detector_);\n  } // release lock\n  depth_filter_->addKeyframe(\n        new_frames_->at(kf_id), depth_median_, 0.5*depth_min_, depth_median_*1.5);\n  depth_filter_->updateSeeds(overlap_kfs_.at(0), new_frames_->at(0));\n  depth_filter_->updateSeeds(overlap_kfs_.at(1), new_frames_->at(1));\n\n  // TEST\n  // {\n  if(options_.update_seeds_with_old_keyframes)\n  {\n    depth_filter_->updateSeeds({ new_frames_->at(0) }, last_frames_->at(0));\n    depth_filter_->updateSeeds({ new_frames_->at(0) }, last_frames_->at(1));\n    depth_filter_->updateSeeds({ new_frames_->at(1) }, last_frames_->at(0));\n    depth_filter_->updateSeeds({ new_frames_->at(1) }, last_frames_->at(1));\n    for(const FramePtr& old_keyframe : overlap_kfs_.at(0))\n    {\n      depth_filter_->updateSeeds({ new_frames_->at(0) }, old_keyframe);\n      depth_filter_->updateSeeds({ new_frames_->at(1) }, old_keyframe);\n    }\n  }\n  // }\n\n  // if limited number of keyframes, remove the one furthest apart\n  while(map_->size() > options_.max_n_kfs && options_.max_n_kfs > 2)\n  {\n    FramePtr furthest_frame = map_->getFurthestKeyframe(new_frames_->at(kf_id)->pos());\n    map_->removeKeyframe(furthest_frame->id());\n  }\n  return UpdateResult::kKeyframe;\n}\n\nvoid FrameHandlerStereo::resetAll()\n{\n  resetCommon();\n  depth_filter_->reset();\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/imu_handler.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/imu_handler.h>\n#include <vikit/math_utils.h>\n#include <vikit/csv_utils.h>\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\nnamespace svo {\n\nPreintegratedImuMeasurement::PreintegratedImuMeasurement(\n    const Eigen::Vector3d& omega_bias,\n    const Eigen::Vector3d& acc_bias)\n  : omega_bias_(omega_bias)\n  , acc_bias_(acc_bias)\n  , delta_t_ij_(Eigen::Vector3d::Zero())\n  , delta_v_ij_(Eigen::Vector3d::Zero())\n  , delta_R_ij_()\n  , dt_sum_(0.0)\n  , last_imu_measurement_set_(false)\n{}\n\nvoid PreintegratedImuMeasurement::addMeasurement(const ImuMeasurement &m)\n{\n  if(last_imu_measurement_set_)\n  {\n    const double dt = m.timestamp_-last_imu_measurement.timestamp_;\n    const Eigen::Vector3d a = last_imu_measurement.linear_acceleration_-acc_bias_;\n    const Eigen::Vector3d w = last_imu_measurement.angular_velocity_-omega_bias_;\n    const Quaternion R_incr = Quaternion::exp(w*dt);\n\n    // second order integration:\n    delta_t_ij_ += delta_v_ij_*dt + (delta_R_ij_.rotate(a))*dt*dt*0.5;\n    delta_v_ij_ += delta_R_ij_.rotate(a*dt);\n    delta_R_ij_ = delta_R_ij_*R_incr;\n    dt_sum_ += dt;\n  }\n  last_imu_measurement_set_ = true;\n  last_imu_measurement = m;\n}\n\nvoid PreintegratedImuMeasurement::addMeasurements(const ImuMeasurements& ms)\n{\n  for(const ImuMeasurement& m : ms)\n  {\n    addMeasurement(m);\n  }\n}\n\nImuHandler::ImuHandler(\n    const ImuCalibration& imu_calib,\n    const ImuInitialization& imu_init)\n  : imu_calib_(imu_calib)\n  , imu_init_(imu_init)\n  , acc_bias_(imu_init.acc_bias)\n  , omega_bias_(imu_init.omega_bias)\n{}\n\nImuHandler::~ImuHandler()\n{}\n\nbool ImuHandler::getMeasurements(\n    const double old_cam_timestamp,\n    const double new_cam_timestamp,\n    const bool delete_old_measurements,\n    ImuMeasurements& measurements)\n{\n  assert(new_cam_timestamp > old_cam_timestamp);\n  ulock_t lock(measurements_mut_);\n  if(measurements_.empty())\n  {\n    LOG(WARNING) << \"don't have any imu measurements!\";\n    return false;\n  }\n\n  // Substract camera delay to get imu timestamp.\n  const double t1 = old_cam_timestamp - imu_calib_.delay_imu_cam;\n  const double t2 = new_cam_timestamp - imu_calib_.delay_imu_cam;\n\n  // Find the right measurements for integration, note that the newest measurement\n  // is at the front of the list!\n  ImuMeasurements::iterator it1=measurements_.end(); // older timestamp\n  ImuMeasurements::iterator it2=measurements_.end(); // newer timestamp\n  bool it2_set = false;\n  for(ImuMeasurements::iterator it=measurements_.begin(); it!=measurements_.end(); ++it)\n  {\n    if(!it2_set && it->timestamp_ < t2)\n    {\n      it2 = it;\n      it2_set = true;\n    }\n\n    if(it->timestamp_ <= t1)\n    {\n      it1 = it;\n      break;\n    }\n  }\n\n  // check\n  if(it1 == measurements_.end())\n  {\n    LOG(WARNING) << \"need an older measurement for t1!\";\n    return false;\n  }\n\n  if(it2 == measurements_.end())\n  {\n    LOG(WARNING) << \"need an older measurement for t2!\";\n    return false;\n  }\n\n  if(it1 == it2)\n  {\n    LOG(WARNING) << \"not enough imu measurements!\";\n    return false;\n  }\n\n  if(t2-it2->timestamp_ > imu_calib_.max_imu_delta_t)\n  {\n    LOG(WARNING) << \"newest imu measurement is too old for the image \"\n                    << t2-it2->timestamp_;\n    return false;\n  }\n\n  // copy affected measurements\n  ++it1; // make sure to copy the last element!\n  measurements.insert(measurements.begin(), it2, it1);\n\n  // change timestamp of oldest measurement\n  measurements.back().timestamp_ = t1;\n\n  // delete measurements that will not be used anymore\n  if(delete_old_measurements)\n    measurements_.erase(it1, measurements_.end());\n\n  return true;\n}\n\nbool ImuHandler::getClosestMeasurement(\n    const double timestamp,\n    ImuMeasurement& measurement) const\n{\n  ulock_t lock(measurements_mut_);\n  if(measurements_.empty())\n  {\n    LOG(WARNING) << \"ImuHandler: don't have any imu measurements!\";\n    return false;\n  }\n\n  double dt_best = std::numeric_limits<double>::max();\n  double img_timestamp_corrected = timestamp - imu_calib_.delay_imu_cam;\n  for(const ImuMeasurement& m : measurements_)\n  {\n    const double dt = std::abs(m.timestamp_- img_timestamp_corrected);\n    if(dt < dt_best)\n    {\n      dt_best = dt;\n      measurement = m;\n    }\n  }\n\n  if(dt_best > imu_calib_.max_imu_delta_t)\n  {\n    LOG(WARNING) << \"ImuHandler: getClosestMeasurement: no measurement found!\"\n                    \" closest measurement: \" << dt_best*1000.0 << \"ms.\";\n    return false;\n  }\n  return true;\n}\n\nbool ImuHandler::getRelativeRotationPrior(\n    const double old_cam_timestamp,\n    const double new_cam_timestamp,\n    bool delete_old_measurements,\n    Quaternion& R_oldimu_newimu)\n{\n  ImuMeasurements measurements;\n  if(!getMeasurements(\n       old_cam_timestamp, new_cam_timestamp, delete_old_measurements, measurements))\n    return false;\n\n  // integrate all measurements from t1 to t2\n  R_oldimu_newimu.setIdentity();\n  ImuMeasurements::reverse_iterator it = measurements.rbegin();\n  ImuMeasurements::reverse_iterator it_plus = measurements.rbegin(); ++it_plus;\n  for(; it != measurements.rend(); ++it, ++it_plus)\n  {\n    double dt = 0.0;\n    if(it_plus == measurements.rend()) // only for newest measurement\n      dt = new_cam_timestamp - imu_calib_.delay_imu_cam - it->timestamp_;\n    else\n      dt = it_plus->timestamp_ - it->timestamp_;\n\n    const Eigen::Vector3d omega_corrected = it->angular_velocity_ - omega_bias_;\n    R_oldimu_newimu = R_oldimu_newimu * Quaternion::exp(omega_corrected*dt);\n  }\n  return true;\n}\n\nbool ImuHandler::addImuMeasurement(\n      const ImuMeasurement& m)\n{\n  ulock_t lock(measurements_mut_);\n  measurements_.push_front(m); // new measurement is at the front of the list!\n  return true;\n}\n\nbool ImuHandler::loadImuMeasurementsFromFile(const std::string& filename)\n{\n  ulock_t lock(measurements_mut_);\n  std::ifstream fs(filename.c_str());\n  if(!fs.is_open())\n  {\n    LOG(WARNING) << \"Could not open imu file: \" << filename;\n    return false;\n  }\n\n  // add all imu messages to imu-handler\n  size_t n = 0;\n  while(fs.good() && !fs.eof())\n  {\n    if(fs.peek() == '#') // skip comments\n      fs.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');\n    size_t imu_id;\n    double stamp, wx, wy, wz, ax, ay, az;\n    fs >> imu_id >> stamp >> wx >> wy >> wz >> ax >> ay >> az;\n\n//    // DEBUG **************************\n//    if(imu_id % 10 != 0)\n//      continue;\n//    // ********************************\n\n    const Eigen::Vector3d omega(wx, wy, wz);\n    const Eigen::Vector3d linacc(ax, ay, az);\n    const ImuMeasurement m(stamp, omega, linacc);\n    measurements_.push_front(m);\n    ++n;\n  }\n  VLOG(2) << \"ImuHandler: Loaded \" << n << \" measurements.\";\n  return true;\n}\n\nbool ImuHandler::loadImuMeasurementsFromCsvFile(const std::string& filename)\n{\n  ulock_t lock(measurements_mut_);\n\n  // open file\n  std::ifstream csv_file_stream(filename, std::ios::in);\n  CHECK(csv_file_stream.is_open()) << \"Failed to open file \" << filename << \".\";\n  CHECK(!csv_file_stream.eof()) << \"File empty: \" << filename;\n\n  // skip header\n  std::string header_line;\n  std::getline(csv_file_stream, header_line);\n\n  // read measurements\n  std::vector<std::string> fields;\n  size_t n = 0;\n  while(vk::readNextLine(7, csv_file_stream, &fields))\n  {\n    int64_t stamp_ns = vk::convertStringToLongLong(fields[0]);\n    Eigen::Vector3d omega = vk::convertStringsToEigenVector3d(fields[1], fields[2], fields[3]);\n    Eigen::Vector3d linacc = vk::convertStringsToEigenVector3d(fields[4], fields[5], fields[6]);\n    const ImuMeasurement m(\n          static_cast<double>(stamp_ns)/1e9, omega, linacc); // TODO(cfo): save uint64_t timestamps!!!\n    measurements_.push_front(m);\n    ++n;\n  }\n\n  VLOG(2) << \"ImuHandler: Loaded \" << n << \" measurements.\";\n  return true;\n}\n\nImuCalibration ImuHandler::loadCalibrationFromFile(const std::string& filename)\n{\n  YAML::Node data = YAML::LoadFile(filename);\n  ImuCalibration calib;\n  if(data[\"imu_params\"].IsDefined())\n  {\n    calib.delay_imu_cam = data[\"imu_params\"][\"delay_imu_cam\"].as<double>();\n    calib.max_imu_delta_t = data[\"imu_params\"][\"max_imu_delta_t\"].as<double>();\n    calib.saturation_accel_max = data[\"imu_params\"][\"acc_max\"].as<double>();\n    calib.saturation_omega_max = data[\"imu_params\"][\"omega_max\"].as<double>();\n    calib.gyro_noise_density = data[\"imu_params\"][\"sigma_omega_c\"].as<double>();\n    calib.acc_noise_density = data[\"imu_params\"][\"sigma_acc_c\"].as<double>();\n    calib.gyro_bias_random_walk_sigma = data[\"imu_params\"][\"sigma_omega_bias_c\"].as<double>();\n    calib.acc_bias_random_walk_sigma = data[\"imu_params\"][\"sigma_acc_bias_c\"].as<double>();\n    calib.gravity_magnitude = data[\"imu_params\"][\"g\"].as<double>();\n    calib.imu_rate = data[\"imu_params\"][\"imu_rate\"].as<double>();\n  }\n  else\n  {\n    LOG(FATAL) << \"Could not load IMU calibration from file\";\n  }\n  return calib;\n}\n\nImuInitialization ImuHandler::loadInitializationFromFile(const std::string& filename)\n{\n  YAML::Node data = YAML::LoadFile(filename);\n  ImuInitialization init;\n  if(data[\"imu_initialization\"].IsDefined())\n  {\n    init.velocity = Eigen::Vector3d(\n          data[\"imu_initialization\"][\"velocity\"][0].as<double>(),\n          data[\"imu_initialization\"][\"velocity\"][1].as<double>(),\n          data[\"imu_initialization\"][\"velocity\"][2].as<double>());\n    init.omega_bias = Eigen::Vector3d(\n          data[\"imu_initialization\"][\"omega_bias\"][0].as<double>(),\n          data[\"imu_initialization\"][\"omega_bias\"][1].as<double>(),\n          data[\"imu_initialization\"][\"omega_bias\"][2].as<double>());\n    init.acc_bias = Eigen::Vector3d(\n          data[\"imu_initialization\"][\"acc_bias\"][0].as<double>(),\n          data[\"imu_initialization\"][\"acc_bias\"][1].as<double>(),\n          data[\"imu_initialization\"][\"acc_bias\"][2].as<double>());\n    init.velocity_sigma = data[\"imu_initialization\"][\"velocity_sigma\"].as<double>();\n    init.omega_bias_sigma = data[\"imu_initialization\"][\"omega_bias_sigma\"].as<double>();\n    init.acc_bias_sigma = data[\"imu_initialization\"][\"acc_bias_sigma\"].as<double>();\n  }\n  else\n  {\n    LOG(FATAL) << \"Could not load IMU initialization from file\";\n  }\n  return init;\n}\n\nbool ImuHandler::getAngularVelocity(\n    double timestamp,\n    Eigen::Vector3d& omega) const\n{\n  timestamp -= imu_calib_.delay_imu_cam; // correct for camera delay\n  double min_delta = imu_calib_.max_imu_delta_t;\n  for(ImuMeasurements::const_iterator it=measurements_.begin(); it!=measurements_.end(); ++it)\n  {\n    const double dt = std::fabs(it->timestamp_ - timestamp);\n    if(dt < min_delta)\n    {\n      omega = it->angular_velocity_;\n      min_delta = dt;\n    }\n  }\n  if(min_delta < imu_calib_.max_imu_delta_t)\n    return true;\n  return false;\n}\n\nbool ImuHandler::getInitialAttitude(\n    double timestamp,\n    Quaternion& R_imu_world) const\n{\n  ImuMeasurement m;\n  if(!getClosestMeasurement(timestamp, m))\n  {\n    LOG(WARNING) << \"ImuHandler: Could not get initial attitude. No measurements!\";\n    return false;\n  }\n\n  // Set initial coordinate frame based on gravity direction.\n  const Eigen::Vector3d& g = m.linear_acceleration_;\n  const Eigen::Vector3d z = g.normalized(); // imu measures positive-z when static\n  // TODO: make sure z != -1,0,0\n  Eigen::Vector3d p(1,0,0);\n  Eigen::Vector3d p_alternative(0,1,0);\n  if(std::fabs(z.dot(p)) > std::fabs(z.dot(p_alternative)))\n    p = p_alternative;\n  Eigen::Vector3d y = z.cross(p); // make sure gravity is not in x direction\n  y.normalize();\n  const Eigen::Vector3d x = y.cross(z);\n  Eigen::Matrix3d C_imu_world; // world unit vectors in imu coordinates\n  C_imu_world.col(0) = x;\n  C_imu_world.col(1) = y;\n  C_imu_world.col(2) = z;\n\n  VLOG(3) << \"Initial Rotation = \" << C_imu_world;\n\n  R_imu_world = Quaternion(C_imu_world);\n  return true;\n}\n\nvoid ImuHandler::reset()\n{\n  ulock_t lock(measurements_mut_);\n  measurements_.clear();\n}\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo/src/initialization.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/initialization.h>\n\n#include <random> // std::mt19937\n#include <vector>\n\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/camera.h>\n#include <svo/common/container_helpers.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo/direct/feature_alignment.h>\n#include <svo/direct/matcher.h>\n#include <svo/stereo_triangulation.h>\n#include <svo/pose_optimizer.h>\n#include <svo/tracker/feature_tracker.h>\n#include <svo/tracker/feature_tracking_utils.h>\n#include <vikit/cameras/ncamera.h>\n#include <vikit/math_utils.h>\n#include <vikit/homography.h>\n#include <vikit/sample.h>\n#include <opencv2/video/tracking.hpp> // for lucas kanade tracking\n#include <opencv2/opencv.hpp> // for display\n\n#ifdef SVO_USE_OPENGV\n// used for opengv\n# include <opengv/sac/Ransac.hpp>\n// used for TwoPoint and FivePoint\n# include <opengv/sac_problems/relative_pose/TranslationOnlySacProblem.hpp>\n# include <opengv/sac_problems/relative_pose/CentralRelativePoseSacProblem.hpp>\n# include <opengv/relative_pose/methods.hpp>\n# include <opengv/relative_pose/CentralRelativeAdapter.hpp>\n# include <opengv/triangulation/methods.hpp>\n// used for array\n# include <opengv/relative_pose/NoncentralRelativeAdapter.hpp>\n# include <opengv/sac_problems/relative_pose/NoncentralRelativePoseSacProblem.hpp>\n#endif\n\n#ifdef SVO_USE_GTSAM\n# include <gtsam/geometry/SimpleCamera.h>\n# include <gtsam/linear/NoiseModel.h>\n# include <gtsam/nonlinear/Values.h>\n# include <gtsam/nonlinear/NonlinearFactorGraph.h>\n# include <gtsam/slam/PriorFactor.h>\n# include <gtsam/slam/ProjectionFactor.h>\n# include <gtsam/inference/Symbol.h>\n# include <gtsam/geometry/Point2.h>\n# include <gtsam/geometry/Pose3.h>\n# include <gtsam/geometry/Point3.h>\n# include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h>\n# include <gtsam/slam/BetweenFactor.h>\n#endif\n\nnamespace svo {\n\nAbstractInitialization::AbstractInitialization(\n    const InitializationOptions& init_options,\n    const FeatureTrackerOptions& tracker_options,\n    const DetectorOptions& detector_options,\n    const CameraBundlePtr& cams)\n  : options_(init_options)\n{\n  tracker_.reset(new FeatureTracker(tracker_options, detector_options, cams));\n}\n\nAbstractInitialization::~AbstractInitialization()\n{}\n\nvoid AbstractInitialization::reset()\n{\n  frames_ref_.reset();\n  have_rotation_prior_ = false;\n  have_translation_prior_ = false;\n  have_depth_prior_ = false;\n  tracker_->reset();\n}\n\nbool AbstractInitialization::trackFeaturesAndCheckDisparity(const FrameBundlePtr& frames)\n{\n  tracker_->trackFrameBundle(frames);\n  std::vector<size_t> num_tracked;\n  std::vector<double> disparity;\n  tracker_->getNumTrackedAndDisparityPerFrame(\n        options_.init_disparity_pivot_ratio, &num_tracked, &disparity);\n\n  const size_t num_tracked_tot =\n      std::accumulate(num_tracked.begin(), num_tracked.end(), 0u);\n  const double avg_disparity =\n      std::accumulate(disparity.begin(), disparity.end(), 0.0) / disparity.size();\n  VLOG(3) << \"Init: Tracked \" << num_tracked_tot << \" features with disparity = \" << avg_disparity;\n  if(num_tracked_tot < options_.init_min_features)\n  {\n    tracker_->resetActiveTracks();\n    for(const FramePtr& frame : frames->frames_)\n      frame->clearFeatureStorage();\n    const size_t n = tracker_->initializeNewTracks(frames);\n    VLOG(3) << \"Init: New Tracks initialized = \" << n;\n    frames_ref_ = frames;\n    R_ref_world_ = R_cur_world_;\n    return false;\n  }\n  if(avg_disparity < options_.init_min_disparity)\n    return false;\n  return true;\n}\n\nInitResult HomographyInit::addFrameBundle(\n    const FrameBundlePtr& frames_cur)\n{\n  // Track and detect features.\n  if(!trackFeaturesAndCheckDisparity(frames_cur))\n    return InitResult::kTracking;\n\n  // Create vector of bearing vectors\n  const FrameBundlePtr frames_ref = tracker_->getOldestFrameInTrack(0);\n  const Frame& frame_ref = *frames_ref->at(0);\n  const Frame& frame_cur = *frames_cur->at(0);\n  FeatureMatches matches_cur_ref;\n  feature_tracking_utils::getFeatureMatches(frame_cur, frame_ref, &matches_cur_ref);\n  const size_t n = matches_cur_ref.size();\n  Bearings f_cur(3, n);\n  Bearings f_ref(3, n);\n  for(size_t i = 0; i < n; ++i)\n  {\n    f_cur.col(i) = frame_cur.f_vec_.col(matches_cur_ref[i].first);\n    f_ref.col(i) = frame_ref.f_vec_.col(matches_cur_ref[i].second);\n  }\n\n  // Compute model\n  const vk::Homography H_cur_ref = vk::estimateHomography(\n        f_cur, f_ref, frames_ref_->at(0)->getErrorMultiplier(),\n        options_.reproj_error_thresh, options_.init_min_inliers);\n  if(H_cur_ref.score < options_.init_min_inliers)\n  {\n    SVO_WARN_STREAM(\"Init Homography: Have \" << H_cur_ref.score << \"inliers. \"\n                    << options_.init_min_inliers << \" inliers minimum required.\");\n    return InitResult::kFailure;\n  }\n  T_cur_from_ref_ = Transformation(Quaternion(H_cur_ref.R_cur_ref), H_cur_ref.t_cur_ref);\n\n  // Triangulate\n  if(initialization_utils::triangulateAndInitializePoints(\n        frames_cur->at(0), frames_ref_->at(0), T_cur_from_ref_, options_.reproj_error_thresh,\n        depth_at_current_frame_, options_.init_min_inliers, matches_cur_ref))\n  {\n    return InitResult::kSuccess;\n  }\n\n  // Restart\n  tracker_->reset();\n  frames_cur->at(0)->clearFeatureStorage();\n  return InitResult::kTracking;\n}\n\n\n#ifdef SVO_USE_OPENGV\n\n//! Same as in opengv, but stores the triangulated values\nclass TranslationSacProblemWithTriangulation : public opengv::sac_problems::relative_pose::TranslationOnlySacProblem\n{\npublic:\n   typedef opengv::sac_problems::relative_pose::TranslationOnlySacProblem Base;\n   TranslationSacProblemWithTriangulation(adapter_t & adapter) : Base(adapter) {}\n\n   void getSelectedDistancesToModel(\n       const model_t & model,\n       const std::vector<int> & indices,\n       std::vector<double> & scores) const\n   {\n      using namespace opengv;\n\n      translation_t translation = model.col(3);\n      rotation_t rotation = model.block<3,3>(0,0);\n      _adapter.sett12(translation);\n      _adapter.setR12(rotation);\n\n      model_t inverseSolution;\n      inverseSolution.block<3,3>(0,0) = rotation.transpose();\n      inverseSolution.col(3) = -inverseSolution.block<3,3>(0,0)*translation;\n\n      Eigen::Matrix<double,4,1> p_hom;\n      p_hom[3] = 1.0;\n\n      points_.resize(indices.size());\n      for( size_t i = 0; i < indices.size(); i++ )\n      {\n        p_hom.block<3,1>(0,0) =\n            opengv::triangulation::triangulate2(_adapter,indices[i]);\n        points_[i] = p_hom.block<3,1>(0,0);\n        bearingVector_t reprojection1 = p_hom.block<3,1>(0,0);\n        bearingVector_t reprojection2 = inverseSolution * p_hom;\n        reprojection1 = reprojection1 / reprojection1.norm();\n        reprojection2 = reprojection2 / reprojection2.norm();\n        bearingVector_t f1 = _adapter.getBearingVector1(indices[i]);\n        bearingVector_t f2 = _adapter.getBearingVector2(indices[i]);\n\n        //bearing-vector based outlier criterium (select threshold accordingly):\n        //1-(f1'*f2) = 1-cos(alpha) \\in [0:2]\n        double reprojError1 = 1.0 - (f1.transpose() * reprojection1);\n        double reprojError2 = 1.0 - (f2.transpose() * reprojection2);\n        scores.push_back(reprojError1 + reprojError2);\n      }\n   }\n\n   mutable opengv::points_t points_;\n};\n#endif\n\nInitResult TwoPointInit::addFrameBundle(\n    const FrameBundlePtr& frames_cur)\n{\n#ifdef SVO_USE_OPENGV\n  if(!have_rotation_prior_)\n  {\n    SVO_ERROR_STREAM(\"TwoPointInit has no rotation prior.\");\n    return InitResult::kFailure;\n  }\n  have_rotation_prior_ = false;\n\n  // Track and detect features.\n  if(!trackFeaturesAndCheckDisparity(frames_cur))\n    return InitResult::kTracking;\n\n  // Create vector of bearing vectors\n  const FrameBundlePtr frames_ref = tracker_->getOldestFrameInTrack(0);\n  FeatureMatches matches_cur_ref;\n  feature_tracking_utils::getFeatureMatches(\n        *frames_cur->at(0), *frames_ref->at(0), &matches_cur_ref);\n\n  // Create vector of bearing vectors\n  BearingVectors f_cur;\n  BearingVectors f_ref;\n  initialization_utils::copyBearingVectors(\n        *frames_cur->at(0), *frames_ref->at(0), matches_cur_ref, &f_cur, &f_ref);\n\n  // Compute model\n  static double inlier_threshold =\n      1.0 - std::cos(frames_cur->at(0)->getAngleError(options_.reproj_error_thresh));\n  const Eigen::Matrix3d R_cur_ref = (R_cur_world_ * R_ref_world_.inverse()).getRotationMatrix();\n  opengv::relative_pose::CentralRelativeAdapter adapter(f_cur, f_ref, R_cur_ref);\n  typedef TranslationSacProblemWithTriangulation TwoPtProblem;\n  std::shared_ptr<TwoPtProblem> problem_ptr(new TwoPtProblem(adapter));\n  opengv::sac::Ransac<TwoPtProblem> ransac;\n  ransac.sac_model_ = problem_ptr;\n  ransac.threshold_ = inlier_threshold;\n  ransac.max_iterations_ = 100;\n  ransac.probability_ = 0.995;\n  ransac.computeModel();\n\n  // enough inliers?\n  if(ransac.inliers_.size() < options_.init_min_inliers)\n   return InitResult::kNoKeyframe;\n\n  Eigen::Vector3d t = ransac.model_coefficients_.rightCols(1);\n  Matrix3d R = ransac.model_coefficients_.leftCols(3);\n  T_cur_from_ref_ = Transformation(\n        Quaternion(R),\n        ransac.model_coefficients_.rightCols(1));\n\n  VLOG(5) << \"2Pt RANSAC:\" << std::endl\n          << \"# Iter = \" << ransac.iterations_ << std::endl\n          << \"# Inliers = \" << ransac.inliers_.size() << std::endl\n          << \"Model = \" << ransac.model_coefficients_ << std::endl\n          << \"Rot prior (imu) = \" << R_cur_ref << std::endl\n          << \"H.rotation_matrix() = \" << T_cur_from_ref_.getRotationMatrix() << std::endl\n          << \"H.translation() = \" << T_cur_from_ref_.getPosition();\n\n  // Triangulate\n  if(initialization_utils::triangulateAndInitializePoints(\n        frames_cur->at(0), frames_ref->at(0), T_cur_from_ref_, options_.reproj_error_thresh,\n        depth_at_current_frame_, options_.init_min_inliers, matches_cur_ref))\n  {\n    return InitResult::kSuccess;\n  }\n  return InitResult::kFailure;\n\n#else\n  SVO_ERROR_STREAM(\"You need to compile SVO with OpenGV to use TwoPointInit!\");\n  return InitResult::kFailure;\n#endif\n}\n\n\nInitResult FivePointInit::addFrameBundle(\n    const FrameBundlePtr& frames_cur)\n{\n#ifdef SVO_USE_OPENGV\n  // Track and detect features.\n  if(!trackFeaturesAndCheckDisparity(frames_cur))\n    return InitResult::kTracking;\n\n  // Create vector of bearing vectors\n  const FrameBundlePtr frames_ref = tracker_->getOldestFrameInTrack(0);\n  FeatureMatches matches_cur_ref;\n  feature_tracking_utils::getFeatureMatches(\n        *frames_cur->at(0), *frames_ref->at(0), &matches_cur_ref);\n\n  // Create vector of bearing vectors\n  BearingVectors f_cur;\n  BearingVectors f_ref;\n  initialization_utils::copyBearingVectors(\n        *frames_cur->at(0), *frames_ref->at(0), matches_cur_ref, &f_cur, &f_ref);\n\n  // Compute model\n  static double inlier_threshold = 1.0 - std::cos(frames_cur->at(0)->getAngleError(options_.reproj_error_thresh));\n  typedef opengv::sac_problems::relative_pose::CentralRelativePoseSacProblem CentralRelative;\n  opengv::relative_pose::CentralRelativeAdapter adapter(f_cur, f_ref);\n  std::shared_ptr<CentralRelative> problem_ptr(\n        new CentralRelative(adapter, CentralRelative::NISTER));\n  opengv::sac::Ransac<CentralRelative> ransac;\n  ransac.sac_model_ = problem_ptr;\n  ransac.threshold_ = inlier_threshold;\n  ransac.max_iterations_ = 100;\n  ransac.probability_ = 0.995;\n  ransac.computeModel();\n\n  // enough inliers?\n  if(ransac.inliers_.size() < options_.init_min_inliers)\n  {\n    VLOG(3) << \"5Pt RANSAC has only \" << ransac.inliers_.size() << \" inliers. \"\n            << options_.init_min_inliers << \" required.\";\n    return InitResult::kNoKeyframe;\n  }\n\n  Eigen::Vector3d t = ransac.model_coefficients_.rightCols(1);\n  Matrix3d R = ransac.model_coefficients_.leftCols(3);\n  T_cur_from_ref_ = Transformation(\n        Quaternion(R),\n        ransac.model_coefficients_.rightCols(1));\n\n  VLOG(5) << \"5Pt RANSAC:\" << std::endl\n          << \"# Iter = \" << ransac.iterations_ << std::endl\n          << \"# Inliers = \" << ransac.inliers_.size() << std::endl\n          << \"Model = \" << ransac.model_coefficients_ << std::endl\n          << \"T.rotation_matrix() = \" << T_cur_from_ref_.getRotationMatrix() << std::endl\n          << \"T.translation() = \" << T_cur_from_ref_.getPosition();\n\n  // Triangulate\n  if(initialization_utils::triangulateAndInitializePoints(\n        frames_cur->at(0), frames_ref->at(0), T_cur_from_ref_, options_.reproj_error_thresh,\n        depth_at_current_frame_, options_.init_min_inliers, matches_cur_ref))\n  {\n    return InitResult::kSuccess;\n  }\n  return InitResult::kFailure;\n\n#else\n  SVO_ERROR_STREAM(\"You need to compile SVO with OpenGV to use TwoPointInit!\");\n  return InitResult::kFailure;\n#endif\n}\n\nInitResult OneShotInit::addFrameBundle(const FrameBundlePtr &frames_cur)\n{\n  CHECK(frames_cur->size() == 1) << \"OneShot Initialization doesn't work with Camera Array\";\n\n  // Track and detect features.\n  trackFeaturesAndCheckDisparity(frames_cur);\n\n  if(frames_cur->numFeatures() < options_.init_min_features)\n  {\n    return InitResult::kTracking;\n  }\n\n  if(frames_ref_ == frames_cur)\n  {\n    // First frame\n    return InitResult::kTracking;\n  }\n\n  // Initialize 3D points at known depth\n  const FrameBundlePtr frames_ref = tracker_->getOldestFrameInTrack(0);\n  FramePtr frame_ref = frames_ref->at(0);\n  FramePtr frame_cur = frames_cur->at(0);\n  FeatureMatches matches_cur_ref;\n  feature_tracking_utils::getFeatureMatches(*frame_cur, *frame_ref, &matches_cur_ref);\n  for(const std::pair<size_t, size_t> it : matches_cur_ref)\n  {\n    const BearingVector f_ref = frame_ref->f_vec_.col(it.second);\n    const Vector3d xyz_in_cam = (f_ref/f_ref.z()) * depth_at_current_frame_;\n    const Vector3d xyz_in_world = frame_ref->T_world_cam() * xyz_in_cam;\n    PointPtr new_point(new Point(xyz_in_world));\n    new_point->addObservation(frame_ref, it.second);\n    frame_ref->landmark_vec_.at(it.second) = new_point;\n    frame_cur->landmark_vec_.at(it.first)  = new_point;\n  }\n\n  // to estimate pose of current frame we do pose optimization\n  PoseOptimizer::SolverOptions options = PoseOptimizer::getDefaultSolverOptions();\n  options.verbose = true;\n  PoseOptimizer optimizer(options);\n  optimizer.run(frames_cur, 2.0);\n\n  // Add all references to 3d point\n  for(size_t i = 0; i < frame_cur->numFeatures(); ++i)\n  {\n    if(!frame_cur->landmark_vec_.at(i))\n      continue;\n\n    const PointPtr point = frame_cur->landmark_vec_.at(i);\n    point->addObservation(frame_cur, i);\n    // TODO: we should also remove references in previous frame.\n  }\n\n  if(frames_cur->numLandmarks() < options_.init_min_features)\n  {\n    std::cout << \"tracking \" << frames_ref->numLandmarks() << \" features\" << std::endl;\n    return InitResult::kFailure;\n  }\n  return InitResult::kSuccess;\n}\n\nStereoInit::StereoInit(\n    const InitializationOptions& init_options,\n    const FeatureTrackerOptions& tracker_options,\n    const DetectorOptions& detector_options,\n    const CameraBundlePtr& cams)\n  : AbstractInitialization(init_options, tracker_options, detector_options, cams)\n{\n  StereoTriangulationOptions stereo_options;\n  detector_ = feature_detection_utils::makeDetector(detector_options, cams->getCameraShared(0));\n  stereo_.reset(new StereoTriangulation(stereo_options, detector_));\n}\n\nInitResult StereoInit::addFrameBundle(\n    const FrameBundlePtr& frames)\n{\n  CHECK_EQ(frames->size(), 2u) << \"StereoInit: Bundle has not two frames!\";\n  reset();\n  frames_ref_ = frames;\n\n  VLOG(20) << \"FRAME 1\" << std::endl << frames->at(0)->T_world_cam() <<std::endl\n           << \"FRAME 2\" << std::endl << frames->at(1)->T_cam_world();\n\n  stereo_->compute(frames->at(0), frames->at(1));\n  if(frames->at(0)->numLandmarks() < options_.init_min_features)\n    return InitResult::kFailure;\n  return InitResult::kSuccess;\n}\n\nInitResult ArrayInitGeometric::addFrameBundle(\n    const FrameBundlePtr& frames_cur)\n{\n\n#ifdef SVO_USE_OPENGV\n  /*\n  InitResult res = trackBundleFeatures(frames_cur);\n  if(res != InitResult::kSuccess)\n    return res;\n\n  // Create vector of bearing vectors and camera correspondences\n  opengv::bearingVectors_t f_cur; f_cur.reserve(frames_cur->numFeatures());\n  opengv::bearingVectors_t f_ref; f_ref.reserve(f_cur.size());\n  std::vector<int> cam_correspondences_cur, cam_correspondences_ref;\n  cam_correspondences_cur.reserve(f_cur.size());\n  cam_correspondences_ref.reserve(f_ref.size());\n  opengv::translations_t cam_translations;\n  opengv::rotations_t cam_rotations;\n  for(size_t cam_id=0; cam_id<frames_cur->size(); ++cam_id)\n  {\n    cam_translations.push_back(frames_cur->at(cam_id)->T_imu_cam().getPosition());\n    cam_rotations.push_back(frames_cur->at(cam_id)->T_imu_cam().getRotationMatrix());\n    const FramePtr& frame_cur = frames_cur->at(cam_id);\n    const FramePtr& frame_ref = frames_ref_->at(cam_id);\n    for(size_t i = 0; i < frame_cur->numFeatures(); ++i)\n    {\n      if(ref_masks_[cam_id](i))\n      {\n        f_cur.push_back(frame_cur->f_vec_.col(i));\n        cam_correspondences_cur.push_back(cam_id);\n        f_ref.push_back(frame_ref->f_vec_.col(i));\n        cam_correspondences_ref.push_back(cam_id);\n      }\n    }\n  }\n\n  // set prior\n  Matrix3d R_cur_ref =\n      frames_cur->at(0)->T_imu_world().getRotationMatrix()\n      *frames_ref_->at(0)->T_world_imu().getRotationMatrix();\n\n  // Compute model\n  opengv::relative_pose::NoncentralRelativeAdapter adapter(\n        f_cur, f_ref, cam_correspondences_cur, cam_correspondences_ref,\n        cam_translations, cam_rotations, R_cur_ref);\n\n  // Create RANSAC object\n  typedef opengv::sac_problems::relative_pose::NoncentralRelativePoseSacProblem Problem;\n  opengv::sac::Ransac<Problem> ransac;\n\n  // Create Problem\n  auto algorithm = opengv::sac_problems::relative_pose::NoncentralRelativePoseSacProblem::SIXPT;\n  boost::shared_ptr<Problem> problem_ptr(new Problem(adapter, algorithm));\n\n  // Run RANSAC:\n  static double inlier_threshold = 1.0 - std::cos(frames_cur->at(0)->getAngleError(options_.reproj_error_thresh));\n  ransac.sac_model_ = problem_ptr;\n  ransac.threshold_ = inlier_threshold;\n  ransac.max_iterations_ = 500;\n  ransac.probability_ = 0.995;\n  ransac.computeModel(1);\n\n  VLOG(5) << \"RANSAC:\" << std::endl\n          << \"# Iter = \" << ransac.iterations_ << std::endl\n          << \"# Inliers = \" << ransac.inliers_.size() << std::endl\n          << \"Model = \" << ransac.model_coefficients_;\n\n  // enough inliers?\n  if(ransac.inliers_.size() < options_.init_min_inliers)\n   return InitResult::kFailure;\n\n  Matrix3d R = ransac.model_coefficients_.leftCols(3);\n  T_cur_from_ref_ = Transformation(\n        Quaternion(R),\n        ransac.model_coefficients_.rightCols(1));\n\n\n  std::cout << \"T_cur_ref computed = \" << T_cur_from_ref_ << std::endl;\n  T_cur_from_ref_ = Transformation(Quaternion(), Vector3d(-0.6, 0, 0));\n  std::cout << \"T_cur_ref set = \" << T_cur_from_ref_ << std::endl;\n\n  // for every frame individually\n  for(size_t cam_id=0; cam_id<frames_cur->size(); ++cam_id)\n  {\n    const FramePtr& frame_cur = frames_cur->at(cam_id);\n    const FramePtr& frame_ref = frames_ref_->at(cam_id);\n\n    frame_cur->T_f_w_ =\n        frame_cur->T_cam_imu()*T_cur_from_ref_*frame_ref->T_imu_world();\n    Transformation T_cur_ref = frame_cur->T_f_w_*frame_ref->T_f_w_.inverse();\n\n\n    // Triangulate\n    std::vector<Vector3d, Eigen::aligned_allocator<Vector3d> > points_in_cur;\n    //TODO(cfo)\n    //initialization_utils::triangulatePoints(\n    //      frame_cur, frame_ref, T_cur_ref,  options_.reproj_error_thresh, points_in_cur);\n\n    VLOG(3) << \"-- CAMERA \" << frame_cur->cam()->getLabel()\n            << \": inliers verified = \" << points_in_cur.size();\n\n     TODO(cfo)\n    // Rescale 3D points and add to features\n    Transformation T_world_cur = frame_cur->T_f_w_.inverse();\n    auto it_cur = frame_cur->fts_.begin();\n    auto it_ref = frame_ref->fts_.begin();\n    auto it_xyz = points_in_cur.begin();\n    for(; it_cur != frame_cur->fts_.end(); ++it_cur, ++it_ref, ++it_xyz)\n    {\n      const Vector3d xyz_in_world = T_world_cur * (*it_xyz);\n      PointPtr new_point(new Point(xyz_in_world));\n      new_point->addObservation(frame_ref, *it_ref);\n      new_point->addObservation(frame_cur, *it_cur);\n      (*it_ref)->point = new_point;\n      (*it_cur)->point = new_point;\n    }\n  }\n  if(options_.verbose)\n    std::cout << \"Total triangulated points =  \" << frames_cur->nFts() << std::endl;\n\n  if(frames_cur->nFts() < options_.init_min_inliers)\n  {\n    SVO_WARN_STREAM(\"Init WARNING: \"<<options_.init_min_inliers<<\" inliers minimum required.\");\n    return InitResult::kFailure;\n  }\n\n  for(size_t i=0; i<frames_cur->size(); ++i)\n  {\n    initialization_utils::displayFeatureTracks(frames_cur->at(i), frames_ref_->at(i));\n\n  }\n  */\n\n\n\n  return InitResult::kSuccess;\n\n#else\n  SVO_ERROR_STREAM(\"You need to compile SVO with OpenGV to use TwoPointInit!\");\n  return InitResult::kFailure;\n#endif\n}\n\nInitResult ArrayInitOptimization::addFrameBundle(\n    const FrameBundlePtr& frames_cur)\n{\n#ifdef SVO_USE_GTSAM\n\n  InitResult res = trackBundleFeatures(frames_cur);\n  if(res != InitResult::kSuccess)\n    return res;\n\n  gtsam::Cal3_S2::shared_ptr K(new gtsam::Cal3_S2(1.0, 1.0, 0.0, 0.0, 0.0));\n\n  gtsam::noiseModel::Isotropic::shared_ptr pixel_noise_base =\n      gtsam::noiseModel::Isotropic::Sigma(2, 1.0/frames_cur->at(0)->getErrorMultiplier());\n\n  gtsam::SharedNoiseModel pixel_noise =\n      gtsam::noiseModel::Robust::Create(\n        //gtsam::noiseModel::mEstimator::Tukey::Create(4.685), pixel_noise_base);\n        //gtsam::noiseModel::mEstimator::Fair::Create(1.3998), pixel_noise_base);\n        //gtsam::noiseModel::mEstimator::Cauchy::Create(0.1), pixel_noise_base);\n        //gtsam::noiseModel::mEstimator::Welsh::Create(2.9846), pixel_noise_base);\n        gtsam::noiseModel::mEstimator::Huber::Create(1.345), pixel_noise_base);\n\n  gtsam::NonlinearFactorGraph graph;\n  gtsam::Values initial_estimate;\n\n  // Add a prior on reference pose.\n  Matrix<double, 6, 1> refpose_prior_sigmas;\n  refpose_prior_sigmas << 0.0001, 0.0001, 0.0001, // rotation\n                          0.00001, 0.00001, 0.00001; // translation, 1mm\n  gtsam::noiseModel::Gaussian::shared_ptr pose_prior_noise =\n      gtsam::noiseModel::Diagonal::Sigmas(refpose_prior_sigmas);\n  Transformation T_world_refimu = frames_ref_->at(0)->T_world_imu();\n  gtsam::Pose3 pose_ref(\n        gtsam::Rot3(T_world_refimu.getRotationMatrix()),\n        gtsam::Point3(T_world_refimu.getPosition()));\n  graph.push_back(gtsam::PriorFactor<gtsam::Pose3>(\n                    gtsam::Symbol('x', 0), pose_ref, pose_prior_noise)); // add directly to graph\n\n  Matrix3d eye = Matrix3d::Identity();\n  gtsam::Pose3 T_prior(gtsam::Rot3(eye), Vector3d::Zero());\n  std::cout << \"Prior = \" << T_prior << std::endl;\n  Matrix<double, 6, 6> relpose_prior_info;\n  relpose_prior_info.setZero();\n  relpose_prior_info.block<3,3>(0,0) = Matrix3d::Identity()*1e8;\n  gtsam::noiseModel::Gaussian::shared_ptr T_prior_noise =\n      gtsam::noiseModel::Diagonal::Information(relpose_prior_info); // translation\n\n  // Add prior on relative pose between first two frames\n  graph.push_back(gtsam::BetweenFactor<gtsam::Pose3>(\n                    gtsam::Symbol('x', 0), gtsam::Symbol('x', 1),\n                    T_prior, T_prior_noise));\n\n  // Add values for reference and current frame. init at same pose.\n  initial_estimate.insert(gtsam::Symbol('x', 0), pose_ref);\n  initial_estimate.insert(gtsam::Symbol('x', 1), pose_ref);\n\n  /* TODO(cfo)\n   *\n  // Add values for 3D points. Initialize with random depth.\n  int point_id = 0;\n  for(const FramePtr& frame : frames_ref_->frames_)\n  {\n    for(const FeaturePtr& ftr : frame->fts_)\n    {\n      double depth = depth_at_current_frame_\n          +vk::Sample::gaussian(depth_at_current_frame_/3.0);\n      Vector3d xyz = frame->T_world_cam()*(ftr->f*depth);\n      initial_estimate.insert(gtsam::Symbol('l', point_id++), gtsam::Point3(xyz));\n    }\n  }\n\n  // Add reprojection factors.\n  int point_id_ref = 0;\n  typedef gtsam::GenericProjectionFactor<gtsam::Pose3, gtsam::Point3, gtsam::Cal3_S2> ProjectionFactor;\n  for(const FramePtr& frame : frames_ref_->frames_)\n  {\n    gtsam::Pose3 T_imu_cam(frame->T_imu_cam().getRotationMatrix(),\n                           frame->T_imu_cam().getPosition());\n    for(const FeaturePtr& ftr : frame->fts_)\n    {\n      graph.push_back(\n            ProjectionFactor(\n              gtsam::Point2(vk::project2(ftr->f)), pixel_noise, gtsam::Symbol('x', 0),\n              gtsam::Symbol('l', point_id_ref++), K, T_imu_cam));\n    }\n  }\n  int point_id_cur = 0;\n  for(const FramePtr& frame : frames_cur->frames_)\n  {\n    gtsam::Pose3 T_imu_cam(frame->T_imu_cam().getRotationMatrix(),\n                           frame->T_imu_cam().getPosition());\n    for(const FeaturePtr& ftr : frame->fts_)\n    {\n      graph.push_back(\n            ProjectionFactor(\n              gtsam::Point2(vk::project2(ftr->f)), pixel_noise, gtsam::Symbol('x', 1),\n              gtsam::Symbol('l', point_id_cur++), K, T_imu_cam));\n    }\n  }\n  SVO_ASSERT(point_id_cur == point_id_ref,\n             \"Initialization: Cur and Ref Bundles don't have same amount of features.\");\n  SVO_ASSERT(point_id_cur == point_id,\n             \"Initialization: Cur Bundle and Values don't have same amount of features.\");\n\n  // solve\n  gtsam::LevenbergMarquardtParams params;\n  params.verbosity = gtsam::LevenbergMarquardtParams::ERROR;\n  gtsam::Values result = gtsam::LevenbergMarquardtOptimizer(graph, initial_estimate, params).optimize();\n  //result.print(\"Final results:\\n\");\n  std::cout << \"initial error = \" << graph.error(initial_estimate) << std::endl;\n  std::cout << \"final error = \" << graph.error(result) << std::endl;\n\n  gtsam::Pose3 T_ref = result.at<gtsam::Pose3>(gtsam::Symbol('x',0));\n  gtsam::Pose3 T_cur = result.at<gtsam::Pose3>(gtsam::Symbol('x',1));\n\n  T_world_refimu = Transformation(T_ref.rotation().toQuaternion(), T_ref.translation().vector());\n  Transformation T_world_curimu(T_cur.rotation().toQuaternion(), T_cur.translation().vector());\n\n  Transformation T_ref_cur = T_world_refimu.inverse()*T_world_curimu;\n  std::cout << T_ref_cur.inverse() << std::endl;\n\n  for(size_t i=0; i<frames_cur->size(); ++i)\n  {\n    initialization_utils::displayFeatureTracks(frames_cur->at(i), frames_ref_->at(i));\n  }\n  */\n  return InitResult::kSuccess;\n\n#else\n  SVO_ERROR_STREAM(\"You need to compile SVO with GTSAM to use ArrayInitOptimization!\");\n  return InitResult::kFailure;\n#endif\n}\n\n\nnamespace initialization_utils {\n\nbool triangulateAndInitializePoints(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref,\n    const Transformation& T_cur_ref,\n    const double reprojection_threshold,\n    const double depth_at_current_frame,\n    const size_t min_inliers_threshold,\n    AbstractInitialization::FeatureMatches& matches_cur_ref)\n{\n  Positions points_in_cur;\n  initialization_utils::triangulatePoints(\n        *frame_cur, *frame_ref, T_cur_ref, reprojection_threshold, matches_cur_ref, points_in_cur);\n\n  if(matches_cur_ref.size() < min_inliers_threshold)\n  {\n    LOG(WARNING) << \"Init WARNING: \" <<min_inliers_threshold <<\" inliers minimum required. \"\n                 << \"Have only \" << matches_cur_ref.size();\n    return false;\n  }\n\n  // Scale 3D points to given scene depth and initialize Points\n  initialization_utils::rescaleAndInitializePoints(\n        frame_cur, frame_ref, matches_cur_ref, points_in_cur, T_cur_ref, depth_at_current_frame);\n\n  return true;\n}\n\nvoid triangulatePoints(\n    const Frame& frame_cur,\n    const Frame& frame_ref,\n    const Transformation& T_cur_ref,\n    const double reprojection_threshold,\n    AbstractInitialization::FeatureMatches& matches_cur_ref,\n    Positions& points_in_cur)\n{\n  points_in_cur.resize(Eigen::NoChange, frame_cur.num_features_);\n  const Transformation T_ref_cur = T_cur_ref.inverse();\n  std::vector<size_t> outliers;\n  size_t num_inliers = 0;\n  const double angle_threshold =\n      frame_cur.getAngleError(reprojection_threshold);\n  for(size_t i = 0; i < matches_cur_ref.size(); ++i)\n  {\n    BearingVector f_cur = frame_cur.f_vec_.col(matches_cur_ref[i].first);\n    BearingVector f_ref = frame_ref.f_vec_.col(matches_cur_ref[i].second);\n    // TODO(cfo): should take reference to eigen\n    const Position xyz_in_cur =\n        vk::triangulateFeatureNonLin(\n          T_cur_ref.getRotationMatrix(), T_cur_ref.getPosition(), f_cur, f_ref);\n\n    const double e1 = angleError(f_cur, xyz_in_cur);\n    const double e2 = angleError(f_ref, T_ref_cur * xyz_in_cur);\n    if(e1 > angle_threshold || e2 > angle_threshold ||\n       (frame_cur.cam()->getType() == Camera::Type::kPinhole &&\n           xyz_in_cur.z() < 0.0))\n    {\n      outliers.push_back(i);\n    }\n    else\n    {\n      points_in_cur.col(num_inliers) = xyz_in_cur;\n      ++num_inliers;\n    }\n  }\n  if(!outliers.empty())\n  {\n    svo::common::container_helpers::eraseIndicesFromVector(\n        outliers, &matches_cur_ref);\n  }\n}\n\nvoid rescaleAndInitializePoints(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref,\n    const AbstractInitialization::FeatureMatches& matches_cur_ref,\n    const Positions& points_in_cur,\n    const Transformation& T_cur_ref,\n    const double depth_at_current_frame)\n{\n  // compute scale factor\n  std::vector<double> depth_vec;\n  for(size_t i = 0; i < matches_cur_ref.size(); ++i)\n  {\n    depth_vec.push_back(points_in_cur.col(i).norm());\n  }\n  CHECK_GT(depth_vec.size(), 1u);\n  const double scene_depth_median = vk::getMedian(depth_vec);\n  const double scale = depth_at_current_frame / scene_depth_median;\n\n  // reset pose of current frame to have right scale\n  frame_cur->T_f_w_ = T_cur_ref * frame_ref->T_f_w_;\n  frame_cur->T_f_w_.getPosition() =\n      - frame_cur->T_f_w_.getRotation().rotate(\n        frame_ref->pos() + scale * (frame_cur->pos() - frame_ref->pos()));\n\n  // Rescale 3D points and add to features\n  Transformation T_world_cur = frame_cur->T_f_w_.inverse();\n  for(size_t i = 0; i < matches_cur_ref.size(); ++i)\n  {\n    const Vector3d xyz_in_world = T_world_cur * (points_in_cur.col(i) * scale);\n    const int point_id_cur = frame_cur->track_id_vec_(matches_cur_ref[i].first);\n    const int point_id_ref = frame_ref->track_id_vec_(matches_cur_ref[i].second);\n    CHECK_EQ(point_id_cur, point_id_ref);\n    PointPtr new_point(new Point(point_id_cur, xyz_in_world));\n    frame_cur->landmark_vec_.at(matches_cur_ref[i].first) = new_point;\n    frame_ref->landmark_vec_.at(matches_cur_ref[i].second) = new_point;\n    new_point->addObservation(frame_ref, matches_cur_ref[i].second);\n    new_point->addObservation(frame_cur, matches_cur_ref[i].first);\n  }\n\n  SVO_INFO_STREAM(\"Init: Triangulated \" << matches_cur_ref.size() << \" points\");\n}\n\nvoid displayFeatureTracks(\n    const FramePtr& frame_cur,\n    const FramePtr& frame_ref)\n{\n  cv::Mat img_rgb(frame_cur->img().size(), CV_8UC3);\n  cv::cvtColor(frame_cur->img(), img_rgb, cv::COLOR_GRAY2RGB);\n\n  /* TODO(cfo)\n  for(size_t i=0; i<frame_cur->fts_.size(); ++i)\n  {\n    const FeaturePtr& ftr_cur = frame_cur->fts_.at(i);\n    const FeaturePtr& ftr_ref = frame_ref->fts_.at(i);\n    cv::line(img_rgb,\n             cv::Point2f(ftr_cur->px[0], ftr_cur->px[1]),\n             cv::Point2f(ftr_ref->px[0], ftr_ref->px[1]),\n             cv::Scalar(0,0,255), 2);\n\n  }\n  */\n  cv::imshow(frame_cur->cam_->getLabel().c_str(), img_rgb);\n  cv::waitKey(0);\n}\n\nAbstractInitialization::UniquePtr makeInitializer(\n    const InitializationOptions& init_options,\n    const FeatureTrackerOptions& tracker_options,\n    const DetectorOptions& detector_options,\n    const CameraBundle::Ptr& cams)\n{\n  AbstractInitialization::UniquePtr initializer;\n  switch(init_options.init_type)\n  {\n    case InitializerType::kHomography:\n      initializer.reset(new HomographyInit(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kTwoPoint:\n      initializer.reset(new TwoPointInit(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kFivePoint:\n      initializer.reset(new FivePointInit(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kOneShot:\n      initializer.reset(new OneShotInit(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kStereo:\n      initializer.reset(new StereoInit(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kArrayGeometric:\n      initializer.reset(new ArrayInitGeometric(init_options, tracker_options, detector_options, cams));\n      break;\n    case InitializerType::kArrayOptimization:\n      initializer.reset(new ArrayInitOptimization(init_options, tracker_options, detector_options, cams));\n      break;\n    default:\n      LOG(FATAL) << \"Initializer type not known.\";\n  }\n  return initializer;\n}\n\nvoid copyBearingVectors(\n    const Frame& frame_cur,\n    const Frame& frame_ref,\n    const AbstractInitialization::FeatureMatches& matches_cur_ref,\n    AbstractInitialization::BearingVectors* f_cur,\n    AbstractInitialization::BearingVectors* f_ref)\n{\n  CHECK_NOTNULL(f_cur);\n  CHECK_NOTNULL(f_ref);\n  f_cur->reserve(matches_cur_ref.size());\n  f_ref->reserve(matches_cur_ref.size());\n  for(size_t i = 0; i < matches_cur_ref.size(); ++i)\n  {\n    f_cur->push_back(frame_cur.f_vec_.col(matches_cur_ref[i].first));\n    f_ref->push_back(frame_ref.f_vec_.col(matches_cur_ref[i].second));\n  }\n}\n\n} // namespace initialization_utils\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/io.cpp",
    "content": "#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\n// std\n#include <fstream>\n#include <iostream>\n#include <string>\n#include <unordered_set>\n#include <unordered_map>\n\n// svo\n#include <svo/io.h>\n#include <svo/global.h>\n#include <svo/map.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n\nnamespace svo {\nnamespace io {\n\nbool saveMap(\n    const MapPtr& map,\n    const std::string& save_dir,\n    const std::string& map_name)\n{\n  std::string filename = save_dir+\"/\"+map_name;\n  std::cout << \"save map to file \" << filename << std::endl;\n  YAML::Emitter out;\n  out << YAML::BeginMap\n      << YAML::Key << \"frames\" << YAML::Value\n      << YAML::BeginSeq;\n\n  // safe frames\n  for(const auto& keyval : map->keyframes_)\n  {\n    const FramePtr& frame = keyval.second;\n    const Vector3d& t = frame->T_world_cam().getPosition();\n    const Eigen::Quaterniond& q = frame->T_world_cam().getRotation().toImplementation();\n    out << YAML::BeginMap\n        << YAML::Key << \"frame_id\" << YAML::Value << frame->id()\n        << YAML::Key << \"cam_name\" << YAML::Value << frame->cam()->getLabel()\n        << YAML::Key << \"timestamp\" << YAML::Value << frame->getTimestampNSec()\n        << YAML::Key << \"T_world_cam\" << YAML::Value << YAML::Flow\n        << YAML::BeginSeq\n          << t.x() << t.y() << t.z()\n          << q.x() << q.y() << q.z() << q.w()\n        << YAML::EndSeq\n        //<< YAML::Comment(\"tx ty tz qx qy qz qw\")\n        << YAML::EndMap;\n  }\n  out << YAML::EndSeq\n      << YAML::Key << \"features\" << YAML::Value\n      << YAML::BeginSeq;\n\n  // safe features\n  CHECK(false) << \"fix implementation.\";\n  std::unordered_set<PointPtr> points;\n  /*\n  for(const auto& keyval : map->keyframes_)\n  {\n    for(const FeaturePtr& ftr : keyval.second->fts_)\n    {\n      if(ftr->point->type() == Point::TYPE_CORNER_SEED\n         || ftr->point->type() == Point::TYPE_EDGELET_SEED )\n      {\n        continue;\n      }\n\n      out << YAML::BeginMap\n          << YAML::Key << \"frame_id\" << YAML::Value << keyval.second->id()\n          << YAML::Key << \"point_id\" << YAML::Value << ftr->point->id()\n          << YAML::Key << \"px\" << YAML::Value << YAML::Flow\n          << YAML::BeginSeq\n            << ftr->px[0]\n            << ftr->px[1]\n          << YAML::EndSeq\n          << YAML::Key << \"level\" << YAML::Value << ftr->level\n          << YAML::EndMap;\n      points.insert(ftr->point);\n    }\n  }\n  */\n\n  out << YAML::EndSeq\n      << YAML::Key << \"points\" << YAML::Value\n      << YAML::BeginSeq;\n\n  // safe points\n  for(const PointPtr point : points)\n  {\n    out << YAML::BeginMap\n        << YAML::Key << \"point_id\" << YAML::Value << point->id()\n        << YAML::Key << \"pos\" << YAML::Value << YAML::Flow\n        << YAML::BeginSeq\n          << point->pos_[0]\n          << point->pos_[1]\n          << point->pos_[2]\n        << YAML::EndSeq\n        << YAML::EndMap;\n  }\n\n  out << YAML::EndSeq;\n\n  // write to file\n  std::ofstream fout(filename.c_str());\n  if(!fout.is_open())\n    return false;\n  fout << out.c_str();\n  fout.close();\n  return true;\n}\n\nbool loadMap(\n    const std::string& load_dir,\n    MapPtr& map)\n{\n  // TODO: assume camera has name cam0 and is in cam_calib.yaml file\n  SVO_ERROR_STREAM(\"FIX LOAD CAMERA IMPLEMENTATION\");\n  CameraPtr cam;\n  /*\n  CameraPtr cam = vk::cameras::factory::loadFromYAML(\n        load_dir+\"/cam_calib.yaml\", \"cam0\");\n  */\n  if(cam == nullptr)\n    return false;\n  cam->printParameters(std::cout, \"Loaded camera:\");\n\n  map = std::make_shared<Map>();\n\n  const std::string map_filename(load_dir+\"/map.yaml\");\n  std::cout << \"loading map from file: \" << map_filename << std::endl;\n  YAML::Node data = YAML::LoadFile(map_filename);\n\n  // load frames\n  for(YAML::const_iterator it=data[\"frames\"].begin(); it!=data[\"frames\"].end(); ++it)\n  {\n    YAML::Node frame = *it;\n    Vector3d t_wc(frame[\"T_world_cam\"][0].as<double>(),\n                  frame[\"T_world_cam\"][1].as<double>(),\n                  frame[\"T_world_cam\"][2].as<double>());\n    Eigen::Quaterniond q_wc(frame[\"T_world_cam\"][6].as<double>(),\n                     frame[\"T_world_cam\"][3].as<double>(),\n                     frame[\"T_world_cam\"][4].as<double>(),\n                     frame[\"T_world_cam\"][5].as<double>());\n\n    FramePtr f = std::make_shared<Frame>(\n          frame[\"frame_id\"].as<int>(),\n          frame[\"timestamp\"].as<double>(),\n          cam,\n          Transformation(q_wc, t_wc));\n    map->addKeyframe(f);\n  }\n  std::cout << \"loaded \" << map->size() << \" frames.\" << std::endl;\n\n  // load points\n  std::unordered_map<int, PointPtr> points;\n  for(YAML::const_iterator it=data[\"points\"].begin(); it!=data[\"points\"].end(); ++it)\n  {\n    YAML::Node point = *it;\n    PointPtr p = std::make_shared<Point>(\n          point[\"point_id\"].as<int>(),\n          Vector3d(\n            point[\"pos\"][0].as<double>(),\n            point[\"pos\"][1].as<double>(),\n            point[\"pos\"][2].as<double>()));\n    points.insert(std::make_pair(point[\"point_id\"].as<int>(), p));\n  }\n  std::cout << \"loaded \" << points.size() << \" points.\" << std::endl;\n\n  // load features\n  size_t n=0;\n  for(YAML::const_iterator it=data[\"features\"].begin(); it!=data[\"features\"].end(); ++it)\n  {\n    YAML::Node ftr = *it;\n    PointPtr point = points.find(ftr[\"point_id\"].as<int>())->second;\n    FramePtr frame = map->getKeyframeById(ftr[\"frame_id\"].as<int>());\n    Eigen::Vector2d px(ftr[\"px\"][0].as<double>(), ftr[\"px\"][1].as<double>());\n    int level = ftr[\"level\"].as<int>();\n\n    Vector3d bearing_vector;\n    cam->backProject3(px, &bearing_vector);\n    CHECK(false);\n    /* TODO(cfo)\n    FeaturePtr f = std::make_shared<Feature>(\n          frame, px, bearing_vector.normalized(), level);\n    f->point = point;\n    frame->addFeature(f);\n    point->addObservation(frame, f);\n    ++n;\n    */\n  }\n  std::cout << \"loaded \" << n << \" features.\" << std::endl;\n  return true;\n}\n\n} // namespace io\n} // namespace svo\n"
  },
  {
    "path": "svo/src/map.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <set>\n#include <algorithm>\n#include <svo/map.h>\n#include <svo/common/point.h>\n#include <svo/common/frame.h>\n\nnamespace svo {\n\nMap::Map()\n  : last_added_kf_id_(-1)\n{}\n\nMap::~Map()\n{\n  reset();\n  SVO_INFO_STREAM(\"Map destructed\");\n}\n\nvoid Map::reset()\n{\n  keyframes_.clear();\n}\n\nvoid Map::removeKeyframe(const int frame_id)\n{\n  auto it_kf = keyframes_.find(frame_id);\n  const FramePtr& frame = it_kf->second;\n  for(size_t i = 0; i < frame->num_features_; ++i)\n  {\n    if(frame->landmark_vec_[i])\n    {\n      frame->landmark_vec_[i]->removeObservation(frame_id);\n      frame->landmark_vec_[i] = nullptr;\n    }\n  }\n  keyframes_.erase(it_kf);\n}\n\nvoid Map::safeDeletePoint(const PointPtr& pt)\n{\n  // Delete references to mappoints in all keyframes\n  for(const KeypointIdentifier& obs : pt->obs_)\n  {\n    if(const FramePtr& frame = obs.frame.lock())\n    {\n      frame->deleteLandmark(obs.keypoint_index_);\n    }\n    else\n      SVO_ERROR_STREAM(\"could not lock weak_ptr<Frame> in Map::safeDeletePoint\");\n  }\n  pt->obs_.clear();\n}\n\nvoid Map::addPointToTrash(const PointPtr& pt)\n{\n  std::lock_guard<std::mutex> lock(points_to_delete_mutex_);\n  points_to_delete_.push_back(pt);\n}\n\nvoid Map::emptyPointsTrash()\n{\n  std::lock_guard<std::mutex> lock(points_to_delete_mutex_);\n  SVO_DEBUG_STREAM(\"Deleting \" << points_to_delete_.size() << \" point from trash\");\n  for(auto& pt : points_to_delete_)\n  {\n    safeDeletePoint(pt);\n  }\n  points_to_delete_.clear();\n}\n\nvoid Map::addKeyframe(const FramePtr& new_keyframe)\n{\n  VLOG(100) << \"Adding keyframe to map. Frame-Id = \" << new_keyframe->id();\n  keyframes_.insert(std::make_pair(new_keyframe->id(), new_keyframe));\n  last_added_kf_id_ = new_keyframe->id();\n}\n\nvoid Map::getOverlapKeyframes(\n    const FramePtr& frame,\n    std::vector<std::pair<FramePtr, double>>* close_kfs) const\n{\n  CHECK_NOTNULL(close_kfs);\n  for(const auto& kf : keyframes_)\n  {\n    // check first if Point is visible in the Keyframe, use therefore KeyPoints\n    for(const auto& keypoint : kf.second->key_pts_)\n    {\n      if(keypoint.first == -1)\n        continue;\n\n      if(frame->isVisible(keypoint.second))\n      {\n        close_kfs->push_back(\n              std::make_pair(kf.second,\n                             (frame->T_f_w_.getPosition()-kf.second->T_f_w_.getPosition()).norm()));\n        break; // this keyframe has an overlapping field of view -> add to close_kfs\n      }\n    }\n  }\n}\n\nvoid Map::getClosestNKeyframesWithOberlap(\n    const FramePtr& cur_frame,\n    const size_t num_frames,\n    std::vector<FramePtr>* close_kfs) const\n{\n  CHECK_NOTNULL(close_kfs);\n  std::vector<std::pair<FramePtr, double>> overlap_kfs;\n  getOverlapKeyframes(cur_frame, &overlap_kfs);\n  if(overlap_kfs.empty())\n    return;\n\n  size_t N = std::min(num_frames, overlap_kfs.size());\n  // Extract closest N frames.\n  std::nth_element(\n        overlap_kfs.begin(), overlap_kfs.begin()+N, overlap_kfs.end(),\n        [](const std::pair<FramePtr, double>& lhs,\n           const std::pair<FramePtr, double>& rhs)\n  { return lhs.second < rhs.second; });\n  overlap_kfs.resize(N);\n\n  close_kfs->reserve(num_frames);\n  std::transform(overlap_kfs.begin(), overlap_kfs.end(), std::back_inserter(*close_kfs),\n                 [](const std::pair<FramePtr, double>& p) { return p.first; });\n}\n\nFramePtr Map::getClosestKeyframe(const FramePtr& frame) const\n{\n  CHECK_NOTNULL(frame.get());\n  std::vector<std::pair<FramePtr, double>> close_kfs;\n  getOverlapKeyframes(frame, &close_kfs);\n  if(close_kfs.empty())\n    return nullptr;\n  std::sort(\n        close_kfs.begin(), close_kfs.end(),\n        [](const std::pair<FramePtr, double>& lhs,\n           const std::pair<FramePtr, double>& rhs)\n  { return lhs.second < rhs.second; });\n  if(close_kfs.at(0).first != frame)\n    return close_kfs.at(0).first;\n  if(close_kfs.size() == 1)\n    return nullptr;\n  return close_kfs.at(1).first;\n}\n\nFramePtr Map::getFurthestKeyframe(const Vector3d& pos) const\n{\n  FramePtr furthest_kf;\n  double maxdist = 0.0;\n  for(const auto& kf : keyframes_)\n  {\n    double dist = (kf.second->pos()-pos).norm();\n    if(dist > maxdist) {\n      maxdist = dist;\n      furthest_kf = kf.second;\n    }\n  }\n  return furthest_kf;\n}\n\nFramePtr Map::getKeyframeById(const int id) const\n{\n  auto it_kf = keyframes_.find(id);\n  if(it_kf == keyframes_.end())\n    return nullptr;\n  return it_kf->second;\n}\n\nvoid Map::getSortedKeyframes(std::vector<FramePtr>& kfs_sorted) const\n{\n  kfs_sorted.reserve(keyframes_.size());\n  std::transform(\n        keyframes_.begin(), keyframes_.end(), std::back_inserter(kfs_sorted),\n        [](const std::pair<int, FramePtr>& val)\n  { return val.second;} );\n  std::sort(\n        kfs_sorted.begin(), kfs_sorted.end(),\n        [](const FramePtr &left, const FramePtr &right)\n  { return left->id_ < right->id_; });\n}\n\nvoid Map::transform(const Matrix3d& R, const Vector3d& t, const double& s)\n{\n  for(const auto& kf : keyframes_)\n  {\n    Vector3d pos = s*R*kf.second->pos() + t;\n    Matrix3d rot = R*kf.second->T_f_w_.getRotation().inverse().getRotationMatrix();\n    kf.second->T_f_w_ = Transformation(Quaternion(rot), pos).inverse();\n    CHECK(false);\n    /* TODO(cfo)\n    for(const auto& ftr : kf.second->fts_)\n    {\n      if(ftr->point->last_published_ts_ == 0)\n        continue;\n      ftr->point->last_published_ts_ = 0;\n      ftr->point->pos_ = s*R*ftr->point->pos_ + t;\n    }\n    */\n  }\n}\n\nvoid Map::checkDataConsistency() const\n{\n  for(const auto& kf : keyframes_)\n  {\n    const FramePtr& frame = kf.second;\n\n    // check that feature-stuff has all same length\n    CHECK_EQ(frame->px_vec_.cols(), frame->f_vec_.cols());\n    CHECK_EQ(frame->px_vec_.cols(), frame->level_vec_.size());\n    CHECK_EQ(frame->px_vec_.cols(), frame->grad_vec_.cols());\n    CHECK_EQ(static_cast<size_t>(frame->px_vec_.cols()), frame->type_vec_.size());\n    CHECK_EQ(static_cast<size_t>(frame->px_vec_.cols()), frame->landmark_vec_.size());\n    CHECK_EQ(static_cast<size_t>(frame->px_vec_.cols()), frame->seed_ref_vec_.size());\n    CHECK_EQ(frame->px_vec_.cols(), frame->invmu_sigma2_a_b_vec_.cols());\n    CHECK_LE(frame->num_features_, static_cast<size_t>(frame->px_vec_.cols()));\n\n    // check features\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      if(frame->landmark_vec_[i])\n      {\n        // make sure that the 3d point has only one reference back\n        size_t ref_count = 0;\n        for(const KeypointIdentifier& o : frame->landmark_vec_[i]->obs_)\n        {\n          if(o.frame_id == frame->id())\n          {\n            ++ref_count;\n            const FramePtr obs_frame = o.frame.lock();\n            CHECK_EQ(obs_frame.get(), frame.get());\n          }\n        }\n        CHECK_EQ(ref_count, 1u);\n      }\n\n      CHECK((isSeed(frame->type_vec_[i]) && frame->landmark_vec_[i] == nullptr)\n            || !isSeed(frame->type_vec_[i]));\n      CHECK(frame->seed_ref_vec_[i].keyframe == nullptr);\n      CHECK(frame->seed_ref_vec_[i].seed_id == -1);\n    }\n  }\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo/src/patch_normal.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <algorithm>\n#include <glog/logging.h>\n#include <vikit/vision.h>\n#include <vikit/math_utils.h>\n#include <svo/frame.h>\n#include <svo/point.h>\n#include <svo/patch_normal.h>\n#include <opencv2/highgui/highgui.hpp>\n\nnamespace svo {\n\nconstexpr int PatchNormal::patch_halfsize_;\nconstexpr int PatchNormal::patch_size_;\nconstexpr int PatchNormal::patch_area_;\n\nPatchNormal::PatchNormal(const SolverOptions& solver_options)\n  : vk::solver::MiniLeastSquaresSolver<2, Vector2d, PatchNormal>(solver_options)\n  , display_(true)\n{\n  img_residuals_ = cv::Mat(patch_size_, patch_size_, CV_32F);\n}\n\nPatchNormal::SolverOptions PatchNormal::getDefaultSolverOptions()\n{\n  SolverOptions options;\n  options.strategy = vk::solver::Strategy::GaussNewton;\n  options.max_iter = 10;\n  options.eps = 0.000001;\n  return options;\n}\n\nvoid PatchNormal::run(\n    FeaturePtr ftr_ref,\n    double depth,\n    const FramePtr& frame_cur,\n    Vector3d& normal_ref,\n    Matrix2d& information)\n{\n  CHECK(ftr_ref);\n  CHECK(!ftr_ref->frame.expired());\n  CHECK(frame_cur);\n\n  reset();\n\n  have_ref_patch_cache_ = false;\n  ftr_ref_ = ftr_ref;\n  frame_cur_ = frame_cur;\n  depth_ = depth;\n  frame_ref_ = ftr_ref_->frame.lock();\n  CHECK(frame_ref_) << \"could not acquire weak_ptr\";\n  normal_ = normal_ref;\n  T_c_r_ = frame_cur_->T_f_w_*frame_ref_->T_f_w_.inverse();\n  n_meas_ = 0;\n\n  //setPrior(Vector2d::Zero(), information*0.25); // prior is zero because no update\n\n  // init orthogonal update vector\n  Vector3d tmp = Vector3d::UnitX();\n  if(normal_.y() < normal_.x())\n    tmp = Vector3d::UnitY();\n  update_x_vec_ = normal_.cross(tmp);\n  update_y_vec_ = normal_.cross(update_x_vec_);\n  update_x_vec_.normalize();\n  update_y_vec_.normalize();\n\n  std::cout << \"optimize\" << std::endl;\n  Vector2d params = Vector2d::Zero();\n  optimize(params);\n\n  // write output parameters\n  normal_ref = normal_+update_x_vec_*params[0]+update_y_vec_*params[1];\n  normal_ref.normalize();\n  information = H_;\n}\n\nvoid PatchNormal::precomputeJacobian()\n{\n  const cv::Mat& img_ref = frame_ref_->img();\n  const double focal_length = frame_ref_->getErrorMultiplier();\n\n  // create homography matrix\n  const Vector3d p = ftr_ref_->f*depth_;\n  //const Vector3d p_dir = p.normalized();\n  const Vector3d t = (frame_ref_->T_f_w_*frame_cur_->pos());\n  const Matrix3d A = (normal_.dot(p)*Matrix3d::Identity() - t*normal_.transpose());\n  const Matrix3d A_inv = A.inverse();\n\n  // projection derivative\n  Matrix<double,2,3> J_proj;\n  J_proj << 1, 0, -p[0]/p[2],\n            0, 1, -p[1]/p[2];\n\n  // derivative of A w.r.t, z\n  //const Matrix3d A_deriv_z = Matrix3d::Identity() * p_dir.dot(normal_);\n\n  // derivative of A w.r.t. orienatation change around x, y\n  const Matrix3d A_deriv_x = Matrix3d::Identity() * p.dot(update_x_vec_) - t*update_x_vec_.transpose();\n  const Matrix3d A_deriv_y = Matrix3d::Identity() * p.dot(update_y_vec_) - t*update_y_vec_.transpose();\n\n  Vector2d px_ref_origin(ftr_ref_->px-Vector2d(patch_halfsize_, patch_halfsize_));\n  for(int y=0; y<patch_size_; ++y)\n  {\n    for(int x=0; x<patch_size_; ++x)\n    {\n      const Vector2d px_ref = px_ref_origin+Vector2d(x,y);\n      Vector3d f_ref;\n      frame_ref_->cam()->backProject3(px_ref, &f_ref);\n      f_ref.normalize();\n\n      Matrix<double,3,2> A_deriv;\n      //Matrix3d A_deriv;\n      //A_deriv.col(0) = A_deriv_z*f_ref;\n      A_deriv.col(0) = A_deriv_x*f_ref;\n      A_deriv.col(1) = A_deriv_y*f_ref;\n\n      //const Matrix<double,2,3> J = focal_length*J_proj*A_inv*A_deriv;\n      const Matrix2d J = focal_length*J_proj*(-A_inv)*A_deriv;\n\n      float dx = 0.5*(vk::interpolateMat_8u(img_ref, px_ref[0]+1, px_ref[1])\n                     -vk::interpolateMat_8u(img_ref, px_ref[0]-1, px_ref[1]));\n      float dy = 0.5*(vk::interpolateMat_8u(img_ref, px_ref[0], px_ref[1]+1)\n                     -vk::interpolateMat_8u(img_ref, px_ref[0], px_ref[1]-1));\n\n      jacobian_cache_.col(y*patch_size_+x) = -(J.row(0)*dx + J.row(1)*dy);\n    }\n  }\n  have_ref_patch_cache_ = true;\n}\n\ndouble PatchNormal::evaluateError(\n    const State& params,\n    HessianMatrix* H,\n    GradientVector* g)\n{\n  if(!have_ref_patch_cache_)\n    precomputeJacobian();\n\n  // compute the weights on the first iteration\n  /*\n  std::vector<float> errors;\n  if(compute_weight_scale)\n    errors.reserve(patch_area_);\n  */\n\n  double depth = depth_; //+params[0]; //*\n  //Vector3d normal = normal_+update_x_vec_*params[1]+update_y_vec_*params[2];\n  Vector3d normal = normal_+update_x_vec_*params[0]+update_y_vec_*params[1];\n  //normal.normalize();\n\n  float chi2 = 0.0;\n  const CameraPtr cam_ref = frame_ref_->cam_;\n\n  const double I = 0.01; //DiagonalMatrix<double,3,3> I(0.01, 0.01, 0.01); // 1/(pixel noise)^2\n\n  // compute current homography\n  Vector3d t = (frame_ref_->T_f_w_*frame_cur_->pos());\n  const Matrix3d H_c_r = T_c_r_.getRotationMatrix()*\n      (normal.dot(ftr_ref_->f*depth)*Matrix3d::Identity()\n       - t*normal.transpose());\n\n  const Vector2d px_origin(ftr_ref_->px-Vector2d(patch_halfsize_, patch_halfsize_));\n  const cv::Mat& img_ref = frame_ref_->img_pyr_[0];\n  const cv::Mat& img_cur = frame_cur_->img_pyr_[0];\n  const CameraPtr cam_cur = frame_cur_->cam_;\n  for(int y=0; y<patch_size_; ++y)\n  {\n    for(int x=0; x<patch_size_; ++x)\n    {\n      // apply homography to find corresponding point\n      const Vector2d px_ref(px_origin+Vector2d(x,y));\n      Vector3d f_ref;\n      cam_ref->backProject3(px_ref, &f_ref);\n      Vector3d f_cur(H_c_r*f_ref);\n      Vector2d px_cur;\n      cam_cur->project3(f_cur, &px_cur);\n\n      // check if the projected point lies within the image boundaries\n      if(px_cur[0]<1 || px_cur[1]<1 || px_cur[0]+2>=img_cur.cols || px_cur[1]+2>=img_cur.rows)\n        continue;\n\n      // compute residual\n      const float intensity_ref = img_ref.at<uint8_t>((int) px_ref[1], (int) px_ref[0]);\n      const float intensity_cur = vk::interpolateMat_8u(img_cur, px_cur[0], px_cur[1]);\n      const float e = intensity_cur - intensity_ref;\n\n      // used to compute scale for robust cost\n      /*\n      if(compute_weight_scale)\n         errors.push_back(fabsf(e));\n      */\n\n      // robustification\n      float weight = 1.0;\n      /*\n      if(use_weights_) {\n        weight = weight_function_->weight(e/scale_);\n      }\n      */\n\n      chi2 += e*e*weight;\n      n_meas_++;\n\n      if(display_)\n        img_residuals_.at<float>(y,x) = e;\n\n      if(H && g)\n      {\n        Vector2d J = jacobian_cache_.col(y*patch_size_+x);\n        *H += J*I*J.transpose()*weight;\n        *g -= I*J*e*weight;\n      }\n    }\n  }\n\n  // compute the weights on the first iteration\n  /*\n  if(compute_weight_scale && iter_ == 0)\n    scale_ = scale_estimator_->compute(errors);\n  */\n\n  return chi2/(n_meas_*n_meas_);\n}\n\nvoid PatchNormal::update(\n    const State& param_old,\n    const UpdateVector& dx,\n    State& param_new)\n{\n  param_new = param_old+dx;\n}\n\nvoid PatchNormal::applyPrior(const State& current_model)\n{\n  H_.noalias() += I_prior_;\n  g_.noalias() += I_prior_*(current_model-prior_);\n}\n\nvoid PatchNormal::startIteration()\n{}\n\nvoid PatchNormal::finishIteration()\n{\n  if(display_)\n  {\n    cv::imshow(\"residuals\", img_residuals_/255*10);\n    cv::waitKey(0);\n  }\n}\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo/src/pose_optimizer.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <stdexcept>\n#include <vikit/math_utils.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/pose_optimizer.h>\n#include <svo/common/seed.h>\n\nnamespace svo {\n\nPoseOptimizer::PoseOptimizer(SolverOptions solver_options)\n  : vk::solver::MiniLeastSquaresSolver<6, Transformation, PoseOptimizer>(solver_options)\n{}\n\nPoseOptimizer::SolverOptions PoseOptimizer::getDefaultSolverOptions()\n{\n  SolverOptions options;\n  options.strategy = vk::solver::Strategy::GaussNewton;\n  options.max_iter = 10;\n  options.eps = 0.000001;\n  return options;\n}\n\nvoid PoseOptimizer::setRotationPrior(const Quaternion& R_frame_world, double lambda)\n{\n  Transformation T_cur_world_prior(R_frame_world, Vector3d::Zero());\n  Matrix6d Information = Matrix6d::Zero();\n  Information.bottomRightCorner<3,3>() = Matrix3d::Identity();\n  prior_lambda_ = lambda;\n  setPrior(T_cur_world_prior, Information);\n}\n\nsize_t PoseOptimizer::run(const FrameBundle::Ptr& frame_bundle, double reproj_thresh_px)\n{\n  CHECK(!frame_bundle->empty()) << \"PoseOptimizer: FrameBundle is empty\";\n  CHECK_GT(frame_bundle->numFeatures(), 0u) << \"PoseOptimizer: No features in frames\";\n\n  focal_length_ = frame_bundle->at(0)->getErrorMultiplier();\n  frame_bundle_ = frame_bundle;\n  Transformation T_imu_world = frame_bundle->at(0)->T_imu_world();\n\n  // Check the scale of the errors.\n  std::vector<float> start_errors;\n  evaluateErrorImpl(T_imu_world, nullptr, nullptr, &start_errors);\n  measurement_sigma_ = scale_estimator_.compute(start_errors);\n  VLOG(5) << \"Initial measurement sigma:\" << measurement_sigma_;\n\n  // Run Gauss Newton optimization.\n  optimize(T_imu_world);\n\n  for(const FramePtr& frame : frame_bundle->frames_)\n  {\n    frame->T_f_w_ = frame->T_cam_imu()*T_imu_world;\n  }\n\n  // Remove Measurements with too large reprojection error\n  size_t n_deleted_edges = 0, n_deleted_corners = 0;\n  std::vector<double> final_errors;\n  for(const FramePtr& f : frame_bundle->frames_)\n  {\n    removeOutliers(reproj_thresh_px, f.get(),\n                   &final_errors, &n_deleted_edges, &n_deleted_corners);\n  }\n\n  VLOG(5) <<\"PoseOptimzer: drop \" << n_deleted_corners << \" corner outliers and \"\n          << n_deleted_edges << \" edgelet outliers out of \"\n          << n_meas_ << \" measurements.\";\n\n  // TODO(zzc): for bearing vector difference, can we also save errors in pixels?\n  // save statistics\n  double error_scale = (err_type_ == ErrorType::kUnitPlane) ? focal_length_ : 1.0;\n  stats_.reproj_error_before = vk::getMedian<float>(start_errors)*error_scale;\n  stats_.reproj_error_after = vk::getMedian<double>(final_errors)*error_scale;\n\n  // trace to file\n  if(ofs_reproj_errors_.is_open())\n  {\n    for(auto i : start_errors)\n      ofs_reproj_errors_ << i*error_scale << \", \";\n    ofs_reproj_errors_ << std::endl;\n    for(auto i : final_errors)\n      ofs_reproj_errors_ << i*error_scale << \", \";\n    ofs_reproj_errors_ << std::endl;\n  }\n\n  return n_meas_-n_deleted_edges-n_deleted_corners;\n}\n\ndouble PoseOptimizer::evaluateError(\n    const Transformation& T_imu_world,\n    HessianMatrix* H,\n    GradientVector* g)\n{\n  return evaluateErrorImpl(T_imu_world, H, g, nullptr);\n}\n\ndouble PoseOptimizer::evaluateErrorImpl(\n    const Transformation& T_imu_world,\n    HessianMatrix* H,\n    GradientVector* g,\n    std::vector<float>* unwhitened_errors)\n{\n  double chi2_error_sum = 0.0;\n\n  // compute the weights on the first iteration\n  if(unwhitened_errors)\n    unwhitened_errors->reserve(frame_bundle_->numFeatures());\n\n  for(const FramePtr& frame : frame_bundle_->frames_)\n  {\n    const Transformation T_cam_imu = frame->T_cam_imu();\n\n    // compute residual and update normal equation\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      Position xyz_world;\n      if(frame->landmark_vec_[i] != nullptr)\n      {\n        xyz_world = frame->landmark_vec_[i]->pos_;\n      }\n      else if(isSeed(frame->type_vec_[i]))\n      {\n        const SeedRef& ref = frame->seed_ref_vec_[i];\n        xyz_world = ref.keyframe->T_world_cam()\n            * ref.keyframe->getSeedPosInFrame(ref.seed_id);\n      }\n      else\n        continue;\n\n      const int scale = (1 << frame->level_vec_(i));\n      double unwhitened_error, chi2_error;\n      double measurement_sigma = measurement_sigma_ * scale;\n      if(isEdgelet(frame->type_vec_[i]))\n      {\n        // Edgelets should have less weight than corners.\n        constexpr double kEdgeletSigmaExtraFactor = 2.0;\n        measurement_sigma *= kEdgeletSigmaExtraFactor;\n        if(err_type_ == ErrorType::kUnitPlane)\n          pose_optimizer_utils::calculateEdgeletResidualUnitPlane(\n                frame->f_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n                T_imu_world, T_cam_imu, measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n        else if(err_type_ == ErrorType::kImagePlane)\n          pose_optimizer_utils::calculateEdgeletResidualImagePlane(\n                frame->px_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n                T_imu_world, T_cam_imu, *frame->cam(), measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n        else if(err_type_ == ErrorType::kBearingVectorDiff)\n          pose_optimizer_utils::calculateEdgeletResidualBearingVectorDiff(\n                frame->px_vec_.col(i), frame->f_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n                T_imu_world, T_cam_imu, *frame->cam(), measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n      }\n      else\n      {\n        if(err_type_ == ErrorType::kUnitPlane)\n          pose_optimizer_utils::calculateFeatureResidualUnitPlane(\n                frame->f_vec_.col(i), xyz_world, T_imu_world, T_cam_imu,\n                measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n        else if(err_type_ == ErrorType::kImagePlane)\n        {\n          pose_optimizer_utils::calculateFeatureResidualImagePlane(\n                frame->px_vec_.col(i), xyz_world, T_imu_world, T_cam_imu, *frame->cam(),\n                measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n        }\n        else if(err_type_ == ErrorType::kBearingVectorDiff)\n        {\n          pose_optimizer_utils::calculateFeatureResidualBearingVectorDiff(\n                frame->f_vec_.col(i), xyz_world, T_imu_world, T_cam_imu,\n                measurement_sigma, robust_weight_,\n                &unwhitened_error, &chi2_error, H, g);\n        }\n      }\n      if(unwhitened_errors)\n      {\n        CHECK_GE(unwhitened_error, 0.0);\n        unwhitened_errors->push_back(unwhitened_error / scale);\n      }\n      chi2_error_sum += chi2_error;\n      ++n_meas_;\n    } // for each feature\n  } // for each frame\n\n  return chi2_error_sum;\n}\n\nvoid PoseOptimizer::removeOutliers(\n    const double reproj_err_threshold,\n    Frame* frame,\n    std::vector<double>* reproj_errors,\n    std::size_t* n_deleted_edges,\n    std::size_t* n_deleted_corners)\n{\n  CHECK_NOTNULL(frame);\n  CHECK_NOTNULL(reproj_errors);\n  CHECK_NOTNULL(n_deleted_edges);\n  CHECK_NOTNULL(n_deleted_corners);\n\n  // calculate threhold for once\n  static double threshold_uplane = reproj_err_threshold / focal_length_;\n  static double threshold_bearing_diff = std::fabs(2 * std::sin(0.5*frame->getAngleError(reproj_err_threshold)));\n\n  double outlier_threshold = reproj_err_threshold; // image error\n  if(err_type_ == ErrorType::kUnitPlane)\n    outlier_threshold = threshold_uplane;\n  else if(err_type_ == ErrorType::kBearingVectorDiff)\n    outlier_threshold = threshold_bearing_diff;\n\n  reproj_errors->reserve(frame->num_features_);\n  for(size_t i = 0; i < frame->num_features_; ++i)\n  {\n    Position xyz_world;\n    if(frame->landmark_vec_[i] != nullptr)\n    {\n      xyz_world = frame->landmark_vec_[i]->pos_;\n    }\n    else if(isSeed(frame->type_vec_[i]))\n    {\n      const SeedRef& ref = frame->seed_ref_vec_[i];\n      xyz_world = ref.keyframe->T_world_cam()\n          * ref.keyframe->getSeedPosInFrame(ref.seed_id);\n    }\n    else\n      continue;\n\n    // calculate residual according to different feature type and residual\n    Transformation T_imu_world = frame->T_imu_world();\n    Transformation T_cam_imu = frame->T_cam_imu();\n    double unwhitened_error, chi2_error;\n    if(isEdgelet(frame->type_vec_[i]))\n    {\n      if(err_type_ == ErrorType::kUnitPlane)\n      {\n         pose_optimizer_utils::calculateEdgeletResidualUnitPlane(\n              frame->f_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n              T_imu_world, T_cam_imu,\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n      else if(err_type_ == ErrorType::kBearingVectorDiff)\n      {\n        pose_optimizer_utils::calculateEdgeletResidualBearingVectorDiff(\n              frame->px_vec_.col(i), frame->f_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n              T_imu_world, T_cam_imu, *frame->cam(),\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n      else if(err_type_ == ErrorType::kImagePlane)\n      {\n        pose_optimizer_utils::calculateEdgeletResidualImagePlane(\n              frame->px_vec_.col(i), xyz_world, frame->grad_vec_.col(i),\n              T_imu_world, T_cam_imu, *frame->cam(),\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n    }\n    else\n    {\n      if(err_type_ == ErrorType::kUnitPlane)\n      {\n        pose_optimizer_utils::calculateFeatureResidualUnitPlane(\n              frame->f_vec_.col(i), xyz_world, T_imu_world, T_cam_imu,\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n      else if(err_type_ == ErrorType::kBearingVectorDiff)\n      {\n        pose_optimizer_utils::calculateFeatureResidualBearingVectorDiff(\n              frame->f_vec_.col(i), xyz_world, T_imu_world, T_cam_imu,\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n      else if(err_type_ == ErrorType::kImagePlane)\n      {\n        pose_optimizer_utils::calculateFeatureResidualImagePlane(\n              frame->px_vec_.col(i), xyz_world, T_imu_world, T_cam_imu, *frame->cam(),\n              0.0, robust_weight_, &unwhitened_error, &chi2_error, nullptr, nullptr);\n      }\n    }\n    unwhitened_error *= 1.0 / (1 << frame->level_vec_(i));\n    reproj_errors->push_back(unwhitened_error);\n    if(std::fabs(unwhitened_error) > outlier_threshold)\n    {\n      if(isEdgelet(frame->type_vec_[i]))\n        ++(*n_deleted_edges);\n      else\n        ++(*n_deleted_corners);\n\n      frame->type_vec_[i] = FeatureType::kOutlier;\n      frame->seed_ref_vec_[i].keyframe.reset();\n      frame->landmark_vec_[i] = nullptr; // delete landmark observation\n    }\n  }\n}\n\nvoid PoseOptimizer::update(\n    const State& T_imuold_world,\n    const UpdateVector& dx,\n    State& T_imunew_world)\n{\n  T_imunew_world = Transformation::exp(dx)*T_imuold_world;\n\n  // we need to normalize from time to time, otherwise rounding errors sum up\n  T_imunew_world.getRotation().toImplementation().normalize();\n}\n\nvoid PoseOptimizer::applyPrior(const State& T_cur_from_world)\n{\n  if(iter_ == 0)\n  {\n     I_prior_ = Matrix6d::Zero();\n     I_prior_.bottomRightCorner<3,3>() = Matrix3d::Identity();\n\n    double H_max_diag = 0;\n    //double tau = 1e-4;\n    for(size_t j=3; j<6; ++j)\n      H_max_diag = std::max(H_max_diag, std::fabs(H_(j,j)));\n    I_prior_ *= H_max_diag*prior_lambda_;\n    //std::cout << \"prior_lambda (pose_opt): \" << prior_lambda_ << std::endl;\n    //std::cout << H_max_diag << std::endl;\n    if(solver_options_.verbose)\n    {\n      std::cout << \"applying rotation prior, I = \" << H_max_diag*prior_lambda_ << std::endl;\n    }\n  }\n\n  H_.noalias() += I_prior_;\n  //Jres_.noalias() += I_prior_*Transformation::log(prior_*T_cur_from_world.inverse());\n  g_.noalias() -= I_prior_*Transformation::log(T_cur_from_world*prior_.inverse());\n  //std::cout << \"information matrix = \" << I_prior_ << std::endl;\n}\n\nnamespace pose_optimizer_utils {\n\nvoid calculateFeatureResidualUnitPlane(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Prediction error.\n  Eigen::Vector2d e = vk::project2(f) - vk::project2(xyz_in_cam);\n  if(unwhitened_error)\n    *unwhitened_error = e.norm();\n\n  // Whiten error: R*e, where R is the square root of information matrix (1/sigma).\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // M-estimator weighting\n  double weight = robust_weight.weight(e.norm());\n\n  // Compute log-likelihood : 1/(2*sigma^2)*(z-h(x))^2 = 1/2*e'R'*R*e\n  *chi2_error = 0.5*e.squaredNorm()*weight;\n\n  if(H && g)\n  {\n    // compute jacobian\n    PoseOptimizer::Matrix26d J_proj;\n    Frame::jacobian_xyz2uv_imu(T_cam_imu, xyz_in_imu, J_proj);\n    J_proj *= R;\n    H->noalias() += J_proj.transpose()*J_proj*weight;\n    g->noalias() -= J_proj.transpose()*e*weight;\n  }\n}\n\nvoid calculateFeatureResidualImagePlane(\n    const Eigen::Ref<const Keypoint>& px,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Prediction error.\n  Eigen::Matrix<double, 2, 3> J_cam;\n  Keypoint px_est;\n  cam.project3(xyz_in_cam, &px_est, &J_cam);\n  Eigen::Vector2d e = px - px_est;\n  if(unwhitened_error)\n    *unwhitened_error = e.norm();\n\n  // Whiten error: R*e, where R is the square root of information matrix (1/sigma).\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // M-estimator weighting\n  double weight = robust_weight.weight(e.norm());\n\n  // Compute log-likelihood : 1/(2*sigma^2)*(z-h(x))^2 = 1/2*e'R'*R*e\n  *chi2_error = 0.5*e.squaredNorm()*weight;\n\n  if(H && g)\n  {\n    // compute jacobian\n    PoseOptimizer::Matrix26d J_proj;\n    Frame::jacobian_xyz2img_imu(T_cam_imu, xyz_in_imu, J_cam, J_proj);\n    J_proj = (-1.0)*J_proj;\n    J_proj *= R;\n    H->noalias() += J_proj.transpose()*J_proj*weight;\n    g->noalias() -= J_proj.transpose()*e*weight;\n  }\n}\n\nvoid calculateFeatureResidualBearingVectorDiff(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Prediction error.\n  Vector3d e = f - xyz_in_cam.normalized();\n  if(unwhitened_error)\n    *unwhitened_error = e.norm();\n\n  // Whitened error.\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // M-estimator.\n  double weight = robust_weight.weight(e.norm());\n\n  // Chi2 error (likelihood).\n  *chi2_error = 0.5*e.squaredNorm()*weight;\n\n  if(H && g)\n  {\n    // compute jacobian\n    PoseOptimizer::Matrix36d J_bearing;\n    Frame::jacobian_xyz2f_imu(T_cam_imu, xyz_in_imu, J_bearing);\n    PoseOptimizer::Matrix36d J_proj = (-1.0) * J_bearing;\n    J_proj *= R;\n    H->noalias() += J_proj.transpose()*J_proj*weight;\n    g->noalias() -= J_proj.transpose()*e*weight;\n  }\n}\n\nvoid calculateEdgeletResidualUnitPlane(\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Compute error.\n  double e = grad.dot(vk::project2(f) - vk::project2(xyz_in_cam));\n  if(unwhitened_error)\n    *unwhitened_error = std::abs(e);\n\n  // Whiten error.\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // Robustification.\n  double weight = robust_weight.weight(e);\n\n  // Chi2 error (likelihood).\n  *chi2_error = 0.5*e*e*weight;\n\n  if(H && g)\n  {\n    // Compute Jacobian.\n    PoseOptimizer::Matrix26d J_proj;\n    Frame::jacobian_xyz2uv_imu(T_cam_imu, xyz_in_imu, J_proj);\n    PoseOptimizer::Vector6d J = grad.transpose()*J_proj;\n    J *= R;\n    H->noalias() += J*J.transpose()*weight;\n    g->noalias() -= J*e*weight;\n  }\n}\n\nvoid calculateEdgeletResidualImagePlane(\n    const Eigen::Ref<const Keypoint>& px,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Prediction error.\n  Eigen::Matrix<double, 2, 3> J_cam;\n  Keypoint px_est;\n  cam.project3(xyz_in_cam, &px_est, &J_cam);\n  double e = grad.dot(px - px_est);\n  if(unwhitened_error)\n    *unwhitened_error = std::abs(e);\n\n  // Whiten error: R*e, where R is the square root of information matrix (1/sigma).\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // M-estimator weighting.\n  double weight = robust_weight.weight(e);\n\n  // Chi2 error, i.e. log-likelihood : 1/(2*sigma^2)*(z-h(x))^2 = 1/2*e'R'*R*e\n  *chi2_error = 0.5*e*e*weight;\n\n  if(H && g)\n  {\n    // Compute Jacobian.\n    PoseOptimizer::Matrix26d J_proj;\n    Frame::jacobian_xyz2img_imu(T_cam_imu, xyz_in_imu, J_cam, J_proj);\n    PoseOptimizer::Vector6d J = grad.transpose() * (-1.0) * J_proj;\n    J *= R;\n    H->noalias() += J * J.transpose() * weight;\n    g->noalias() -= J * e * weight;\n  }\n}\n\n// NOTE: current implementation basically scales the residual on\n//       the image plane to the unit sphere. This involves the calculation\n//       of projection functions and Jacobians, which is not efficient.\nvoid calculateEdgeletResidualBearingVectorDiff(\n    const Eigen::Ref<const Keypoint>& px,\n    const Eigen::Ref<const BearingVector>& f,\n    const Position& xyz_in_world,\n    const Eigen::Ref<const GradientVector>& grad,\n    const Transformation& T_imu_world,\n    const Transformation& T_cam_imu,\n    const svo::Camera& cam,\n    double measurement_sigma,\n    const PoseOptimizer::RobustWeightFunction& robust_weight,\n    double* unwhitened_error,\n    double* chi2_error,\n    PoseOptimizer::HessianMatrix* H,\n    PoseOptimizer::GradientVector* g)\n{\n  const Vector3d xyz_in_imu(T_imu_world*xyz_in_world);\n  const Vector3d xyz_in_cam(T_cam_imu*xyz_in_imu);\n\n  // Prediction error.\n  Eigen::Matrix<double, 2, 3> J_cam;\n  Keypoint px_est;\n  cam.project3(xyz_in_cam, &px_est, &J_cam);\n  Vector2d px_diff = px - px_est;\n  double px_diff_norm2 = px_diff.squaredNorm();\n  BearingVector f_est = xyz_in_cam.normalized();\n  Vector3d f_diff = f - f_est;\n  double f_diff_norm2 = f_diff.squaredNorm();\n  double e_img = grad.dot(px_diff);\n  double scale_ratio = f_diff.norm() / px_diff.norm();\n  double e = e_img * scale_ratio;\n  if(unwhitened_error)\n    *unwhitened_error = std::abs(e);\n\n  // Whiten error: R*e, where R is the square root of information matrix (1/sigma).\n  double R = 1.0 / measurement_sigma;\n  e *= R;\n\n  // M-estimator weighting\n  double weight = robust_weight.weight(e);\n\n  // Chi2 error, i.e. log-likelihood : 1/(2*sigma^2)*(z-h(x))^2 = 1/2*e'R'*R*e\n  *chi2_error = 0.5*e*e*weight;\n\n  if(H && g)\n  {\n    // Compute Jacobian.\n    PoseOptimizer::Matrix26d J_proj;\n    Frame::jacobian_xyz2img_imu(T_cam_imu, xyz_in_imu, J_cam, J_proj);\n    PoseOptimizer::Matrix36d J_bearing;\n    Frame::jacobian_xyz2f_imu(T_cam_imu, xyz_in_imu, J_bearing);\n\n    PoseOptimizer::Vector6d J_img = grad.transpose() * (-1.0) * J_proj;\n\n    PoseOptimizer::Vector6d J_ftf = 2 * f_diff.transpose() * (-1.0) * J_bearing;\n    PoseOptimizer::Vector6d J_ptp = 2 * px_diff.transpose() * (-1.0) * J_proj;\n    PoseOptimizer::Vector6d J_ratio =\n        (0.5) * (1.0 / (scale_ratio)) * (1/(px_diff_norm2*px_diff_norm2)) *\n        (J_ftf*px_diff_norm2 - J_ptp*f_diff_norm2);\n\n    PoseOptimizer::Vector6d J = e_img * J_ratio + scale_ratio * J_img;\n\n    J *= R;\n    H->noalias() += J * J.transpose() * weight;\n    g->noalias() -= J * e * weight;\n  }\n}\n\n} // namespace pose_optimizer_utils\n} // namespace svo\n"
  },
  {
    "path": "svo/src/reprojector.cpp",
    "content": "#include <svo/reprojector.h>\n\n#include <set>\n#include <random> // std::mt19937\n#include <algorithm>\n#include <stdexcept>\n#include <future>\n\n#include <svo/common/camera.h>\n#include <svo/common/point.h>\n#include <svo/common/frame.h>\n#include <svo/common/occupancy_grid_2d.h>\n#include <svo/direct/matcher.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <vikit/math_utils.h>\n#include <vikit/timer.h>\n\nnamespace svo {\n\nReprojector::Reprojector(\n    const ReprojectorOptions& options,\n    size_t camera_index)\n  : options_(options)\n  , camera_index_(camera_index)\n{}\n\nvoid Reprojector::reprojectFrames(\n    const FramePtr& cur_frame,\n    const std::vector<FramePtr>& visible_kfs,\n    std::vector<PointPtr>& trash_points)\n{\n  CHECK_GT(options_.max_n_features_per_frame, 0u);\n  cur_frame->resizeFeatureStorage(options_.max_n_features_per_frame);\n\n  // Initialize grid\n  if(!grid_)\n  {\n    grid_.reset(\n          new OccupandyGrid2D(\n            options_.cell_size,\n            std::ceil(static_cast<double>(cur_frame->cam()->imageWidth())\n                      / static_cast<double>(options_.cell_size)),\n            std::ceil(static_cast<double>(cur_frame->cam()->imageHeight())\n                      / static_cast<double>(options_.cell_size))));\n  }\n  grid_->reset();\n  stats_.n_matches = 0;\n  stats_.n_trials = 0;\n  candidates_.clear();\n\n  // Reproject all map points of the closest N kfs with overlap. We only store\n  // in which grid cell the points fall.\n  candidates_.clear();\n  for(const FramePtr& ref_frame : visible_kfs)\n  {\n    // Try to reproject each map point that the other KF observes\n    for(size_t i = 0; i < ref_frame->num_features_; ++i)\n    {\n      if(ref_frame->landmark_vec_[i] == nullptr\n         || ref_frame->type_vec_[i] == FeatureType::kOutlier)\n        continue;\n\n      const PointPtr& point = ref_frame->landmark_vec_[i];\n\n      // first check if the point is valid.\n      if(point->n_failed_reproj_ > 10)\n      {\n        trash_points.push_back(point);\n        continue;\n      }\n\n      // make sure we project a point only once\n      if(point->last_projected_kf_id_.at(camera_index_) == cur_frame->id_)\n        continue;\n      point->last_projected_kf_id_[camera_index_] = cur_frame->id_;\n\n      // make sure the point has at least two observations\n      // ignore for the first 5 frames because in the benchmark node we may have\n      // initialized some 3d points from the ground-truth.\n      if(point->obs_.size() < 2 && options_.remove_unconstrained_points)\n      {\n        trash_points.push_back(point);\n        continue;\n      }\n\n      // finally, reproject point\n      Candidate candidate;\n      if(reprojector_utils::getCandidate(cur_frame, ref_frame, i, candidate))\n        candidates_.push_back(candidate);\n    }\n  }\n  VLOG(5) << \"There are \" << candidates_.size() << \" candidates from map points.\";\n\n  reprojector_utils::matchCandidates(\n        cur_frame, options_.max_n_features_per_frame,\n        options_.affine_est_offset, options_.affine_est_gain,\n        candidates_, *grid_, stats_);\n\n  VLOG(5) << \"Reproject landmarks in cam-\" << camera_index_\n          << \": trials = \" << stats_.n_trials << \", matches = \" << stats_.n_matches;\n  if(cur_frame->numFeatures() >= options_.max_n_features_per_frame\n     && options_.max_n_features_per_frame > 0)\n  {\n    reprojector_utils::setGridCellsOccupied(candidates_, *grid_);\n    // We don't return here because we want to set all the other grid cells occupied.\n  }\n\n  // ---------------------------------------------------------------------------\n  // if we don't have enough features, we reproject the converged seeds\n  candidates_.clear();\n  for(const FramePtr& ref_frame : visible_kfs)\n  {\n    for(size_t i = 0; i < ref_frame->num_features_; ++i)\n    {\n      if(isConvergedSeed(ref_frame->type_vec_[i]))\n      {\n        Candidate candidate;\n        if(reprojector_utils::getCandidate(cur_frame, ref_frame, i, candidate))\n          candidates_.push_back(candidate);\n      }\n    }\n  }\n  if((cur_frame->numFeatures() >= options_.max_n_features_per_frame\n      && options_.max_n_features_per_frame > 0))\n  {\n    // In this case we already have enough features but we just want to set the\n    // occupancy such that the depth filter doesn't extract too many new features.\n    // TODO(cfo): Actually, this should only be done if a new keyframe is selected.\n    reprojector_utils::setGridCellsOccupied(candidates_, *grid_);\n    candidates_.clear();\n    return;\n  }\n  reprojector_utils::matchCandidates(\n        cur_frame, options_.max_n_features_per_frame,\n        options_.affine_est_offset, options_.affine_est_gain,\n        candidates_, *grid_, stats_);\n  VLOG(5) << \"Reproject converged seeds in cam-\" << camera_index_\n          << \": trials = \" << stats_.n_trials << \", matches = \" << stats_.n_matches;\n  if((cur_frame->numFeatures() >= options_.max_n_features_per_frame\n      && options_.max_n_features_per_frame > 0)\n     || !options_.reproject_unconverged_seeds)\n  {\n    reprojector_utils::setGridCellsOccupied(candidates_, *grid_);\n    candidates_.clear();\n    return;\n  }\n\n  // ---------------------------------------------------------------------------\n  // if we still don't have enough features, reproject the unconverged seeds\n  candidates_.clear();\n  for(const FramePtr& ref_frame : visible_kfs)\n  {\n    for(size_t i = 0; i < ref_frame->num_features_; ++i)\n    {\n      if(isUnconvergedSeed(ref_frame->type_vec_[i]))\n      {\n        Candidate candidate;\n        if(reprojector_utils::getCandidate(cur_frame, ref_frame, i, candidate))\n          candidates_.push_back(candidate);\n      }\n    }\n  }\n  reprojector_utils::matchCandidates(\n        cur_frame, options_.max_n_features_per_frame,\n        options_.affine_est_offset, options_.affine_est_gain,\n        candidates_, *grid_, stats_);\n  VLOG(5) << \"Reproject unconverged seeds in cam-\" << camera_index_\n          << \": trials = \" << stats_.n_trials << \", matches = \" << stats_.n_matches;\n  if(cur_frame->numFeatures() >= options_.max_n_features_per_frame\n     && options_.max_n_features_per_frame > 0)\n  {\n    reprojector_utils::setGridCellsOccupied(candidates_, *grid_);\n    candidates_.clear();\n    return;\n  }\n}\n\nnamespace reprojector_utils {\n\nvoid sortCandidates(\n    Reprojector::Candidates& candidates)\n{\n  std::sort(candidates.begin(), candidates.end(),\n            [](const Reprojector::Candidate& lhs, const Reprojector::Candidate& rhs)\n  {\n    if(lhs.type > rhs.type\n       || (lhs.type == rhs.type && lhs.n_reproj > rhs.n_reproj)\n       || (lhs.type == rhs.type && lhs.n_reproj == rhs.n_reproj && lhs.score > rhs.score)) // TODO(check)\n      return true;\n    return false;\n  });\n}\n\nvoid matchCandidates(\n    const FramePtr& frame,\n    const size_t max_n_features_per_frame,\n    const bool affine_est_offset,\n    const bool affine_est_gain,\n    Reprojector::Candidates& candidates,\n    OccupandyGrid2D& grid,\n    Reprojector::Statistics& stats)\n{\n  sortCandidates(candidates);\n  Matcher matcher;\n  matcher.options_.affine_est_offset_ = affine_est_offset;\n  matcher.options_.affine_est_gain_ = affine_est_gain;\n  int i = 0;\n  for(Reprojector::Candidate& candidate : candidates)\n  {\n    ++i;\n    size_t grid_index =\n        grid.getCellIndex(candidate.cur_px.x(),candidate.cur_px.y(), 1);\n    if(max_n_features_per_frame > 0 && grid.isOccupied(grid_index))\n      continue;\n\n    ++stats.n_trials;\n    FeatureWrapper feature_wrapper = frame->getEmptyFeatureWrapper();\n    if(matchCandidate(frame, candidate, matcher, feature_wrapper))\n    {\n      ++stats.n_matches;\n      ++frame->num_features_;\n      grid.setOccupied(grid_index);\n      if(max_n_features_per_frame > 0\n         && frame->num_features_ >= max_n_features_per_frame)\n        break;\n    }\n  }\n  candidates.erase(candidates.begin(), candidates.begin()+i);\n}\n\nbool matchCandidate(\n    const FramePtr& frame,\n    Reprojector::Candidate& c,\n    Matcher& matcher,\n    FeatureWrapper& feature)\n{\n  GradientVector grad_ref;\n\n  // direct matching\n  CHECK_NOTNULL(c.ref_frame.get());\n  CHECK_LT(c.ref_index, c.ref_frame->num_features_);\n  int track_id = -1;\n  if(c.ref_frame->landmark_vec_.at(c.ref_index) == nullptr)\n  {\n    FeatureWrapper ref_ftr = c.ref_frame->getFeatureWrapper(c.ref_index);\n    if(isConvergedSeed(c.type))\n    {\n      const FloatType ref_depth = c.ref_frame->getSeedDepth(c.ref_index);\n      Matcher::MatchResult res =\n          matcher.findMatchDirect(*c.ref_frame, *frame, ref_ftr, ref_depth, c.cur_px);\n      if(res != Matcher::MatchResult::kSuccess)\n        return false;\n    }\n    else if(isUnconvergedSeed(c.type))\n    {\n      // TODO: make convergence threshold a parameter\n      if(!depth_filter_utils::updateSeed(\n           *frame, *c.ref_frame, c.ref_index, matcher, 200.0, false, false))\n        return false;\n    }\n    else\n      CHECK(false) << \"Seed type unknown\";\n\n    grad_ref = ref_ftr.grad;\n    track_id = ref_ftr.track_id;\n    feature.seed_ref.keyframe = c.ref_frame;\n    feature.seed_ref.seed_id = c.ref_index;\n  }\n  else\n  {\n    const PointPtr& point = c.ref_frame->landmark_vec_[c.ref_index];\n    FramePtr ref_frame;\n    size_t ref_feature_index;\n    if(!point->getCloseViewObs(frame->pos(), ref_frame, ref_feature_index))\n      return false;\n    FeatureWrapper ref_ftr = ref_frame->getFeatureWrapper(ref_feature_index);\n    CHECK_NOTNULL(ref_ftr.landmark.get()); // debug\n    const FloatType ref_depth = (ref_frame->pos() - ref_ftr.landmark->pos()).norm();\n    Matcher::MatchResult res = matcher.findMatchDirect(*ref_frame, *frame, ref_ftr, ref_depth, c.cur_px);\n    if(res != Matcher::MatchResult::kSuccess)\n    {\n      point->n_failed_reproj_++;\n      return false; // TODO(cfo): We should return match result and write in statistics.\n    }\n    point->n_succeeded_reproj_ += 1;\n    grad_ref = ref_ftr.grad;\n    feature.landmark = point;\n    track_id = point->id();\n  }\n\n\n  // Set edgelet direction, check if is consistent.\n  if(isEdgelet(c.type))\n  {\n    GradientVector g_predicted = (matcher.A_cur_ref_ * grad_ref).normalized();\n    feature.grad = g_predicted;\n    /*\n    double angle = feature_detection_utils::getAngleAtPixelUsingHistogram(\n          frame->img_pyr_[matcher.search_level_],\n          (matcher.px_cur_ / (1<<matcher.search_level_)).cast<int>(), 4);\n    feature.grad = GradientVector(std::cos(angle), std::sin(angle));\n\n    constexpr double thresh = std::cos(30.0/180.0*3.81);\n    if(std::abs(feature.grad.dot(g_predicted)) > thresh)\n      return false;\n    */\n  }\n\n  // Here we add a reference in the feature and frame to the 3D point, the other way\n  // round is only done if this frame is selected as keyframe.\n  feature.type = c.type;\n  feature.px = matcher.px_cur_;\n  feature.f = matcher.f_cur_;\n  feature.level = matcher.search_level_;\n  feature.track_id = track_id;\n  feature.score = c.score;\n  return true;\n}\n\nbool getCandidate(\n    const FramePtr& cur_frame,\n    const FramePtr& ref_frame,\n    const size_t& ref_index,\n    Reprojector::Candidate& candidate)\n{\n  Position xyz_world = Position::Zero();\n  int n_reproj = 0;\n  if(ref_frame->landmark_vec_[ref_index] != nullptr)\n  {\n    const PointPtr& point = ref_frame->landmark_vec_[ref_index];\n    xyz_world = point->pos();\n    n_reproj =\n        point->n_succeeded_reproj_ - point->n_failed_reproj_;\n  }\n  else\n  {\n    xyz_world = ref_frame->T_world_cam() * ref_frame->getSeedPosInFrame(ref_index);\n  }\n\n  Keypoint px;\n  if(!projectPointAndCheckVisibility(cur_frame, xyz_world, &px))\n    return false;\n\n  candidate = Reprojector::Candidate(\n        ref_frame, ref_index, px, n_reproj, ref_frame->score_vec_[ref_index],\n        ref_frame->type_vec_[ref_index]);\n\n  return true;\n}\n\nbool projectPointAndCheckVisibility(\n    const FramePtr& frame,\n    const Eigen::Vector3d& xyz,\n    Eigen::Vector2d* px)\n{\n  CHECK_NOTNULL(px);\n\n  // transform point xyz to bearing vector f in camera frame\n  const Eigen::Vector3d f = frame->T_f_w_ * xyz;\n\n  // compute where the point projects and check visibility\n  // TODO: insert reasonable clipping distance\n  if(!frame->cam()->project3(f, px).isKeypointVisible())\n    return false;\n  const Eigen::Vector2i pxi = px->cast<int>();\n  constexpr int kPatchSize = 8;\n  if(!frame->cam()->isKeypointVisibleWithMargin(pxi, kPatchSize))\n    return false;\n  return true;\n}\n\nvoid setGridCellsOccupied(\n    const Reprojector::Candidates& candidates,\n    OccupandyGrid2D& grid)\n{\n  for(auto candidate : candidates)\n  {\n    size_t grid_index = grid.getCellIndex(candidate.cur_px.x(), candidate.cur_px.y(), 1);\n    grid.setOccupied(grid_index);\n  }\n}\n\n} // namespace reprojector_utils\n} // namespace svo\n"
  },
  {
    "path": "svo/src/stereo_triangulation.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#include <numeric>\n#include <svo/direct/matcher.h>\n#include <svo/common/point.h>\n#include <svo/common/frame.h>\n#include <svo/stereo_triangulation.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/tracker/feature_tracker.h>\n\nnamespace svo {\n\nStereoTriangulation::StereoTriangulation(\n    const StereoTriangulationOptions& options,\n    const AbstractDetector::Ptr& feature_detector)\n  : options_(options)\n  , feature_detector_(feature_detector)\n{ ; }\n\nvoid StereoTriangulation::compute(const FramePtr& frame0,\n                                  const FramePtr& frame1)\n{\n  // Check if there is something to do\n  if(frame0->numLandmarks() >= options_.triangulate_n_features)\n  {\n    VLOG(5) << \"Calling stereo triangulation with sufficient number of features\"\n        << \" has no effect.\";\n    return;\n  }\n\n  // Detect new features.\n  Keypoints new_px;\n  Levels new_levels;\n  Scores new_scores;\n  Gradients new_grads;\n  FeatureTypes new_types;\n  const size_t max_n_features = feature_detector_->grid_.size();\n  feature_detector_->detect(\n        frame0->img_pyr_, frame0->getMask(), max_n_features, new_px,\n        new_scores, new_levels, new_grads, new_types);\n  if(new_px.cols() == 0)\n  {\n    SVO_ERROR_STREAM(\"Stereo Triangulation: No features detected.\");\n    return;\n  }\n\n  // Compute and normalize all bearing vectors.\n  Bearings new_f;\n  frame_utils::computeNormalizedBearingVectors(new_px, *frame0->cam(), &new_f);\n\n  // Add features to first frame.\n  const long n_old = static_cast<long>(frame0->numFeatures());\n  const long n_new = new_px.cols();\n  frame0->resizeFeatureStorage(\n        frame0->num_features_ + static_cast<size_t>(n_new));\n  frame0->px_vec_.middleCols(n_old, n_new) = new_px;\n  frame0->f_vec_.middleCols(n_old, n_new) = new_f;\n  frame0->grad_vec_.middleCols(n_old, n_new) = new_grads;\n  frame0->score_vec_.segment(n_old, n_new) = new_scores;\n  frame0->level_vec_.segment(n_old, n_new) = new_levels;\n  frame0->num_features_ += static_cast<size_t>(n_new);\n  frame0->type_vec_.insert(\n        frame0->type_vec_.begin()+n_old, new_types.cbegin(), new_types.cend());\n\n  // We only want a limited number of features. Therefore, we create a random\n  // vector of indices that we will process.\n  std::vector<size_t> indices(static_cast<size_t>(n_new));\n  std::iota(indices.begin(), indices.end(), n_old);\n  long n_corners = std::count_if(\n        new_types.begin(), new_types.end(),\n        [](const FeatureType& t) { return t==FeatureType::kCorner; });\n\n  // shuffle twice before we prefer corners!\n  std::random_shuffle(indices.begin(), indices.begin()+n_corners);\n  std::random_shuffle(indices.begin()+n_corners, indices.end());\n\n  // now for all maximum corners, initialize a new seed\n  size_t n_succeded = 0, n_failed = 0;\n  const size_t n_desired =\n      options_.triangulate_n_features - frame0->numLandmarks();\n  //note: we checked already at start that n_desired will be larger than 0\n\n  // reserve space for features in second frame\n  if(frame1->num_features_ + n_desired > frame1->landmark_vec_.size())\n  {\n    frame1->resizeFeatureStorage(frame1->num_features_ + n_desired);\n  }\n\n  Matcher matcher;\n  matcher.options_.max_epi_search_steps = 500;\n  matcher.options_.subpix_refinement = true;\n  const Transformation T_f1f0 = frame1->T_cam_body_*frame0->T_body_cam_;\n  for(const size_t &i_ref : indices)\n  {\n    matcher.options_.align_1d = isEdgelet(frame0->type_vec_[i_ref]); // TODO(cfo): check effect\n    FloatType depth = 0.0;\n    FeatureWrapper ref_ftr = frame0->getFeatureWrapper(i_ref);\n    Matcher::MatchResult res =\n            matcher.findEpipolarMatchDirect(\n                *frame0, *frame1, T_f1f0, ref_ftr, options_.mean_depth_inv,\n                options_.min_depth_inv, options_.max_depth_inv, depth);\n\n    if(res == Matcher::MatchResult::kSuccess)\n    {\n      const Position xyz_world = frame0->T_world_cam()\n          * (frame0->f_vec_.col(static_cast<int>(i_ref)) * depth);\n      PointPtr new_point(new Point(xyz_world));\n      frame0->landmark_vec_[i_ref] = new_point;\n      frame0->track_id_vec_(static_cast<int>(i_ref)) = new_point->id();\n      new_point->addObservation(frame0, i_ref);\n\n      const int i_cur = static_cast<int>(frame1->num_features_);\n      frame1->type_vec_[static_cast<size_t>(i_cur)] = ref_ftr.type;\n      frame1->level_vec_[i_cur] = ref_ftr.level;\n      frame1->px_vec_.col(i_cur) = matcher.px_cur_;\n      frame1->f_vec_.col(i_cur) = matcher.f_cur_;\n      GradientVector g = matcher.A_cur_ref_*ref_ftr.grad;\n      frame1->grad_vec_.col(i_cur) = g.normalized();\n      frame1->landmark_vec_[static_cast<size_t>(i_cur)] = new_point;\n      frame1->track_id_vec_(i_cur) = new_point->id();\n      new_point->addObservation(frame1, static_cast<size_t>(i_cur));\n      frame1->num_features_++;\n      ++n_succeded;\n    }\n    else\n    {\n      ++n_failed;\n    }\n    if(n_succeded >= n_desired)\n      break;\n  }\n  VLOG(20) << \"Stereo: Triangulated \" << n_succeded << \" features,\"\n           << n_failed << \" failed.\";\n}\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo_backend/CATKIN_IGNORE",
    "content": ""
  },
  {
    "path": "svo_backend/CMakeLists.txt",
    "content": "project(svo_backend)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple()\n\ninclude(SvoSetup)\n\nset(SOURCES\n  src/backend_optimizer.cpp\n  include/svo/backend/backend_optimizer.h\n  src/graph_manager.cpp\n  include/svo/backend/graph_manager.h\n  src/backend_interface.cpp\n  include/svo/backend/backend_interface.h\n  #src/smart_factors.cpp\n  include/svo/backend/smart_factors_fwd.h\n#  src/backend_factory.cpp\n#  include/svo/backend/backend_factory.h\n#  src/backend_visualizer.cpp\n#  include/svo/backend/backend_visualizer.h\n  include/svo/backend/backend_types.h\n)\n\ncs_add_library(${PROJECT_NAME} ${SOURCES})\n\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_backend/dependencies.yaml",
    "content": "repositories:\n  gtsam:\n    type: git\n    url: git@github.com:uzh-rpg/gtsam.git\n    version: develop\n  gtsam_catkin:\n    type: git\n    url: git@github.com:ethz-asl/gtsam_catkin.git\n    version: master\n"
  },
  {
    "path": "svo_backend/include/svo/backend/backend_interface.h",
    "content": "#pragma once\n\n#include <svo/abstract_bundle_adjustment.h>\n#include <svo/backend/backend_types.h>\n#include <vikit/performance_monitor.h>\n\nnamespace svo {\n\n// fwd\nclass BackendOptimizer;\nclass GraphManager;\nclass ImuHandler;\nstruct GraphManagerOptions;\nstruct OptimizerBackendOptions;\n\nstruct BackendInterfaceOptions\n{\n  std::string trace_dir = \"/tmp\";\n  int isam_wait_time_ms = 2;            ///< Time we wait for iSAM to release lock.\n  bool add_imu_factors = false;\n  size_t n_frames_in_init_ba = 8u;\n  bool use_smart_factors = false;\n  size_t min_num_obs = 2u;\n};\n\nenum class EstimatorState {\n  kUninitialized,\n  kInitialBundleAdjustment,\n  kRunning\n};\n\nclass BackendInterface : public AbstractBundleAdjustment\n{\npublic:\n\n  typedef std::shared_ptr<BackendInterface> Ptr;\n\n  BackendInterfaceOptions options_;\n\n  // modules\n  std::shared_ptr<BackendOptimizer> optimizer_;\n  std::shared_ptr<GraphManager> graph_;\n  std::shared_ptr<ImuHandler> imu_handler_;\n\n  // state\n  EstimatorState estimator_state_ = EstimatorState::kUninitialized;\n  ViNodeState last_state_;\n  BundleId last_added_index_;\n  int64_t last_added_frame_stamp_ns_;\n  BundleId last_loaded_estimate_index_;\n  size_t num_frames_in_backend_ = 0u;\n\n  BackendInterface(\n      const BackendInterfaceOptions& options,\n      const GraphManagerOptions& graph_manager_options,\n      const OptimizerBackendOptions& optimizer_options);\n\n  ~BackendInterface() = default;\n\n  /// Invoke bundle adjustment.\n  virtual void bundleAdjustment(\n      const FrameBundlePtr& frame_bundle) override;\n\n  /// Update map with results from bundle adjustment.\n  virtual void loadMapFromBundleAdjustment(\n      const FrameBundlePtr& new_frames,\n      const FrameBundlePtr& last_frames,\n      const MapPtr& map) override;\n\n  /// Reset bundle adjustment\n  virtual void reset() override;\n\n  /// Bundle adjustment can run completely in parallel. Start the thread to do so.\n  virtual void startThread() override;\n\n  /// Stop and join the bundle adjustment thread\n  virtual void quitThread() override;\n\n\nprotected:\n\n  void initializeBackend();\n\n  void addVisualMeasurementsToGraph(\n      const FrameBundlePtr& frame_bundle);\n\n  void addInertialMeasurementsToGraph(\n      const FrameBundlePtr& frame_bundle);\n\n  void addInitialStateAndPriorsToGraph(\n      const BundleId& state_index,\n      const ViNodeState& state);\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/include/svo/backend/backend_optimizer.h",
    "content": "#pragma once\n\n#include <memory>\n#include <mutex>\n#include <thread>\n#include <condition_variable>\n#include <unordered_map>\n\n#include <svo/common/types.h>\n\n#include <gtsam/linear/NoiseModel.h>\n#include <gtsam/nonlinear/Values.h>\n#include <gtsam/nonlinear/ISAM2.h>\n#include <gtsam/geometry/Pose3.h>\n#include <gtsam/geometry/Point3.h>\n\nnamespace svo {\n\n// fwd\nclass GraphManager;\n\nstruct OptimizerBackendOptions\n{\n  size_t max_iterations_per_update = 10;\n  bool verbose = false;\n  bool output_errors = false;\n  std::string trace_dir = \"/tmp\";\n  double isam_relinearize_thresh = 0.1;\n  double isam_relinearize_skip = 10.0;\n  double isam_wildfire_thresh = 0.001;\n  bool isam_detailed_results = false;\n};\n\nclass BackendOptimizer\n{\npublic:\n  typedef std::shared_ptr<BackendOptimizer> Ptr;\n\n  BackendOptimizer(\n      const OptimizerBackendOptions& options,\n      std::shared_ptr<GraphManager>& graph);\n\n  virtual ~BackendOptimizer();\n\n  void reset();\n\n  void initialize();\n\n  void optimize();\n\n  OptimizerBackendOptions options_;\n  std::shared_ptr<gtsam::ISAM2> isam_;\n  std::shared_ptr<GraphManager> graph_;\n\n  // last computed estimate\n  std::mutex estimate_mut_;\n  gtsam::Values estimate_;\n  BundleId estimate_state_index_ = -1; // Id of last state in estimate.\n\n  // thread\n  std::mutex optimizer_cond_var_mut_;\n  std::condition_variable optimizer_condition_var_;\n  std::shared_ptr<std::thread> thread_;\n  bool quit_thread_ = false;\n  void startThread();\n  void quitThread();\n\n// protected -------------------------------------------------------------------\n\n  void threadLoop();\n  bool optimizeImpl();\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/include/svo/backend/backend_types.h",
    "content": "#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n\nnamespace svo {\n\n/// The state of a ViNode (pose, velocity and bias). \n/// From SWE.\nclass ViNodeState {\n public:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  explicit ViNodeState(const Transformation& T_W_B)\n      :  T_W_B_(T_W_B),\n         W_v_B_(Eigen::Vector3d::Zero()),\n         acc_bias_(Eigen::Vector3d::Zero()),\n         gyro_bias_(Eigen::Vector3d::Zero()) {}\n\n  ViNodeState()\n      :  W_v_B_(Eigen::Vector3d::Zero()),\n         acc_bias_(Eigen::Vector3d::Zero()),\n         gyro_bias_(Eigen::Vector3d::Zero()) {}\n\n  ViNodeState(const Transformation& T_W_B, const Eigen::Vector3d& W_v_B,\n              const Eigen::Vector3d& accelerometer_bias, const Eigen::Vector3d& gyro_bias)\n      : T_W_B_(T_W_B), W_v_B_(W_v_B),\n        acc_bias_(accelerometer_bias), gyro_bias_(gyro_bias) {}\n\n  virtual ~ViNodeState() {}\n\n  inline const Transformation& get_T_W_B() const { return T_W_B_; }\n  inline Transformation& get_T_W_B() { return T_W_B_; }\n  inline const Eigen::Vector3d& get_W_v_B() const { return W_v_B_; }\n  inline const Eigen::Vector3d& getAccBias() const { return acc_bias_; }\n  inline const Eigen::Vector3d& getGyroBias() const { return gyro_bias_; }\n\n  inline Eigen::Matrix<double, 6, 1> getImuBias() const {\n    return (Eigen::Matrix<double, 6, 1>() << getAccBias(), getGyroBias()).finished();\n  }\n\n  inline void set_T_W_B(const Transformation& T_W_B) { T_W_B_ = T_W_B; }\n  inline void set_W_v_B(const Eigen::Vector3d& W_v_B) { W_v_B_ = W_v_B; }\n  inline void setAccBias(const Eigen::Vector3d& acc_bias) { acc_bias_ = acc_bias; }\n  inline void setGyroBias(const Eigen::Vector3d& gyro_bias) { gyro_bias_ = gyro_bias; }\n\n private:\n  /// The pose taking points from the body frame to the world frame.\n  Transformation T_W_B_;\n  /// The velocity (m/s).\n  Eigen::Vector3d W_v_B_;\n  /// The accelerometer bias (m/s^2).\n  Eigen::Vector3d acc_bias_;\n  /// The gyroscope bias (rad/s).\n  Eigen::Vector3d gyro_bias_;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/include/svo/backend/graph_manager.h",
    "content": "#pragma once\n\n#include <memory>\n#include <mutex>\n#include <thread>\n#include <vector>\n#include <unordered_map>\n#include <iostream>\n#include <fstream>\n\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <svo/backend/smart_factors_fwd.h>\n\n#include <gtsam/geometry/Cal3_S2.h>\n#include <gtsam/nonlinear/NonlinearFactorGraph.h>\n#include <gtsam/navigation/CombinedImuFactor.h>\n\nnamespace svo {\n\n// fwd\nstruct ImuCalibration;\nstruct ImuInitialization;\nstruct ImuMeasurement;\ntypedef std::deque<ImuMeasurement> ImuMeasurements; // TODO(cfo)\nclass Point;\nclass Frame;\n\nstruct GraphManagerOptions\n{\n  double reproj_error_noise = 1.0/370.0;\n  double smart_reproj_threshold = 3.0/370.0; // set -1 to deactivate!\n  double min_parallax_thresh = 5.0/180*M_PI;\n  bool trace_tracks = false;\n  bool use_robust_px_noise = false;\n  double init_pos_sigma = 0.001;\n  double init_roll_pitch_sigma = 0.03; // 2 / 180.0 * M_PI;\n  double init_yaw_sigma = 0.78; // 45.0 / 180.0 * M_PI\n};\n\nclass GraphManager\n{\npublic:\n  \n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  \n  using NFramesId = int;\n  using Ptr = std::shared_ptr<GraphManager>;\n  using PreintegratedImuMeasurements = gtsam::PreintegratedCombinedMeasurements;\n  using CombinedPreintegratedMeasurementPtr = std::shared_ptr<PreintegratedImuMeasurements>;\n  using PointIdSmartFactorMap = std::unordered_map<int, boost::shared_ptr<SmartFactor>>;\n\n  GraphManager(const GraphManagerOptions& options);\n  ~GraphManager();\n\n  GraphManagerOptions options_;\n  gtsam::Cal3_S2::shared_ptr cam_calib_;\n  boost::shared_ptr<PreintegratedImuMeasurements::Params> preintegration_params_;\n  std::vector<gtsam::SharedNoiseModel> px_noise_pyr_;\n  gtsam::SharedNoiseModel smart_noise_;\n  gtsam::SharedNoiseModel imu_bias_prior_noise_;\n  gtsam::SharedNoiseModel velocity_prior_noise_;\n  gtsam::SharedNoiseModel zero_velocity_prior_noise_;\n  Eigen::Matrix<double, 6, 6> pose_prior_covariance_;\n  std::unique_ptr<gtsam::SmartProjectionParams> smart_factor_params_;\n\n  /// Updates to be considered for next optimization iteration. MUTEX PROTECTED\n  /// @{\n\n  std::mutex mut_;\n  gtsam::NonlinearFactorGraph new_factors_; // new factors to be added\n  gtsam::Values new_values_;                // new states to be added\n  PointIdSmartFactorMap new_smart_factors_; // pointId -> {SmartFactorPtr}\n  SmartFactorMap smart_factors_map_;        // pointId -> {SmartFactorPtr, SlotIndex}\n  BundleId last_added_state_index_ = -1;\n\n  /// @}\n\n  void initialize();\n\n  void initializeImuNoiseModels(\n        const ImuCalibration& imu_calib,\n        const ImuInitialization& imu_init);\n\n  void reset();\n\n  // Landmarks\n  void addLandmark(svo::Point& point);\n\n  void addObservationToLandmark(\n      svo::Frame& frame,\n      const size_t keypoint_index);\n\n  void addSmartLandmark(svo::Point& point);\n\n  void addObservationToSmartLandmark(\n      svo::Frame& frame,\n      const size_t keypoint_index);\n\n  void addCombinedImuFactor(\n      const NFramesId& from_id,\n      const NFramesId& to_id,\n      const Eigen::Vector3d& acc_bias,\n      const Eigen::Vector3d& gyr_bias,\n      const double to_timestamp_sec,\n      const ImuMeasurements& imu_measurements);\n\n  // Prior Factors\n  void addPosePriorFactor(\n      const NFramesId& state_index,\n      const Transformation& T_W_B);\n\n  void addBiasPriorFactor(\n      const NFramesId& state_index,\n      const Eigen::Vector3d& acc_bias,\n      const Eigen::Vector3d& gyro_bias);\n\n  void addVelocityPriorFactor(\n      const NFramesId& state_index,\n      const Eigen::Vector3d& W_v);\n\n  void addZeroVelocityPriorFactor(\n      const NFramesId& state_index);\n\n  // Augment State\n  void augmentStateWithPose(\n      const NFramesId& state_index,\n      const Transformation& T_W_B);\n\n  void augmentStateWithVelocityAndBias(\n      const NFramesId& state_index,\n      const Eigen::Vector3d& W_v,\n      const Eigen::Vector3d& acc_bias,\n      const Eigen::Vector3d& gyr_bias);\n\n  // Retrieval (Always lock mut_ when using)\n  void getUpdatesCopy(\n      gtsam::NonlinearFactorGraph& graph_updates,\n      gtsam::Values& value_updates,\n      std::vector<size_t>& delete_indices,\n      std::vector<int>& smart_factor_point_ids);\n\n  void updateFactorSlots(\n      const gtsam::FastVector<size_t>& new_slots,\n      const std::vector<int>& smart_factor_point_ids);\n\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/include/svo/backend/smart_factors_fwd.h",
    "content": "#pragma once\n\n#include <utility> // std::pair\n#include <boost/shared_ptr.hpp>\n\n// forward declarations\nnamespace gtsam {\nclass Values;\nclass Pose3;\nclass Point3;\nclass Cal3_S2;\ntemplate<typename KEY, typename VALUE> class FastMap;\ntemplate<class CALIBRATION> class SmartProjectionPoseFactor;\ntemplate<class POSE, class LANDMARK, class CALIBRATION> class GenericProjectionFactor;\nclass SmartProjectionParams;\n} // namespace gtsam\n\nnamespace svo {\n\n// Typedef of desired classes to reduce compile-time\ntypedef gtsam::GenericProjectionFactor<gtsam::Pose3, gtsam::Point3, gtsam::Cal3_S2> ProjectionFactor;\ntypedef gtsam::SmartProjectionPoseFactor<gtsam::Cal3_S2> SmartFactor;\ntypedef gtsam::FastMap<boost::shared_ptr<SmartFactor>, size_t> FactorIndexMap;\ntypedef gtsam::FastMap<int, std::pair<boost::shared_ptr<SmartFactor>, int>> SmartFactorMap;\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_backend</name>\n  <version>0.0.0</version>\n  <description>The svo_gtsam package</description>\n\n  <!-- One maintainer tag required, multiple allowed, one person per tag --> \n  <!-- Example:  -->\n  <!-- <maintainer email=\"jane.doe@example.com\">Jane Doe</maintainer> -->\n  <maintainer email=\"cforster@todo.todo\">cforster</maintainer>\n\n\n  <!-- One license tag required, multiple allowed, one license per tag -->\n  <!-- Commonly used license strings: -->\n  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->\n  <license>TODO</license>\n\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>cmake_modules</depend>\n  <depend>svo</depend>\n  <depend>svo_cmake</depend>\n  <depend>svo_common</depend>\n  <depend>vikit_common</depend>\n  <depend>eigen_catkin</depend>\n  <depend>gtsam_catkin</depend>\n\n</package>\n"
  },
  {
    "path": "svo_backend/src/backend_interface.cpp",
    "content": "#include <svo/backend/backend_interface.h>\n\n#include <svo/common/conversions.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/map.h>\n#include <svo/imu_handler.h>\n#include <svo/pose_optimizer.h>\n#include <svo/backend/graph_manager.h>\n#include <svo/backend/backend_optimizer.h>\n\n// gtsam\n#include <gtsam/geometry/Pose3.h>\n#include <gtsam/inference/Symbol.h>\n#include <gtsam/slam/PriorFactor.h>\n#include <gtsam/navigation/ImuBias.h>\n#include <gtsam/slam/SmartProjectionPoseFactor.h>\n\nnamespace svo {\n\nBackendInterface::BackendInterface(\n    const BackendInterfaceOptions& options,\n    const GraphManagerOptions& graph_manager_options,\n    const OptimizerBackendOptions& optimizer_options)\n  : options_(options)\n{\n  graph_.reset(new GraphManager(graph_manager_options));\n  optimizer_.reset(new BackendOptimizer(optimizer_options, graph_));\n}\n\nvoid BackendInterface::reset()\n{\n  // TODO(cfo): Not threadsafe!\n  VLOG(1) << \"Backend: Reset\";\n  optimizer_->reset();\n  graph_->reset();\n  estimator_state_ = EstimatorState::kUninitialized;\n  num_frames_in_backend_ = 0u;\n}\n\nvoid BackendInterface::initializeBackend()\n{\n  CHECK(!options_.add_imu_factors || (options_.add_imu_factors && imu_handler_))\n      << \"IMU Handler must be set when imu factors should be added to backend.\";\n  optimizer_->initialize();\n  graph_->initialize();\n  if(imu_handler_)\n    graph_->initializeImuNoiseModels(imu_handler_->imu_calib_, imu_handler_->imu_init_);\n}\n\nvoid BackendInterface::bundleAdjustment(const FrameBundlePtr& frame_bundle)\n{\n  if(!frame_bundle->isKeyframe()) // TODO(cfo)\n    return;\n\n  switch (estimator_state_)\n  {\n    case EstimatorState::kUninitialized:\n    {\n      initializeBackend();\n      {\n        std::lock_guard<std::mutex> lock(graph_->mut_);\n        ViNodeState state(frame_bundle->get_T_W_B());\n        if(imu_handler_)\n        {\n          state.set_W_v_B(imu_handler_->imu_init_.velocity);\n          state.setAccBias(imu_handler_->imu_init_.acc_bias);\n          state.setGyroBias(imu_handler_->imu_init_.omega_bias);\n        }\n        addInitialStateAndPriorsToGraph(frame_bundle->getBundleId(), state);\n        last_state_ = state;\n\n      }\n      estimator_state_ = EstimatorState::kInitialBundleAdjustment;\n      VLOG(1) << \"VIN: First frame set.\";\n      break;\n    }\n\n    case EstimatorState::kInitialBundleAdjustment:\n    {\n      {\n        std::lock_guard<std::mutex> lock(graph_->mut_);\n        graph_->augmentStateWithPose(frame_bundle->getBundleId(), frame_bundle->get_T_W_B());\n        addVisualMeasurementsToGraph(frame_bundle);\n        if(options_.add_imu_factors)\n        {\n          graph_->augmentStateWithVelocityAndBias(\n                frame_bundle->getBundleId(), last_state_.get_W_v_B(),\n                last_state_.getAccBias(), last_state_.getGyroBias());\n          addInertialMeasurementsToGraph(frame_bundle);    \n        }\n        else if(num_frames_in_backend_ == 1u && !imu_handler_ &&\n            frame_bundle->size() == 1u)\n        {\n          graph_->addPosePriorFactor(frame_bundle->getBundleId(),\n                                     frame_bundle->get_T_W_B());\n\n        }\n      }\n\n      if(num_frames_in_backend_ == options_.n_frames_in_init_ba - 1)\n        estimator_state_ = EstimatorState::kRunning;\n\n      VLOG(1) << \"VIN: Estimator initializing: adding more frames.\"\n              << \". Have already \" << num_frames_in_backend_+1;\n      break;\n    }\n\n    // Add frame to the problem with optimizing.\n    case EstimatorState::kRunning:\n    {\n      {\n        std::lock_guard<std::mutex> lock(graph_->mut_);\n        graph_->augmentStateWithPose(frame_bundle->getBundleId(), frame_bundle->get_T_W_B());\n        addVisualMeasurementsToGraph(frame_bundle);\n        if(options_.add_imu_factors)\n        {\n          graph_->augmentStateWithVelocityAndBias(\n                frame_bundle->getBundleId(), last_state_.get_W_v_B(),\n                last_state_.getAccBias(), last_state_.getGyroBias());\n          addInertialMeasurementsToGraph(frame_bundle);\n        }\n      }\n      optimizer_->optimize();\n      break;\n    }\n\n    default:\n    {\n      LOG(FATAL) << \"Unhandled estimator state: \" << static_cast<int>(estimator_state_);\n      break;\n    }\n  }\n\n  ++num_frames_in_backend_;\n  last_added_index_ = frame_bundle->getBundleId();\n  last_added_frame_stamp_ns_ = frame_bundle->getMinTimestampNanoseconds();\n}\n\nvoid BackendInterface::loadMapFromBundleAdjustment(\n    const FrameBundlePtr& new_frames,\n    const FrameBundlePtr& last_frames,\n    const Map::Ptr& map)\n{\n\n  if(estimator_state_ != EstimatorState::kRunning)\n  {\n    VLOG(40) << \"VIN: Backend not initialized yet.\";\n    return;\n  }\n\n  if(last_loaded_estimate_index_ == optimizer_->estimate_state_index_)\n  {\n    VLOG(3) << \"VIN: This update was previously loaded.\";\n    return;\n  }\n\n  if(last_added_index_ != optimizer_->estimate_state_index_)\n  {\n    VLOG(3) << \"VIN: Would like to update SVO map but Optimizer is not finished.\";\n    return;\n  }\n\n  // Try to get access to iSAM in order to retreive the new values and update\n  // the SVO tracker map. However, iSAM might be busy optimizing. We wait a short\n  // amount of time to to see if iSAM becomes available. Otherwise, we update the\n  // map at the next iteration.\n  std::lock_guard<std::mutex> estimate_lock(optimizer_->estimate_mut_);   // todo: estimate would be enough\n  std::lock_guard<std::mutex> graph_lock(graph_->mut_); // to access smart_factors_map_. TODO shared_lock would be enough.\n  const gtsam::Values& estimate = optimizer_->estimate_;\n\n  // Update map.\n  const FramePtr& last_kf = map->getLastKeyframe();\n  Transformation T_kf_last = last_kf->T_imu_world()*last_frames->get_T_W_B();\n\n  // 1. Update last state.\n  {\n    const gtsam::Pose3 pose =\n        estimate.at<gtsam::Pose3>(gtsam::Symbol('x', last_added_index_));\n    last_state_.set_T_W_B(Transformation(pose.matrix()));\n    if(options_.add_imu_factors)\n    {\n      const Eigen::Vector3d& velocity =\n          estimate.at<Eigen::Vector3d>(gtsam::Symbol('v', last_added_index_));\n      last_state_.set_W_v_B(velocity);\n      const gtsam::imuBias::ConstantBias& bias =\n          estimate.at<gtsam::imuBias::ConstantBias>(gtsam::Symbol('b', last_added_index_));\n      last_state_.setAccBias(bias.accelerometer());\n      last_state_.setGyroBias(bias.gyroscope());\n    }\n  }\n\n  // 2. update the poses of all keyframes.\n  for(const auto& frame_pair : map->keyframes_) // TODO(cfo): we should store NFrames in map!\n  {\n    Frame& frame = *frame_pair.second;\n    const Transformation T_W_B(\n          estimate.at<gtsam::Pose3>(gtsam::Symbol('x', frame.bundleId())).matrix());\n    frame.T_f_w_ = (T_W_B * frame.T_imu_cam()).inverse();\n  }\n\n  // 3. Update all 3d points.\n  size_t n_reoptimized = 0;\n  for(const auto& frame_pair : map->keyframes_) // TODO(cfo): we should store NFrames in map!\n  {\n    const Frame& frame = *frame_pair.second;\n    for(size_t i = 0; i < frame.num_features_; ++i)\n    {\n      if(!frame.landmark_vec_[i])\n        continue;\n\n      Point& point = *frame.landmark_vec_[i];\n\n      if(point.last_ba_update_ == optimizer_->estimate_state_index_)\n        continue;\n\n      if(point.in_ba_graph_)\n      {\n        if(options_.use_smart_factors)\n        {\n          // get smart-factor of 3d point:\n          const auto& it = optimizer_->graph_->smart_factors_map_.find(point.id());\n          CHECK(it != optimizer_->graph_->smart_factors_map_.end());\n          if(it->second.first->isDegenerate())\n          {\n            map->addPointToTrash(frame.landmark_vec_[i]);\n            VLOG(30) << \"VIN: SmartFactor triangulation is degenerate!\";\n          }\n          else\n          {\n            point.pos_ = it->second.first->point(estimate).get().vector();\n          }\n        }\n        else\n        {\n          point.pos_ = estimate.at<gtsam::Point3>(gtsam::Symbol('l', point.id())).vector();\n        }\n      }\n      else if(!point.in_ba_graph_ && point.nRefs() >= 2)\n      {\n        // point is not in optimization, therefore, we need to re-triangulate it.\n        //point.triangulateLinear();\n        point.optimize(5, false);\n        ++n_reoptimized;\n      }\n      point.last_ba_update_ = optimizer_->estimate_state_index_;\n    }\n\n    //\n    // TODO(cfo): update seed depth?\n    //\n  }\n\n  // last frame is no keyframe, therefore it has not been affected by the above update.\n  if(!last_frames->isKeyframe())\n  {\n    // TODO: if we have large scale change, this will not work! Also, update seeds.\n    last_frames->set_T_W_B(last_kf->T_world_imu() * T_kf_last);\n  }\n\n  last_loaded_estimate_index_ = optimizer_->estimate_state_index_;\n}\n\nvoid BackendInterface::addVisualMeasurementsToGraph(\n    const FrameBundlePtr& frame_bundle)\n{\n  // Statistics.\n  size_t n_skipped_points_parallax = 0;\n  size_t n_skipped_few_obs = 0;\n  size_t n_features_already_in_graph = 0;\n  size_t n_new_observations = 0;\n  size_t n_new_landmarks = 0;\n\n  for(size_t frame_id = 0; frame_id < frame_bundle->size(); ++frame_id)\n  {\n    Frame& frame = *frame_bundle->at(frame_id);\n    for(size_t i = 0; i < frame.numFeatures(); ++i)\n    {\n      CHECK_GE(frame.num_features_, i);\n\n      if(frame.landmark_vec_[i] == nullptr)\n        continue;\n\n      if(frame.in_ba_graph_vec_[i])\n      {\n        ++n_features_already_in_graph;\n        continue;\n      }\n\n      Point& point = *frame.landmark_vec_.at(i);\n\n      /*\n      if(ignored_landmarks_.count(point.id()) > 0)\n      {\n        continue; // this landmark was discarted previously!\n      }\n      */\n\n      if(point.in_ba_graph_)\n      {\n        graph_->addObservationToLandmark(frame, i);\n        ++n_new_observations;\n      }\n      else\n      {\n        if(point.obs_.size() < options_.min_num_obs)\n        {\n          ++n_skipped_few_obs;\n          continue;\n        }\n\n        if(std::isnan(point.pos_[0]))\n        {\n          LOG(ERROR) << \"Point is nan!\";\n          continue;\n        }\n\n        if(point.getTriangulationParallax() < graph_->options_.min_parallax_thresh)\n        {\n          ++n_skipped_points_parallax;\n          continue;\n        }\n\n        // TODO: We should first get all candidate points and sort them according\n        //       to parallax angle and num observations. afterwards only add best\n        //       N observations.\n        graph_->addLandmark(point);\n        point.in_ba_graph_ = true;\n\n        ++n_new_landmarks;\n      }\n    } // landmarks\n  } // frame-bundle\n\n  VLOG(4) << \"Backend: Added \" << n_new_landmarks << \" new landmarks\";\n  VLOG(4) << \"Backend: Added \" << n_new_observations << \" new observations\";\n  VLOG(4) << \"Backend: Observations already in graph: \" << n_features_already_in_graph;\n  VLOG(4) << \"Backend: Adding points. Skipped because less than \" << options_.min_num_obs << \" observations: \" << n_skipped_few_obs;\n  VLOG(4) << \"Backend: Adding points. Skipped because small parallax: \" << n_skipped_points_parallax;\n}\n\nvoid BackendInterface::addInertialMeasurementsToGraph(\n    const FrameBundlePtr& frame_bundle)\n{\n  ImuMeasurements imu_measurements;\n  if (!imu_handler_->getMeasurements(\n        last_added_frame_stamp_ns_ * common::conversions::kNanoSecondsToSeconds,\n        frame_bundle->getMinTimestampNanoseconds() *\n        common::conversions::kNanoSecondsToSeconds, true, imu_measurements))\n  {\n    LOG(WARNING) << \"Could not retrieve IMU measurements.\";\n    return;\n  }\n\n  graph_->addCombinedImuFactor(\n        last_added_index_,\n        frame_bundle->getBundleId(),\n        last_state_.getAccBias(),\n        last_state_.getGyroBias(),\n        frame_bundle->getMinTimestampNanoseconds() *\n        common::conversions::kNanoSecondsToSeconds,\n        imu_measurements);\n  VLOG(4) << \"Backend: Added \" << imu_measurements.size() << \" inertial measurements.\";\n}\n\nvoid BackendInterface::addInitialStateAndPriorsToGraph(\n    const BundleId& state_index,\n    const ViNodeState& state)\n{\n  // Add initial estimate and visual-inertial priors to graph.\n  graph_->augmentStateWithPose(state_index, state.get_T_W_B());\n  graph_->addPosePriorFactor(state_index, state.get_T_W_B());\n  if(options_.add_imu_factors)\n  {\n    graph_->augmentStateWithVelocityAndBias(\n          state_index, state.get_W_v_B(), state.getAccBias(), state.getGyroBias());\n    graph_->addBiasPriorFactor(\n          state_index, state.getAccBias(), state.getGyroBias());\n    graph_->addVelocityPriorFactor(\n          state_index, state.get_W_v_B());\n  }\n}\n\nvoid BackendInterface::startThread()\n{\n  optimizer_->startThread();\n}\n\nvoid BackendInterface::quitThread()\n{\n  optimizer_->quitThread();\n}\n\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/src/backend_optimizer.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n// svo\n#include <svo/backend/backend_optimizer.h>\n#include <svo/backend/graph_manager.h>\n#include <svo/common/frame.h>\n\n// boost\n#include <boost/make_shared.hpp>\n#include <boost/foreach.hpp>\n#include <boost/shared_ptr.hpp>\n\n// gtsam\n#include <gtsam/geometry/Point2.h>\n#include <gtsam/inference/Symbol.h>\n#include <gtsam/slam/PriorFactor.h>\n#include <gtsam/slam/BetweenFactor.h>\n#include <gtsam/navigation/ImuFactor.h>\n#include <gtsam/navigation/ImuBias.h>\n#include <gtsam/linear/linearExceptions.h>\n\nnamespace svo\n{\n\nBackendOptimizer::BackendOptimizer(\n    const OptimizerBackendOptions& options,\n    std::shared_ptr<GraphManager>& graph)\n  : options_(options)\n  , graph_(graph)\n{}\n\nBackendOptimizer::~BackendOptimizer()\n{\n  quitThread();\n}\n\nvoid BackendOptimizer::reset()\n{\n  VLOG(3) << \"Backend: Optimizer reset\";\n  estimate_state_index_ = -1;\n  estimate_.clear();\n  isam_.reset();\n}\n\nvoid BackendOptimizer::initialize()\n{\n  VLOG(3) << \"Backend: Optimizer init\";\n  gtsam::ISAM2GaussNewtonParams gauss_newton_params;\n  gauss_newton_params.setWildfireThreshold(options_.isam_wildfire_thresh);\n\n  // Initialize iSAM2\n  gtsam::ISAM2Params isam_param;\n  isam_param.optimizationParams = gauss_newton_params;\n  isam_param.relinearizeThreshold = options_.isam_relinearize_thresh;\n  isam_param.relinearizeSkip = options_.isam_relinearize_skip;\n  isam_param.enableDetailedResults = options_.isam_detailed_results; // TODO\n  isam_param.factorization = gtsam::ISAM2Params::QR;\n  //isam_param.evaluateNonlinearError = true; // TODO only for debug\n  isam_ = std::make_shared<gtsam::ISAM2>(isam_param);\n}\n\nvoid BackendOptimizer::optimize()\n{\n  // optimize\n  if(thread_ == nullptr)\n  {\n    optimizeImpl();\n  }\n  else\n  {\n    optimizer_condition_var_.notify_one(); // notify the optimizer thread\n  }\n}\n\nbool BackendOptimizer::optimizeImpl()\n{\n  CHECK_NOTNULL(isam_.get());\n\n  // ---------------------------------------------------------------------------\n  // get copy of graph and value updates so the other thread is not\n  // blocked during the isam update.\n  gtsam::NonlinearFactorGraph new_factors;\n  gtsam::Values new_states;\n  std::vector<size_t> delete_slots;\n  std::vector<int> smart_factor_point_ids;\n  BundleId last_added_state_index = -1;\n  {\n    std::lock_guard<std::mutex> lock(graph_->mut_);\n    graph_->getUpdatesCopy(\n          new_factors, new_states, delete_slots, smart_factor_point_ids);\n    last_added_state_index = graph_->last_added_state_index_;\n  }\n  if(new_factors.empty() && new_states.empty() && delete_slots.empty())\n    return true;\n\n  // ---------------------------------------------------------------------------\n  // compute update\n  gtsam::ISAM2Result result;\n  size_t n_iter = 0;\n  VLOG(4) << \"iSAM2 update with \" << new_factors.size() << \" graph updates\" <<\n              \" and \" << new_states.size() << \" new values \" <<\n              \" and \" << delete_slots.size() << \" delete indices\";\n  try {\n    result = isam_->update(new_factors, new_states, delete_slots);\n  } catch(const gtsam::IndeterminantLinearSystemException& e)\n  {\n    std::cerr << e.what() << std::endl;\n    gtsam::Key var = e.nearbyVariable();\n    gtsam::Symbol symb(var);\n    std::cout << \"Variable has type '\" << symb.chr() << \"' \"\n              << \"and index \" << symb.index() << std::endl;\n    throw;\n  }\n  ++n_iter;\n  {\n    std::lock_guard<std::mutex> lock(graph_->mut_);\n    graph_->updateFactorSlots(result.newFactorsIndices, smart_factor_point_ids);\n  }\n\n  for(; n_iter < options_.max_iterations_per_update; ++n_iter)\n  {\n    try {\n      result = isam_->update();\n    } catch(const gtsam::IndeterminantLinearSystemException& e)\n    {\n      std::cerr << e.what() << std::endl;\n      gtsam::Key var = e.nearbyVariable();\n      gtsam::Symbol symb(var);\n      std::cout << \"Variable has type '\" << symb.chr() << \"' \"\n                << \"and index \" << symb.index() << std::endl;\n      throw;\n    }\n  }\n\n  // ---------------------------------------------------------------------------\n  // copy estimate of the system\n  {\n    std::lock_guard<std::mutex> lock(estimate_mut_);\n    estimate_ = isam_->calculateEstimate();\n    estimate_state_index_ = last_added_state_index;\n    if(options_.output_errors)\n      VLOG(40) << \"Final Error = \" << isam_->getFactorsUnsafe().error(estimate_);\n  }\n  return true;\n}\n\nvoid BackendOptimizer::startThread()\n{\n  VLOG(3) << \"BA: Started bundle adjustment thread\";\n  thread_ = std::make_shared<std::thread>(&BackendOptimizer::threadLoop, this);\n}\n\nvoid BackendOptimizer::quitThread()\n{\n  if(thread_)\n  {\n    quit_thread_ = true;\n    optimizer_condition_var_.notify_one();\n    thread_->join();\n  }\n}\n\nvoid BackendOptimizer::threadLoop()\n{\n  while(!quit_thread_)\n  {\n    // optimize returns true when we have finished optimizing\n    // it returns false, when we have to run another iteration\n    if(optimizeImpl())\n    {\n      VLOG(30) << \"Optimizer thread waiting ...\";\n      std::unique_lock<std::mutex> lock(optimizer_cond_var_mut_);\n      optimizer_condition_var_.wait(lock);\n      VLOG(30) << \"Optimizer thread finished waiting.\";\n    }\n  }\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/src/graph_manager.cpp",
    "content": "\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/imu_calibration.h>\n#include <svo/backend/graph_manager.h>\n#include <vikit/math_utils.h>\n\n// boost\n#include <boost/make_shared.hpp>\n#include <boost/foreach.hpp>\n#include <boost/shared_ptr.hpp>\n\n// gtsam\n#include <gtsam/geometry/Point2.h>\n#include <gtsam/inference/Symbol.h>\n#include <gtsam/slam/PriorFactor.h>\n#include <gtsam/slam/BetweenFactor.h>\n#include <gtsam/slam/ProjectionFactor.h>\n#include <gtsam/slam/SmartProjectionPoseFactor.h>\n#include <gtsam/navigation/ImuFactor.h>\n#include <gtsam/navigation/CombinedImuFactor.h>\n#include <gtsam/navigation/ImuBias.h>\n#include <gtsam/linear/linearExceptions.h>\n\nnamespace svo {\n\nGraphManager::GraphManager(const GraphManagerOptions& options)\n  : options_(options)\n{}\n\nGraphManager::~GraphManager()\n{}\n\nvoid GraphManager::initialize()\n{\n  // camera\n  cam_calib_.reset(new gtsam::Cal3_S2(1.0, 1.0, 0.0, 0.0, 0.0));\n\n  // reprojection error noise models\n  const size_t kMaxPyrLevels = 6;\n  if(options_.use_robust_px_noise)\n  {\n    const double kRobustKurtosis = 3.0;\n    px_noise_pyr_.resize(kMaxPyrLevels);\n    for(size_t level=0u; level<kMaxPyrLevels; ++level)\n    {\n      const double px_noise = options_.reproj_error_noise * (1<<level);\n      px_noise_pyr_[level] =\n          gtsam::noiseModel::Robust::Create(\n            gtsam::noiseModel::mEstimator::Cauchy::Create(kRobustKurtosis),\n            gtsam::noiseModel::Isotropic::Sigma(2, px_noise));\n    }\n  }\n  else\n  {\n    px_noise_pyr_.resize(kMaxPyrLevels);\n    for(size_t level=0u; level<kMaxPyrLevels; ++level)\n    {\n      const double px_noise = options_.reproj_error_noise; // (1<<level);\n      px_noise_pyr_[level] = gtsam::noiseModel::Isotropic::Sigma(2, px_noise);\n    }\n  }\n  smart_noise_ = gtsam::noiseModel::Isotropic::Sigma(2, options_.reproj_error_noise);\n  smart_factor_params_.reset(new gtsam::SmartProjectionParams(\n                               gtsam::HESSIAN,\n                               gtsam::IGNORE_DEGENERACY, // creates rotation-only constraint\n                               true, true));\n\n  // TODO: retriangulation threshold is a const variable and cant be set in constructor.\n  smart_factor_params_->setRankTolerance(1e-3);\n//  smart_factor_params_->setEnableEPI(false); // nonlinear refinement after triangulation\n//  smart_factor_params_->setLandmarkDistanceThreshold(100);\n  smart_factor_params_->setDynamicOutlierRejectionThreshold(options_.smart_reproj_threshold);\n\n  // position prior\n  pose_prior_covariance_.setZero();\n  pose_prior_covariance_.diagonal()[0] = options_.init_roll_pitch_sigma * options_.init_roll_pitch_sigma;\n  pose_prior_covariance_.diagonal()[1] = options_.init_roll_pitch_sigma * options_.init_roll_pitch_sigma;\n  pose_prior_covariance_.diagonal()[2] = options_.init_yaw_sigma * options_.init_yaw_sigma;\n  pose_prior_covariance_.diagonal()[3] = options_.init_pos_sigma * options_.init_pos_sigma;\n  pose_prior_covariance_.diagonal()[4] = options_.init_pos_sigma * options_.init_pos_sigma;\n  pose_prior_covariance_.diagonal()[5] = options_.init_pos_sigma * options_.init_pos_sigma;\n}\n\nvoid GraphManager::initializeImuNoiseModels(\n      const ImuCalibration& imu_calib,\n      const ImuInitialization& imu_init)\n{\n  // prior bias\n  Eigen::Matrix<double, 6, 1> prior_bias_sigmas;\n  prior_bias_sigmas.head<3>().setConstant(imu_init.acc_bias_sigma);\n  prior_bias_sigmas.tail<3>().setConstant(imu_init.omega_bias_sigma);\n  imu_bias_prior_noise_ =\n      gtsam::noiseModel::Diagonal::Sigmas(prior_bias_sigmas);\n\n  // velocity prior\n  velocity_prior_noise_ =\n      gtsam::noiseModel::Isotropic::Sigma(3, imu_init.velocity_sigma);\n\n  // Create the constant zero velocity noise model.\n  static const double kZeroVelocitySigma = 1.0e-3;  // [m/s]\n  zero_velocity_prior_noise_ = gtsam::noiseModel::Isotropic::Sigma(3, kZeroVelocitySigma);\n\n  // Calculate the measurement and integration noise covariances.\n  // Note that the covariances are specified in continous-time.\n  preintegration_params_ = PreintegratedImuMeasurements::Params::MakeSharedD(\n      -imu_calib.gravity_magnitude);\n  preintegration_params_->gyroscopeCovariance =\n      std::pow(imu_calib.gyro_noise_density, 2.0) * Eigen::Matrix3d::Identity();\n  preintegration_params_->accelerometerCovariance =\n      std::pow(imu_calib.acc_noise_density, 2.0) * Eigen::Matrix3d::Identity();\n  preintegration_params_->integrationCovariance =\n      std::pow(imu_calib.imu_integration_sigma, 2.0) * Eigen::Matrix3d::Identity();\n  preintegration_params_->biasAccCovariance =\n      std::pow(imu_calib.acc_bias_random_walk_sigma, 2.0) * Eigen::Matrix3d::Identity();\n  preintegration_params_->biasOmegaCovariance =\n      std::pow(imu_calib.gyro_bias_random_walk_sigma, 2.0) * Eigen::Matrix3d::Identity();\n  preintegration_params_->biasAccOmegaInt.setZero();\n  preintegration_params_->omegaCoriolis = imu_calib.omega_coriolis;\n  preintegration_params_->use2ndOrderCoriolis = false;\n}\n\nvoid GraphManager::reset()\n{\n  VLOG(3) << \"Backend: Graph Manager reset\";\n  new_factors_.resize(0);\n  new_values_.clear();\n  new_smart_factors_.clear();\n  smart_factors_map_.clear();\n  last_added_state_index_ = -1;\n}\n\n// -----------------------------------------------------------------------------\nvoid GraphManager::addLandmark(svo::Point& point)\n{\n  CHECK(!point.in_ba_graph_);\n\n  // Add the initial landmark position expressed in the world frame.\n  new_values_.insert(gtsam::Symbol('l', point.id()), gtsam::Point3(point.pos()));\n\n  // add observations to smart-factor\n  for(const KeypointIdentifier& obs : point.obs_)\n  {\n    if(const FramePtr frame = obs.frame.lock())\n    {\n      CHECK_GE(frame->in_ba_graph_vec_.size(), obs.keypoint_index_);\n      CHECK(frame->landmark_vec_[obs.keypoint_index_]->id() == point.id()) << \"Feature observation inconsistent!\";\n      CHECK(!frame->in_ba_graph_vec_[obs.keypoint_index_]) << \"Feature is already in ba graph!\";\n      const Eigen::Vector2d uv = vk::project2(frame->f_vec_.col(obs.keypoint_index_));\n      const size_t level = frame->level_vec_(obs.keypoint_index_);\n      new_factors_.push_back(\n            boost::make_shared<ProjectionFactor>(\n              uv, px_noise_pyr_.at(level),\n              gtsam::Symbol('x', frame->bundleId()),\n              gtsam::Symbol('l', point.id()),\n              cam_calib_,\n              gtsam::Pose3(frame->T_imu_cam().getTransformationMatrix())));\n      frame->in_ba_graph_vec_[obs.keypoint_index_] = true;\n      VLOG(100) << \"Reproj. error = \"\n                << dynamic_cast<ProjectionFactor*>(new_factors_.back().get())->unwhitenedError(new_values_).norm();\n\n    }\n  }\n\n  VLOG(40) << \"Added new smart landmark for point \" << point.id();\n}\n\nvoid GraphManager::addObservationToLandmark(\n    svo::Frame& frame,\n    const size_t keypoint_index)\n{\n  CHECK(!frame.in_ba_graph_vec_[keypoint_index]);\n  const svo::Point& point = *CHECK_NOTNULL(frame.landmark_vec_.at(keypoint_index).get());\n  CHECK(point.in_ba_graph_);\n\n  const Eigen::Vector2d uv = vk::project2(frame.f_vec_.col(keypoint_index));\n  const size_t level = frame.level_vec_(keypoint_index);\n  new_factors_.push_back(\n        boost::make_shared<ProjectionFactor>(\n          uv, px_noise_pyr_.at(level),\n          gtsam::Symbol('x', frame.bundleId()),\n          gtsam::Symbol('l', point.id()),\n          cam_calib_,\n          gtsam::Pose3(frame.T_imu_cam().getTransformationMatrix())));\n  frame.in_ba_graph_vec_[keypoint_index] = true;\n\n  VLOG(40) << \"Added observation to point \" << point.id();\n}\n\n// -----------------------------------------------------------------------------\nvoid GraphManager::addSmartLandmark(svo::Point& point)\n{\n  CHECK(!point.in_ba_graph_);\n\n  // TODO: We need to modify the Smart factor to take a different Camera-Body\n  // transformation for every observation to generalize to camera-rig.\n  gtsam::Pose3 T_imu_cam(point.getSeedFrame()->T_imu_cam().getTransformationMatrix());\n  SmartFactor::shared_ptr new_factor(\n        new SmartFactor(smart_noise_, cam_calib_, T_imu_cam, *smart_factor_params_));\n\n  // add observations to smart-factor\n  for(const KeypointIdentifier& obs : point.obs_)\n  {\n    if(const FramePtr frame = obs.frame.lock())\n    {\n      CHECK(!frame->in_ba_graph_vec_[obs.keypoint_index_]) << \"Point is already in ba graph!\";\n      const Eigen::Vector2d uv = vk::project2(frame->f_vec_.col(obs.keypoint_index_));\n      new_factor->add(uv, frame->bundleId());\n      frame->in_ba_graph_vec_[obs.keypoint_index_] = true;\n    }\n  }\n\n  // add new factor: Todo, add to optimization problem.\n  new_smart_factors_.insert(std::make_pair(point.id(), new_factor));\n  smart_factors_map_.insert(std::make_pair(point.id(), std::make_pair(new_factor, -1)));\n  point.in_ba_graph_ = true;\n\n  VLOG(40) << \"Added new smart landmark for point \" << point.id();\n}\n\nvoid GraphManager::addObservationToSmartLandmark(\n    svo::Frame& frame,\n    const size_t keypoint_index)\n{\n  CHECK(!frame.in_ba_graph_vec_[keypoint_index]);\n  const svo::Point& point = *CHECK_NOTNULL(frame.landmark_vec_.at(keypoint_index).get());\n  CHECK(point.in_ba_graph_);\n\n  // Update existing smart-factor.\n  auto smart_factors_map_it = smart_factors_map_.find(point.id());\n  CHECK(smart_factors_map_it != smart_factors_map_.end())\n      << \"Tried to add a new observation to an existing landmark that is not in graph\";\n\n  const Eigen::Vector2d uv = vk::project2(frame.f_vec_.col(keypoint_index));\n\n  SmartFactor::shared_ptr old_factor = smart_factors_map_it->second.first;\n  SmartFactor::shared_ptr new_factor = boost::make_shared<SmartFactor>(*old_factor);\n  new_factor->add(uv, gtsam::Symbol('x', frame.bundleId()));\n\n  // update the factor\n  if(smart_factors_map_it->second.second != -1)\n  {\n    // if slot is still -1, it means that the factor is not inserted yet in the graph\n    new_smart_factors_.insert(std::make_pair(point.id(), new_factor));\n  }\n  smart_factors_map_it->second.first = new_factor;\n  frame.in_ba_graph_vec_[keypoint_index] = true;\n\n  VLOG(40) << \"Added smart observation to point \" << point.id();\n}\n\n// -----------------------------------------------------------------------------\nvoid GraphManager::addCombinedImuFactor(\n    const NFramesId& from_id,\n    const NFramesId& to_id,\n    const Eigen::Vector3d& acc_bias,\n    const Eigen::Vector3d& gyr_bias,\n    const double to_timestamp_sec,\n    const ImuMeasurements& imu_measurements)\n{\n  // Create the preintegrated measurement.\n  PreintegratedImuMeasurements pim(\n        preintegration_params_,\n        gtsam::imuBias::ConstantBias(acc_bias, gyr_bias));\n\n  auto it = imu_measurements.rbegin();\n  auto it_plus = imu_measurements.rbegin();\n  for(++it_plus; it != imu_measurements.rend(); ++it, ++it_plus)\n  {\n    double dt = 0.0;\n    if(it_plus == imu_measurements.rend()) // only for newest measurement\n      dt = to_timestamp_sec - it->timestamp_;\n    else\n      dt = it_plus->timestamp_ - it->timestamp_;\n    pim.integrateMeasurement(it->linear_acceleration_, it->angular_velocity_, dt);\n  }\n\n  new_factors_.push_back(\n        boost::make_shared<gtsam::CombinedImuFactor>(\n          gtsam::Symbol('x',from_id), gtsam::Symbol('v',from_id),\n          gtsam::Symbol('x',to_id), gtsam::Symbol('v',to_id),\n          gtsam::Symbol('b',from_id), gtsam::Symbol('b',to_id),\n          pim));\n\n  VLOG(40) << \"Integrated \" << imu_measurements.size() << \" measurements\"\n           << \" between frame \" << from_id << \" and \" << to_id;\n}\n\nvoid GraphManager::addPosePriorFactor(\n    const NFramesId& state_index,\n    const Transformation& T_W_B)\n{\n  // Rotate initial pose uncertainty in world coordinates to body coordinates.\n  Eigen::Matrix3d R_W_B = T_W_B.getRotationMatrix();\n  Eigen::Matrix3d R_B_W = R_W_B.transpose();\n  pose_prior_covariance_.topLeftCorner(3,3) =\n      R_B_W * pose_prior_covariance_.topLeftCorner(3,3) * R_W_B;\n\n  // Add pose prior.\n  gtsam::SharedNoiseModel noise_init_pose =\n      gtsam::noiseModel::Gaussian::Covariance(pose_prior_covariance_);\n  new_factors_.push_back(\n        boost::make_shared<gtsam::PriorFactor<gtsam::Pose3> >(\n          gtsam::Symbol('x', state_index),\n          gtsam::Pose3(T_W_B.getTransformationMatrix()),\n          noise_init_pose));\n\n  VLOG(40) << \"Priors - Rotation Cov: \\n\" << pose_prior_covariance_.topLeftCorner(3,3);\n  VLOG(40) << \"Priors - Position Cov: \\n\" << pose_prior_covariance_.bottomRightCorner(3,3);\n\n}\n\nvoid GraphManager::addBiasPriorFactor(\n    const NFramesId& state_index,\n    const Eigen::Vector3d& acc_bias,\n    const Eigen::Vector3d& gyr_bias)\n{\n  new_factors_.push_back(\n        boost::make_shared<gtsam::PriorFactor<gtsam::imuBias::ConstantBias>>(\n          gtsam::Symbol('b', state_index),\n          gtsam::imuBias::ConstantBias(acc_bias, gyr_bias),\n          imu_bias_prior_noise_));\n\n  VLOG(40) << \"Priors - Bias Mean: Acc (\" << acc_bias.transpose()\n           << \"), Gyro ( \" << gyr_bias.transpose() << \")\";\n  VLOG(40) << \"Priors - Bias Sigmas: \" << imu_bias_prior_noise_->sigmas().transpose();\n}\n\nvoid GraphManager::addVelocityPriorFactor(\n    const NFramesId& state_index,\n    const Eigen::Vector3d& W_v)\n{\n  new_factors_.push_back(\n        boost::make_shared<gtsam::PriorFactor<gtsam::Vector3>>(\n          gtsam::Symbol('v', state_index),\n          W_v,\n          velocity_prior_noise_));\n\n  VLOG(40) << \"Priors - Velocity\";\n}\n\nvoid GraphManager::addZeroVelocityPriorFactor(\n    const NFramesId& state_index)\n{\n  new_factors_.push_back(\n        boost::make_shared<gtsam::PriorFactor<gtsam::Vector3>>(\n          gtsam::Symbol('v', state_index),\n          Eigen::Vector3d::Zero(),\n          zero_velocity_prior_noise_));\n}\n\nvoid GraphManager::augmentStateWithPose(\n    const NFramesId& state_index,\n    const Transformation& T_W_B)\n{\n  VLOG(4) << \"Backend: Add new pose: \" << state_index;\n  new_values_.insert(\n        gtsam::Symbol('x', state_index), gtsam::Pose3(T_W_B.getTransformationMatrix()));\n  last_added_state_index_ = state_index;\n}\n\nvoid GraphManager::augmentStateWithVelocityAndBias(\n    const NFramesId& state_index,\n    const Eigen::Vector3d& W_v,\n    const Eigen::Vector3d& acc_bias,\n    const Eigen::Vector3d& gyr_bias)\n{\n  new_values_.insert(\n        gtsam::Symbol('v', state_index), W_v);\n  new_values_.insert(\n        gtsam::Symbol('b', state_index), gtsam::imuBias::ConstantBias(acc_bias, gyr_bias));\n}\n\nvoid GraphManager::getUpdatesCopy(\n    gtsam::NonlinearFactorGraph& new_factors,\n    gtsam::Values& new_states,\n    std::vector<size_t>& delete_indices,\n    std::vector<int>& smart_factor_point_ids)\n{\n  for(auto& s : new_smart_factors_)\n  {\n    new_factors.push_back(s.second);\n    smart_factor_point_ids.push_back(s.first);\n    const auto& it = smart_factors_map_.find(s.first);\n    if(it->second.second != -1) // get current slot\n      delete_indices.push_back(it->second.second);\n  }\n  new_factors.push_back(new_factors_.begin(), new_factors_.end());\n  new_states = new_values_;\n  new_smart_factors_.clear();\n  new_factors_.resize(0);\n  new_values_.clear();\n}\n\nvoid GraphManager::updateFactorSlots(\n    const gtsam::FastVector<size_t>& new_slots,\n    const std::vector<int>& smart_factor_point_ids)\n{\n  // update slots of new inserted indices:\n  for(size_t i=0; i<smart_factor_point_ids.size(); ++i)\n  {\n    const auto& it = smart_factors_map_.find(smart_factor_point_ids.at(i));\n    it->second.second = new_slots.at(i);\n  }\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_backend/src/smart_factors.cpp",
    "content": "#include <svo/backend/smart_factors_fwd.h>\n\n#include <gtsam/base/FastMap.h>\n#include <gtsam/geometry/Pose3.h>\n#include <gtsam/geometry/Point3.h>\n#include <gtsam/geometry/Cal3_S2.h>\n#include <gtsam/slam/ProjectionFactor.h>\n#include <gtsam/slam/SmartProjectionPoseFactor.h>\n\nnamespace gtsam {\n\n// Explicitely instantiate the desired classes\ntemplate class GenericProjectionFactor<Pose3, Point3, Cal3_S2>;\ntemplate class SmartProjectionPoseFactor<Cal3_S2>;\ntemplate class FastMap<boost::shared_ptr<SmartProjectionPoseFactor<Cal3_S2>>, size_t>;\ntemplate class FastMap<int, std::pair<boost::shared_ptr<SmartProjectionPoseFactor<Cal3_S2>>, int>>;\n\n} // end namespace gtsam\n"
  },
  {
    "path": "svo_cmake/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(svo_cmake)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple()\n\n# install all included cmake files\ninstall(DIRECTORY cmake DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/cmake)\n\ncs_install()\ncs_export(CFG_EXTRAS svo_cmake-extras.cmake)\n"
  },
  {
    "path": "svo_cmake/cmake/Modules/Findyaml-cpp.cmake",
    "content": "# Locate yaml-cpp\n# From https://github.com/Astron/Astron/blob/master/cmake/modules/FindYamlCpp.cmake\n#\n# This module defines\n#  YAMLCPP_FOUND, if false, do not try to link to yaml-cpp\n#  YAMLCPP_LIBNAME, name of yaml library\n#  YAMLCPP_LIBRARY, where to find yaml-cpp\n#  YAMLCPP_LIBRARY_RELEASE, where to find Release or RelWithDebInfo yaml-cpp\n#  YAMLCPP_LIBRARY_DEBUG, where to find Debug yaml-cpp\n#  YAMLCPP_INCLUDE_DIR, where to find yaml.h\n#  YAMLCPP_LIBRARY_DIR, the directories to find YAMLCPP_LIBRARY\n#\n# By default, the dynamic libraries of yaml-cpp will be found. To find the static ones instead,\n# you must set the YAMLCPP_USE_STATIC_LIBS variable to TRUE before calling find_package(YamlCpp ...)\n\n# attempt to find static library first if this is set\nif(YAMLCPP_USE_STATIC_LIBS)\n    set(YAMLCPP_STATIC libyaml-cpp.a)\n    set(YAMLCPP_STATIC_DEBUG libyaml-cpp-dbg.a)\nendif()\n\nif(${MSVC})    ### Set Yaml libary name for Windows\n  set(YAMLCPP_LIBNAME \"libyaml-cppmd\" CACHE STRING \"Name of YAML library\")\n  set(YAMLCPP_LIBNAME optimized ${YAMLCPP_LIBNAME} debug ${YAMLCPP_LIBNAME}d)\nelse()                      ### Set Yaml libary name for Unix, Linux, OS X, etc\n  set(YAMLCPP_LIBNAME \"yaml-cpp\" CACHE STRING \"Name of YAML library\")\nendif()\n\n# find the yaml-cpp include directory\nfind_path(YAMLCPP_INCLUDE_DIR\n  NAMES yaml-cpp/yaml.h\n  PATH_SUFFIXES include\n  PATHS\n    ${PROJECT_SOURCE_DIR}/dependencies/yaml-cpp-0.5.1/include\n    ~/Library/Frameworks/yaml-cpp/include/\n    /Library/Frameworks/yaml-cpp/include/\n    /usr/local/include/\n    /usr/include/\n    /sw/yaml-cpp/         # Fink\n    /opt/local/yaml-cpp/  # DarwinPorts\n    /opt/csw/yaml-cpp/    # Blastwave\n    /opt/yaml-cpp/)\n\n# find the release yaml-cpp library\nfind_library(YAMLCPP_LIBRARY_RELEASE\n  NAMES ${YAMLCPP_STATIC} yaml-cpp libyaml-cppmd.lib libyaml-cppmt.lib\n  PATH_SUFFIXES lib64 lib Release RelWithDebInfo\n  PATHS\n    ${PROJECT_SOURCE_DIR}/dependencies/yaml-cpp-0.5.1/\n    ${PROJECT_SOURCE_DIR}/dependencies/yaml-cpp-0.5.1/build\n    ~/Library/Frameworks\n    /Library/Frameworks\n    /usr/local\n    /usr\n    /sw\n    /opt/local\n    /opt/csw\n    /opt)\n\n# find the debug yaml-cpp library\nfind_library(YAMLCPP_LIBRARY_DEBUG\n  NAMES ${YAMLCPP_STATIC_DEBUG} yaml-cpp-dbg libyaml-cppmdd.lib libyaml-cppmtd.lib\n  PATH_SUFFIXES lib64 lib Debug\n  PATHS\n    ${PROJECT_SOURCE_DIR}/dependencies/yaml-cpp-0.5.1/\n    ${PROJECT_SOURCE_DIR}/dependencies/yaml-cpp-0.5.1/build\n    ~/Library/Frameworks\n    /Library/Frameworks\n    /usr/local\n    /usr\n    /sw\n    /opt/local\n    /opt/csw\n    /opt)\n\n# set library vars\nset(YAMLCPP_LIBRARY ${YAMLCPP_LIBRARY_RELEASE})\nif(CMAKE_BUILD_TYPE MATCHES Debug AND EXISTS ${YAMLCPP_LIBRARY_DEBUG})\n  set(YAMLCPP_LIBRARY ${YAMLCPP_LIBRARY_DEBUG})\nendif()\n\nget_filename_component(YAMLCPP_LIBRARY_RELEASE_DIR ${YAMLCPP_LIBRARY_RELEASE} PATH)\nget_filename_component(YAMLCPP_LIBRARY_DEBUG_DIR ${YAMLCPP_LIBRARY_DEBUG} PATH)\nset(YAMLCPP_LIBRARY_DIR ${YAMLCPP_LIBRARY_RELEASE_DIR} ${YAMLCPP_LIBRARY_DEBUG_DIR})\n\n# handle the QUIETLY and REQUIRED arguments and set YAMLCPP_FOUND to TRUE if all listed variables are TRUE\ninclude(FindPackageHandleStandardArgs)\nFIND_PACKAGE_HANDLE_STANDARD_ARGS(YamlCpp DEFAULT_MSG\n  YAMLCPP_INCLUDE_DIR\n  YAMLCPP_LIBRARY\n  YAMLCPP_LIBRARY_DIR)\nmark_as_advanced(\n  YAMLCPP_INCLUDE_DIR\n  YAMLCPP_LIBRARY_DIR\n  YAMLCPP_LIBRARY\n  YAMLCPP_LIBRARY_RELEASE\n  YAMLCPP_LIBRARY_RELEASE_DIR\n  YAMLCPP_LIBRARY_DEBUG\n  YAMLCPP_LIBRARY_DEBUG_DIR)\n"
  },
  {
    "path": "svo_cmake/cmake/Modules/Gtsam.cmake",
    "content": "FIND_PACKAGE(gtsam_catkin QUIET)\n\nIF(${gtsam_catkin_FOUND})\n  MESSAGE(\"GTSAM found: ${gtsam_catkin_LIBRARIES}.\")\n  ADD_DEFINITIONS(-DSVO_USE_GTSAM)\n  LIST(APPEND LINK_LIBS  ${gtsam_catkin_LIBRARIES})\n  LIST(APPEND INCLUDE_DIRS ${gtsam_catkin_INCLUDE_DIRS})\nELSE()\n  MESSAGE(\"GTSAM not found.\")\nENDIF()\n"
  },
  {
    "path": "svo_cmake/cmake/Modules/SlidingWindowEstimator.cmake",
    "content": "FIND_PACKAGE(sliding_window_estimator QUIET)\n\nIF(${sliding_window_estimator_FOUND})\n  MESSAGE(\"SWE found: ${sliding_window_estimator_LIBRARIES}.\")\n  ADD_DEFINITIONS(-DSVO_USE_SWE)\n  LIST(APPEND LINK_LIBS  ${sliding_window_estimator_LIBRARIES})\n  LIST(APPEND INCLUDE_DIRS ${sliding_window_estimator_INCLUDE_DIRS})\nELSE()\n  MESSAGE(\"SWE not found.\")\nENDIF()"
  },
  {
    "path": "svo_cmake/cmake/Modules/SvoSetup.cmake",
    "content": "SET(CMAKE_BUILD_TYPE Release) # Release, RelWithDebInfo\n#SET(CMAKE_BUILD_TYPE Debug) # Release, RelWithDebInfo\nSET(CMAKE_VERBOSE_MAKEFILE OFF)\n\n# user build settings\nSET(TRACE FALSE)\nSET(USE_LOOP_CLOSING FALSE)\n\n# Set definitions\nIF(TRACE)\n  ADD_DEFINITIONS(-DSVO_TRACE)\nENDIF()\n\nIF(USE_LOOP_CLOSING)\n  ADD_DEFINITIONS(-DSVO_LOOP_CLOSING)\nENDIF()\n\nADD_DEFINITIONS(-DSVO_USE_ROS)\nADD_DEFINITIONS(-DSVO_USE_OPENGV)\nADD_DEFINITIONS(-DSVO_DEPTHFILTER_IN_REPROJECTOR)\n#ADD_DEFINITIONS(-DSVO_USE_VIKIT_CAMERA)\n\n# TODO add this to the config.h.in option file when we merge the cuda branch\nif (PANGOLIN_FOUND)\n  add_definitions(-DSVO_USE_PANGOLIN)\nendif()\n\n#############################################################################\n# Set build flags, set ARM_ARCHITECTURE environment variable on Odroid\nSET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -pthread -Wall -D_LINUX -D_REENTRANT -march=native -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unknown-pragmas -Wno-unused-but-set-parameter -Wno-int-in-bool-context\")\n\nIF(DEFINED ENV{ARM_ARCHITECTURE})\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -mfpu=neon -march=armv7-a\")\n  ADD_DEFINITIONS(-DHAVE_FAST_NEON)\nELSE()\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -mmmx -msse -msse -msse2 -msse3 -mssse3 -mno-avx\")\nENDIF()\nIF(CMAKE_COMPILER_IS_GNUCC)\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++0x\")\nELSE()\n  SET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")\nENDIF()\nSET(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS} -O3 -fsee -fomit-frame-pointer -fno-signed-zeros -fno-math-errno -funroll-loops -ffast-math -fno-finite-math-only\")\n"
  },
  {
    "path": "svo_cmake/cmake/svo_cmake-extras.cmake.develspace.in",
    "content": "list(INSERT CMAKE_MODULE_PATH 0 \"@CMAKE_CURRENT_SOURCE_DIR@/cmake/Modules\")\n"
  },
  {
    "path": "svo_cmake/cmake/svo_cmake-extras.cmake.installspace.in",
    "content": "list(INSERT CMAKE_MODULE_PATH 0\n   \"${cmake_modules_DIR}/../../../@CATKIN_PACKAGE_SHARE_DESTINATION@/cmake/Modules\")\n\n"
  },
  {
    "path": "svo_cmake/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_cmake</name>\n  <description>\n    CMake configuration, scripts and macros common for common SVO usage\n  </description>\n  <version>0.1.0</version>\n  <license>tbd</license>\n\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n  <author>Manuel Werlberger</author>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n</package>\n"
  },
  {
    "path": "svo_common/CMakeLists.txt",
    "content": "project(svo_common)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple()\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/svo/common/camera.h\n  include/svo/common/camera_fwd.h\n  include/svo/common/feature_wrapper.h\n  include/svo/common/frame.h\n  include/svo/common/imu_calibration.h\n  include/svo/common/logging.h\n  include/svo/common/occupancy_grid_2d.h\n  include/svo/common/point.h\n  include/svo/common/seed.h\n  include/svo/common/transformation.h\n  include/svo/common/types.h\n  )\n\nset(SOURCES\n  src/frame.cpp\n  src/point.cpp\n  )\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_common/include/svo/common/camera.h",
    "content": "#pragma once\n\n#include <svo/common/camera_fwd.h>\n\n# include <vikit/cameras/ncamera.h>\n# include <vikit/cameras/camera_geometry_base.h>\n"
  },
  {
    "path": "svo_common/include/svo/common/camera_fwd.h",
    "content": "#pragma once\n\n#include <memory>\n\nnamespace vk {\nnamespace cameras {\nclass CameraGeometryBase;\nclass NCamera;\n}\n}\n\nnamespace svo\n{\nusing Camera = vk::cameras::CameraGeometryBase;\nusing CameraPtr = std::shared_ptr<Camera>;\nusing CameraBundle = vk::cameras::NCamera;\nusing CameraBundlePtr = std::shared_ptr<CameraBundle>;\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/container_helpers.h",
    "content": "#pragma once\n\n#include <algorithm>\n#include <vector>\n#include <algorithm>\n\n#include <glog/logging.h>\n\nnamespace svo {\nnamespace common {\nnamespace container_helpers {\n\ntemplate <typename Type>\nvoid eraseIndicesFromVector(const std::vector<size_t>& sorted_indices_to_remove,\n                            std::vector<Type>* vector)\n{\n  CHECK_NOTNULL(vector);\n  std::vector<Type> to_swap;\n  to_swap.reserve(vector->size() - sorted_indices_to_remove.size());\n\n  size_t in_begin = 0u;\n\n  auto copy_until_and_skip = [&](const size_t end_index) {\n    CHECK_GE(end_index, in_begin) << \"Indices to remove must be sorted!\";\n    // TODO(tcies) Potential optimization: Use move iterators. Can't use memcpy\n    // because that will e.g. fail on shared pointers.\n    to_swap.insert(to_swap.end(), vector->begin() + in_begin,\n                   vector->begin() + end_index);\n    in_begin = end_index + 1;\n  };\n\n  // Copy blocks before indices to remove.\n  for (const size_t index_to_remove : sorted_indices_to_remove)\n  {\n    copy_until_and_skip(index_to_remove);\n  }\n\n  // Copy block after last index to remove.\n  copy_until_and_skip(vector->size());\n\n  vector->swap(to_swap);\n}\n\n\n// Solution from:\n// http://stackoverflow.com/questions/7571937/how-to-delete-items-from-a-stdvector-given-a-list-of-indices\ntemplate<typename ElementType, typename Allocator>\ninline std::vector<ElementType, Allocator> eraseIndicesFromVector_DEPRECATED(\n    const std::vector<ElementType, Allocator>& data,\n    const std::vector<size_t>& indices_to_delete) {\n  if (indices_to_delete.empty()) {\n    return data;\n  }\n  std::vector<size_t> mutable_indices_to_delete = indices_to_delete;\n  std::sort(mutable_indices_to_delete.begin(), mutable_indices_to_delete.end());\n  CHECK_LT(mutable_indices_to_delete.back(), data.size());\n\n  std::vector<ElementType, Allocator> reduced_vector;\n  CHECK_GE(data.size(), mutable_indices_to_delete.size());\n  reduced_vector.reserve(data.size() - mutable_indices_to_delete.size());\n\n  // Copy blocks from the input vector to the output vector.\n  typename std::vector<ElementType, Allocator>::const_iterator it_block_begin = data.begin();\n\n  for (typename std::vector<size_t>::const_iterator it = mutable_indices_to_delete.begin();\n      it != mutable_indices_to_delete.end(); ++it) {\n    typename std::vector<ElementType, Allocator>::const_iterator it_block_end = data.begin() + *it;\n    if (it_block_begin != it_block_end) {\n      std::copy(it_block_begin, it_block_end, std::back_inserter(reduced_vector));\n    }\n    it_block_begin = it_block_end + 1;\n  }\n\n  // Copy the last block.\n  if (it_block_begin != data.end()) {\n    std::copy(it_block_begin, data.end(), std::back_inserter(reduced_vector));\n  }\n  return reduced_vector;\n}\n\n}  // namespace container_helpers\n}  // namespace common\n}  // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/conversions.h",
    "content": "#pragma once\n\n#include <cmath>\n\nnamespace svo {\nnamespace common {\nnamespace conversions {\n\nconstexpr double kDegToRad = M_PI / 180.;\n\nconstexpr size_t kMilliSecondsToNanoSeconds = 1e6;\nconstexpr double kNanoSecondsToSeconds = 1e-9;\n\n}  // namespace conversions\n}  // namespace common\n}  // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/feature_wrapper.h",
    "content": "#pragma once\n\n#include <memory>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n// forward declaration\nclass Point;\nusing PointPtr = std::shared_ptr<Point>;\n\nclass Frame;\nusing FramePtr = std::shared_ptr<Frame>;\n\nstruct SeedRef\n{\n  FramePtr keyframe;\n  int seed_id = -1;\n  SeedRef(const FramePtr& _keyframe, const int _seed_id)\n    : keyframe(_keyframe)\n    , seed_id(_seed_id)\n  { ; }\n  SeedRef() = default;\n  ~SeedRef() = default;\n};\n\n/** @todo (MWE)\n */\nstruct FeatureWrapper\n{\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  FeatureType& type;                //!< Type can be corner or edgelet.\n  Eigen::Ref<Keypoint> px;          //!< Coordinates in pixels on pyramid level 0.\n  Eigen::Ref<BearingVector> f;      //!< Unit-bearing vector of the feature.\n  Eigen::Ref<GradientVector> grad;  //!< Dominant gradient direction for edglets, normalized.\n  Score& score;\n  Level& level;                     //!< Image pyramid level where feature was extracted.\n  PointPtr& landmark;\n  SeedRef& seed_ref;\n  int& track_id;\n\n  FeatureWrapper(\n      FeatureType& _type,\n      Eigen::Ref<Keypoint> _px,\n      Eigen::Ref<BearingVector> _f,\n      Eigen::Ref<GradientVector> _grad,\n      Score& _score,\n      Level& _pyramid_level,\n      PointPtr& _landmark,\n      SeedRef& _seed_ref,\n      int& _track_id)\n    : type(_type)\n    , px(_px)\n    , f(_f)\n    , grad(_grad)\n    , score(_score)\n    , level(_pyramid_level)\n    , landmark(_landmark)\n    , seed_ref(_seed_ref)\n    , track_id(_track_id)\n  { ; }\n\n  FeatureWrapper() = delete;\n  ~FeatureWrapper() = default;\n\n  //! @todo (MWE) do copy and copy-asignment operators make sense?\n  FeatureWrapper(const FeatureWrapper& other) = default;\n  FeatureWrapper& operator=(const FeatureWrapper& other) = default;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/frame.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <mutex>\n#include <unordered_map>\n#include <opencv2/core/core.hpp>\n#include <vikit/math_utils.h>\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/feature_wrapper.h>\n#include <svo/common/seed.h>\n\nnamespace svo {\n\n// custom (frame related) types\nusing ImgPyr = std::vector<cv::Mat>;\n\n//------------------------------------------------------------------------------\n/// A frame saves the image, the associated features and the estimated pose.\nclass Frame\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  using mutex_t = std::mutex;\n  using ulock_t = std::unique_lock<std::mutex>;\n  using Landmarks = std::vector<PointPtr>;\n  using SeedRefs  = std::vector<SeedRef>;\n\n  static int                    frame_counter_;         //!< Counts the number of created frames. Used to set the unique id.\n  int                           id_;                    //!< Unique id of the frame.\n  BundleId                      bundle_id_;\n  int                           nframe_index_ = -1;     //!< Storage index in NFrame.\n  CameraPtr                     cam_;                   //!< Camera model.\n  Transformation                T_f_w_;                 //!< Transform (f)rame from (w)orld.\n  ImgPyr                        img_pyr_;               //!< Image Pyramid.\n  cv::Mat                       original_color_image_;\n  // safe without the Eigen aligned allocator, since Position is 24 bytes\n  std::vector<std::pair<int, Position>, Eigen::aligned_allocator<\n  std::pair<int, Position> > > key_pts_;                //!< Five features and associated 3D points which are used to detect if two frames have overlapping field of view. store index + depth\n  bool                          is_keyframe_ = false;   //!< Was this frames selected as keyframe?\n  int                           last_published_ts_;     //!< Timestamp of last publishing.\n  Quaternion                    R_imu_world_;           //!< IMU Attitude provided by *external* attitude extimator\n\n  // gtsam integration. TODO(cfo) this can just be a temporary solution!\n  bool                          in_ba_graph_ = false;\n\n\n  int64_t        timestamp_ = -1;    ///!< Timestamp of when the image was recorded in nanoseconds.\n  Transformation T_body_cam_;\n  Transformation T_cam_body_;\n\n  // Features\n  // All vectors must have the same length/cols at all time!\n  // {\n  size_t num_features_ = 0u;    ///< the vectors below are initialized to the maximum number of feature-tracks\n  Keypoints px_vec_;            ///< Pixel Coordinates\n  Bearings f_vec_;              ///< Bearing Vector\n  Scores score_vec_;            ///< Keypoint detection scores\n  Levels  level_vec_;           ///< Level of the feature\n  Gradients grad_vec_;          ///< Gradient direction of edgelet normal\n  FeatureTypes type_vec_;       ///< Is the feature a corner or an edgelet?\n  Landmarks landmark_vec_;      ///< Reference to 3D point. Can contain nullpointers!\n  TrackIds track_id_vec_;       ///< ID of every observed 3d point. -1 if no point assigned.\n  SeedRefs seed_ref_vec_;       ///< Only for seeds during reprojection\n  SeedStates invmu_sigma2_a_b_vec_; ///< Vector containing all necessary information for seed update.\n  std::vector<bool> in_ba_graph_vec_;\n  FloatType seed_mu_range_;\n  // }\n\n  /// Default Constructor\n  Frame(\n      const CameraPtr& cam,\n      const cv::Mat& img,\n      const int64_t timestamp_ns,\n      const size_t n_pyr_levels);\n\n  /// Constructor without image. Just for testing!\n  Frame(\n      const int id,\n      const int64_t timestamp_ns,\n      const CameraPtr& cam,\n      const Transformation& T_world_cam);\n\n  /// Empty constructor. Just for testing!\n  Frame() {}\n\n  /// Destructor\n  virtual ~Frame();\n\n  // no copy\n  Frame(const Frame&) = delete;\n  Frame& operator=(const Frame&) = delete;\n\n  /// Initialize new frame and create image pyramid.\n  void initFrame(const cv::Mat& img, size_t n_pyr_levels);\n\n  /// Select this frame as keyframe.\n  void setKeyframe();\n\n  /// Delete feature.\n  void deleteLandmark(const size_t& feature_index);\n\n  /// Resize the number of features. (NOT THREADSAFE)\n  void resizeFeatureStorage(size_t num);\n\n  void clearFeatureStorage();\n\n  /// Copy feature data from another frame.\n  void copyFeaturesFrom(const Frame& other);\n\n  FeatureWrapper getFeatureWrapper(size_t idx);\n\n  FeatureWrapper getEmptyFeatureWrapper();\n\n  /// Get depth at seed.\n  inline FloatType getSeedDepth(size_t idx) const {\n    return seed::getDepth(invmu_sigma2_a_b_vec_.col(idx));\n  }\n\n  /// Get coordinates of seed in frame coordinates.\n  inline Position getSeedPosInFrame(size_t idx) const {\n    return f_vec_.col(idx) * getSeedDepth(idx);\n  }\n\n  /// Number of features. Not necessarily succesfully tracked ones.\n  inline size_t numFeatures() const {\n    return num_features_;\n  }\n\n  /// Check if i-th keypoint has a reference to a landmark.\n  inline bool isTrackedLandmark(size_t i) const {\n    return (landmark_vec_.at(i) != nullptr);\n  }\n\n  /// Number of successfully tracked features: seeds and actual landmarks.\n  inline size_t numTrackedFeatures() const {\n    size_t count = 0;\n    for(size_t i = 0; i < num_features_; ++i)\n    {\n      if(isTrackedLandmark(i) || isSeed(type_vec_[i]))\n        ++count;\n    }\n    return count;\n  }\n\n  /// Number of landmark references in frames.\n  inline size_t numLandmarks() const {\n    return std::count_if(landmark_vec_.begin(), landmark_vec_.end(),\n                         [](const PointPtr& p) { return p != nullptr; });\n  }\n\n  /// The KeyPoints are those five features which are closest to the 4 image corners\n  /// and to the center and which have a 3D point assigned. These points are used\n  /// to quickly check whether two frames have overlapping field of view.\n  void setKeyPoints();\n\n  /// Check if we can select five better key-points.\n  void checkKeyPoints(const FeaturePtr& ftr);\n\n  /// Check if a point in (w)orld coordinate frame is visible in the image.\n  bool isVisible(const Eigen::Vector3d& xyz_w) const;\n\n  /// Masks is same size as the image. Convention: 0 == masked, nonzero == valid.\n  const cv::Mat& getMask() const;\n\n  /// Full resolution image stored in the frame.\n  inline const cv::Mat& img() const { return img_pyr_[0]; }\n\n  /// Id of frame.\n  inline int id() const { return id_; }\n\n  /// Id of frame bundle\n  inline BundleId bundleId() const { return bundle_id_; }\n\n  /// Get storage index of frame in parent NFrame.\n  inline int getNFrameIndex() const {\n    CHECK_GE(nframe_index_, 0) << \"NFrame Index not set in frame.\";\n    return nframe_index_;\n  }\n\n  /// Set storage index of frame in parent NFrame.\n  inline void setNFrameIndex(size_t nframe_index) { nframe_index_ = nframe_index; }\n\n  /// Get camera pose in imu frame.\n  inline const Transformation& T_imu_cam() const { return T_body_cam_; }\n\n  /// Get imu pose in camera frame.\n  inline const Transformation& T_cam_imu() const { return T_cam_body_; }\n\n  /// Get pose of world origin in frame coordinates.\n  inline const Transformation& T_cam_world() const { return T_f_w_; }\n\n  /// Get pose of the cam in world coordinates.\n  inline Transformation T_world_cam() const { return T_f_w_.inverse(); }\n\n  /// Get pose of imu in world coordinates.\n  inline Transformation T_world_imu() const { return (T_imu_cam()*T_f_w_).inverse(); }\n\n  /// Get pose of world-origin in IMU coordinates.\n  inline Transformation T_imu_world() const { return T_imu_cam()*T_f_w_; }\n\n  /// Set camera to imu transformation.\n  inline void set_T_cam_imu(const Transformation& T_cam_imu)\n  {\n    T_cam_body_ = T_cam_imu;\n    T_body_cam_ = T_cam_imu.inverse();\n  }\n\n  /// Camera model.\n  inline const CameraPtr& cam() const { return cam_; }\n\n  /// Timestamp of frame in nanoseconds.\n  inline int64_t getTimestampNSec() const { return timestamp_; }\n\n  /// Timestamp of frame in seconds.\n  inline double getTimestampSec() const { return static_cast<double>(timestamp_)/1e9; }\n\n  /// Was this frame selected as keyframe?\n  inline bool isKeyframe() const { return is_keyframe_; }\n\n  /// Return the pose of the frame in the (w)orld coordinate frame.\n  inline Eigen::Vector3d pos() const { return T_world_cam().getPosition(); }\n\n  /// Get the pose of the imu frame in (w)orld coordinate frame.\n  inline Eigen::Vector3d imuPos() const { return T_world_imu().getPosition(); }\n\n  double getErrorMultiplier() const;\n\n  double getAngleError(double img_err) const;\n\n  /// Frame jacobian for projection of 3D point in (f)rame coordinate to\n  /// unit plane coordinates uv (focal length = 1).\n  inline static void jacobian_xyz2uv(\n      const Eigen::Vector3d& xyz_in_f,\n      Eigen::Matrix<double,2,6>& J)\n  {\n    const double x = xyz_in_f[0];\n    const double y = xyz_in_f[1];\n    const double z_inv = 1./xyz_in_f[2];\n    const double z_inv_2 = z_inv*z_inv;\n\n    J(0,0) = -z_inv;              // -1/z\n    J(0,1) = 0.0;                 // 0\n    J(0,2) = x*z_inv_2;           // x/z^2\n    J(0,3) = y*J(0,2);            // x*y/z^2\n    J(0,4) = -(1.0 + x*J(0,2));   // -(1.0 + x^2/z^2)\n    J(0,5) = y*z_inv;             // y/z\n\n    J(1,0) = 0.0;                 // 0\n    J(1,1) = -z_inv;              // -1/z\n    J(1,2) = y*z_inv_2;           // y/z^2\n    J(1,3) = 1.0 + y*J(1,2);      // 1.0 + y^2/z^2\n    J(1,4) = -J(0,3);             // -x*y/z^2\n    J(1,5) = -x*z_inv;            // -x/z\n  }\n\n  /// Jacobian of reprojection error (on unit plane) w.r.t. IMU pose.\n  inline static void jacobian_xyz2uv_imu(\n      const Transformation& T_cam_imu,\n      const Eigen::Vector3d& p_in_imu,\n      Eigen::Matrix<double,2,6>& J)\n  {\n    Eigen::Matrix<double,3,6> G_x; // Generators times pose\n    G_x.block<3,3>(0,0) = Eigen::Matrix3d::Identity();\n    G_x.block<3,3>(0,3) = -vk::skew(p_in_imu);\n    const Eigen::Vector3d p_in_cam = T_cam_imu * p_in_imu;\n\n    Eigen::Matrix<double,2,3> J_proj; // projection derivative\n    J_proj << 1, 0, -p_in_cam[0]/p_in_cam[2],\n        0, 1, -p_in_cam[1]/p_in_cam[2];\n\n    J = - 1.0/p_in_cam[2] * J_proj * T_cam_imu.getRotation().getRotationMatrix() * G_x;\n  }\n\n  /// Jacobian of reprojection error (on image plane) w.r.t. IMU pose.\n  inline static void jacobian_xyz2img_imu(\n      const Transformation& T_cam_imu,\n      const Eigen::Vector3d& p_in_imu,\n      const Eigen::Matrix<double, 2, 3>& J_cam,\n      Eigen::Matrix<double,2,6>& J)\n  {\n    Eigen::Matrix<double,3,6> G_x; // Generators times pose\n    G_x.block<3,3>(0,0) = Eigen::Matrix3d::Identity();\n    G_x.block<3,3>(0,3) = -vk::skew(p_in_imu);\n\n    J =  J_cam * T_cam_imu.getRotation().getRotationMatrix() * G_x;\n  }\n\n  /// Jacobian of using unit bearing vector for map point w.r.t IMU pose.\n  inline static void jacobian_xyz2f_imu(\n      const Transformation& T_cam_imu,\n      const Eigen::Vector3d& p_in_imu,\n      Eigen::Matrix<double, 3, 6>& J)\n  {\n    Eigen::Matrix<double,3,6> G_x;\n    G_x.block<3,3>(0,0) = Eigen::Matrix3d::Identity();\n    G_x.block<3,3>(0,3) = -vk::skew(p_in_imu);\n    const Eigen::Vector3d p_in_cam = T_cam_imu * p_in_imu;\n\n    Eigen::Matrix<double, 3, 3> J_normalize;\n    double x2 = p_in_cam[0]*p_in_cam[0];\n    double y2 = p_in_cam[1]*p_in_cam[1];\n    double z2 = p_in_cam[2]*p_in_cam[2];\n    double xy = p_in_cam[0]*p_in_cam[1];\n    double yz = p_in_cam[1]*p_in_cam[2];\n    double zx = p_in_cam[2]*p_in_cam[0];\n    J_normalize << y2+z2, -xy, -zx,\n        -xy, x2+z2, -yz,\n        -zx, -yz, x2+y2;\n    J_normalize *= 1 / std::pow(x2+y2+z2, 1.5);\n\n    J = J_normalize * T_cam_imu.getRotationMatrix() * G_x;\n  }\n\n  /// Jacobian to image plane(also taking distortion into consideration) w.r.t IMU pose.\n  static void jacobian_xyz2image_imu(\n      const Camera& cam,\n      const Transformation& T_cam_imu,\n      const Eigen::Vector3d& p_in_imu,\n      Eigen::Matrix<double,2,6>& J);\n\n\n  template<typename Archive>\n  void serialize(Archive& ar, const unsigned /*version*/)\n  {\n    ar & frame_counter_;\n    ar & id_;\n    ar & timestamp_;\n    //ar & cam_;\n    ar & T_f_w_;\n    //ar & Cov_;\n    ar & img_pyr_;\n    //ar & fts_;\n    //ar & key_pts_;\n    ar & is_keyframe_;\n    //ar & v_kf_;\n    ar & last_published_ts_;\n    // ar & R_imu_world_;\n  }\n};\n\nclass FrameBundle\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<FrameBundle> Ptr;\n  typedef std::vector<FramePtr> FrameList;\n\n  FrameBundle(const std::vector<FramePtr>& frames);\n  ~FrameBundle() = default;\n\n  FrameBundle(const FrameBundle&) = delete;\n  FrameBundle& operator=(const FrameBundle&) = delete;\n\n  inline const FramePtr& at(size_t i) const {\n    return frames_.at(i);\n  }\n\n  inline size_t size() const {\n    return frames_.size();\n  }\n\n  inline bool empty() const {\n    return frames_.empty();\n  }\n\n  inline BundleId getBundleId() const {\n    return bundle_id_;\n  }\n\n  /// Get timestamp of camera rig.\n  inline int64_t getMinTimestampNanoseconds() const {\n    CHECK(!frames_.empty());\n    return frames_[0]->getTimestampNSec();\n  }\n\n  /// Get pose of camera rig.\n  Transformation get_T_W_B() const {\n    CHECK(!frames_.empty());\n    return frames_[0]->T_world_imu();\n  }\n\n  /// Set pose of camera rig.\n  void set_T_W_B(const Transformation& T_W_B) {\n    for(const FramePtr& frame : frames_)\n      frame->T_f_w_ = (T_W_B*frame->T_body_cam_).inverse();\n  }\n\n  void setKeyframe() {\n    is_keyframe_ = true;\n  }\n\n  bool isKeyframe() const {\n    return is_keyframe_;\n  }\n\n  /// Number of landmark references in frames.\n  size_t numLandmarks() const;\n\n  /// Number of features. Not necessarily succesfully tracked ones.\n  size_t numFeatures() const;\n\n  /// Number of tracked features: both landmarks and matched seeds.\n  size_t numTrackedFeatures() const;\n\n  FrameList frames_;\n\n  /// IMU measurements since the last nframe (including the last IMU measurement\n  /// of the previous edge for integration).\n  Eigen::Matrix<int64_t, 1, Eigen::Dynamic> imu_timestamps_ns_;\n  Eigen::Matrix<double, 6, Eigen::Dynamic> imu_measurements_; // Order: [acc, gyro]\n\n  // Make class iterable:\n  typedef FrameList::value_type value_type;\n  typedef FrameList::iterator iterator;\n  typedef FrameList::const_iterator const_iterator;\n  FrameList::iterator begin() { return frames_.begin(); }\n  FrameList::iterator end() { return frames_.end(); }\n  FrameList::const_iterator begin() const { return frames_.begin(); }\n  FrameList::const_iterator end() const { return frames_.end(); }\n  FrameList::const_iterator cbegin() const { return frames_.cbegin(); }\n  FrameList::const_iterator cend() const { return frames_.cend(); }\n\nprivate:\n\n  bool is_keyframe_ = false;\n\n  BundleId bundle_id_;\n};\n\n/// Some helper functions for the frame object.\nnamespace frame_utils {\n\n/// Creates an image pyramid of half-sampled images.\nvoid createImgPyramid(\n    const cv::Mat& img_level_0,\n    int n_levels,\n    ImgPyr& pyr);\n\n/// Get the average depth of the features in the image.\nbool getSceneDepth(\n    const FramePtr& frame,\n    double& depth_median,\n    double& depth_min,\n    double& depth_max);\n\nvoid computeNormalizedBearingVectors(\n    const Keypoints& px_vec,\n    const Camera& cam,\n    Bearings* f_vec);\n\n} // namespace frame_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/imu_calibration.h",
    "content": "#pragma once\n\n#include <deque>\n#include <iostream>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n/// \\brief Settings for the IMU statistics\n/// Check the following references for more information about the IMU parameters:\n/// * https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model-and-Intrinsics\n/// * http://www-users.cs.umn.edu/~trawny/Publications/Quaternions_3D.pdf (Sec. 2.1)\n/// Default parameters are for ADIS16448 IMU.\nclass ImuCalibration\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef std::shared_ptr<ImuCalibration> Ptr;\n\n  /// Camera-IMU delay: delay_imu_cam = cam_ts - cam_ts_delay\n  double delay_imu_cam = 0.0;\n\n  /// Maximum delay camera-imu\n  double max_imu_delta_t = 0.01;\n\n  /// Gyro noise density (sigma). [rad/s*1/sqrt(Hz)]\n  double gyro_noise_density = 0.00073088444;\n\n  /// Accelerometer noise density (sigma). [m/s^2*1/sqrt(Hz)]\n  double acc_noise_density = 0.01883649;\n\n  /// IMU integration sigma (sigma). GTSAM preintegration option.\n  double imu_integration_sigma = 0.0;\n\n  /// Gyro bias random walk (sigma). [rad/s^2*1/sqrt(Hz)]\n  double gyro_bias_random_walk_sigma = 0.00038765;\n\n  /// Accelerometer bias random walk (sigma). [m/s^3*1/sqrt(Hz)]\n  double acc_bias_random_walk_sigma = 0.012589254;\n\n  /// Norm of the Gravitational acceleration. [m/s^2]\n  double gravity_magnitude = 9.81007;\n\n  /// Coriolis acceleration (earth rotation rate).\n  Eigen::Vector3d omega_coriolis = Eigen::Vector3d::Zero();\n\n  /// Accelerometer saturation. [m/s^2]\n  double saturation_accel_max = 150;\n\n  /// Gyroscope saturation. [rad/s]\n  double saturation_omega_max = 7.8;\n\n  /// Expected IMU Rate [1/s]\n  double imu_rate = 20;\n\n  ImuCalibration() = default;\n  ~ImuCalibration() = default;\n\n  inline void print(const std::string& s = \"IMU Calibration: \") const\n  {\n    std::cout << s << std::endl\n              << \"  delay_imu_cam = \" << delay_imu_cam << std::endl\n              << \"  sigma_omega_c = \" << gyro_noise_density << std::endl\n              << \"  sigma_acc_c = \" << acc_noise_density << std::endl\n              << \"  sigma_integration_c = \" << imu_integration_sigma << std::endl\n              << \"  sigma_omega_bias_c = \" << gyro_bias_random_walk_sigma << std::endl\n              << \"  sigma_acc_bias_c = \" << acc_bias_random_walk_sigma << std::endl\n              << \"  g = \" << gravity_magnitude << std::endl\n              << \"  coriolis = \" << omega_coriolis.transpose() << std::endl;\n  }\n};\n\nclass ImuInitialization\n{\npublic:\n  \n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  \n  typedef std::shared_ptr<ImuInitialization> Ptr;\n\n  /// Initial velocity, in world frame!\n  Eigen::Vector3d velocity = Eigen::Vector3d::Zero();\n\n  /// Initial gyroscope bias\n  Eigen::Vector3d omega_bias = Eigen::Vector3d::Zero();\n\n  /// Initial accelerometer bias\n  Eigen::Vector3d acc_bias = Eigen::Vector3d::Zero();\n\n  /// Initial velocity uncertainty\n  double velocity_sigma = 2.0;\n\n  /// Initial gyroscope bias uncertainty\n  double omega_bias_sigma = 0.01;\n\n  /// Initial acceleromter bias uncertainty\n  double acc_bias_sigma = 0.1;\n\n  inline void print(const std::string& s = \"IMU Initialization: \") const\n  {\n    std::cout << s << std::endl\n              << \"  velocity = \" << velocity.transpose() << std::endl\n              << \"  omega_bias = \" << omega_bias.transpose() << std::endl\n              << \"  acc_bias = \" << acc_bias.transpose() << std::endl\n              << \"  velocity_sigma = \" << velocity_sigma << std::endl\n              << \"  omega_bias_sigma = \" << omega_bias_sigma << std::endl\n              << \"  acc_bias_sigma = \" << acc_bias_sigma << std::endl;\n  }\n};\n\n// TODO(cfo) Deprecate\nstruct ImuMeasurement\n{\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  double timestamp_; ///< In seconds.\n  Eigen::Vector3d angular_velocity_;\n  Eigen::Vector3d linear_acceleration_;\n  ImuMeasurement() {}\n  ImuMeasurement(\n      const double timestamp,\n      const Eigen::Vector3d& angular_velocity,\n      const Eigen::Vector3d& linear_acceleration)\n  : timestamp_(timestamp)\n  , angular_velocity_(angular_velocity)\n  , linear_acceleration_(linear_acceleration)\n  {}\n};\ntypedef std::deque<ImuMeasurement,\nEigen::aligned_allocator<ImuMeasurement> > ImuMeasurements;\n\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/logging.h",
    "content": "#pragma once\n\n#ifdef LUCY_LOGGING\n# include <oal/logfile/baselogger.hpp>\n# define PREFIX \"tracking\"\n# define LOG_TAG \"svo\"\n# include <oal/logfile/enable_logging_macros.hpp>\n#endif\n\n#ifdef SVO_USE_ROS\n# include <ros/console.h>\n# define SVO_DEBUG_STREAM(x) ROS_DEBUG_STREAM(x)\n# define SVO_INFO_STREAM(x) ROS_INFO_STREAM(x)\n# define SVO_WARN_STREAM(x) ROS_WARN_STREAM(x)\n# define SVO_WARN_STREAM_THROTTLE(rate, x) ROS_WARN_STREAM_THROTTLE(rate, x)\n# define SVO_ERROR_STREAM(x) ROS_ERROR_STREAM(x)\n#else\n# ifdef LUCY_LOGGING\n#   define SVO_INFO_STREAM(x) {std::stringstream ss; ss << x; LOGI(\"%s\", ss.str().c_str()); }\n#   define SVO_WARN_STREAM(x) {std::stringstream ss; ss << x; LOGW(\"%s\", ss.str().c_str()); }\n#   define SVO_DEBUG_STREAM(x) {std::stringstream ss; ss << x; LOGD(\"%s\", ss.str().c_str()); }\n#   define SVO_ERROR_STREAM(x) {std::stringstream ss; ss << x; LOGE(\"%s\", ss.str().c_str()); }\n# else\n#   define SVO_INFO_STREAM(x) {std::cerr<<\"\\033[0;0m[INFO] SVO: \"<<x<<\"\\033[0;0m\"<<std::endl; }\n#   define SVO_DEBUG_STREAM(x) {std::cerr<<\"\\033[0;0m[DEBUG] SVO: \"<<x<<\"\\033[0;0m\"<<std::endl; }\n#   define SVO_WARN_STREAM(x) {std::cerr<<\"\\033[0;33m[WARN] SVO: \"<<x<<\"\\033[0;0m\"<<std::endl; }\n#   define SVO_ERROR_STREAM(x) {std::cerr<<\"\\033[1;31m[ERROR] SVO: \"<<x<<\"\\033[0;0m\"<<std::endl; }\n#endif\n# include <chrono> // Adapted from rosconsole. Copyright (c) 2008, Willow Garage, Inc.\n# define SVO_WARN_STREAM_THROTTLE(rate, x) \\\n    do { \\\n      static double __log_stream_throttle__last_hit__ = 0.0; \\\n      std::chrono::time_point<std::chrono::system_clock> __log_stream_throttle__now__ = \\\n      std::chrono::system_clock::now(); \\\n      if (__log_stream_throttle__last_hit__ + rate <= \\\n          std::chrono::duration_cast<std::chrono::seconds>( \\\n          __log_stream_throttle__now__.time_since_epoch()).count()) { \\\n        __log_stream_throttle__last_hit__ = \\\n        std::chrono::duration_cast<std::chrono::seconds>( \\\n        __log_stream_throttle__now__.time_since_epoch()).count(); \\\n        SVO_WARN_STREAM(x); \\\n      } \\\n    } while(0)\n#endif\n"
  },
  {
    "path": "svo_common/include/svo/common/occupancy_grid_2d.h",
    "content": "#pragma once\n\n#include <svo/common/types.h>\n#include <glog/logging.h>\n\nnamespace svo {\n\t\n/// We divide the image into a grid of cells and try to find maximally one\n/// feature per cell. This is to ensure good distribution of features in the\n/// image.\nclass OccupandyGrid2D\n{\npublic:\n  using Grid = std::vector<bool>;\n\n  OccupandyGrid2D(int cell_size, int n_cols, int n_rows)\n    : cell_size(cell_size)\n    , n_cols(n_cols)\n    , n_rows(n_rows)\n    , occupancy_(n_cols*n_rows, false)\n  {}\n  ~OccupandyGrid2D() = default;\n\n  const int cell_size;\n  const int n_cols;\n  const int n_rows;\n  Grid occupancy_;\n\n  inline void reset() {\n    std::fill(occupancy_.begin(), occupancy_.end(), false);\n  }\n\n  inline size_t size() {\n    return occupancy_.size();\n  }\n\n  inline bool empty() {\n    return occupancy_.empty();\n  }\n\n  inline bool isOccupied(const size_t cell_index)\n  {\n    CHECK_LT(cell_index, occupancy_.size());\n    return occupancy_[cell_index];\n  }\n\n  inline void setOccupied(const size_t cell_index)\n  {\n    CHECK_LT(cell_index, occupancy_.size());\n    occupancy_[cell_index] = true;\n  }\n\n  template<typename Derived>\n  size_t getCellIndex(const Eigen::MatrixBase<Derived>& px)\n  {\n    EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 2, 1);\n    return static_cast<size_t>((px(1))/cell_size*n_cols\n                             + (px(0))/cell_size);\n  }\n\n  inline size_t getCellIndex(int x, int y, int scale = 1) const\n  {\n    return static_cast<size_t>((scale*y)/cell_size*n_cols\n                             + (scale*x)/cell_size);\n  }\n\n  inline void fillWithKeypoints(const Keypoints& keypoints)\n  {\n    // TODO(cfo): could be implemented using block operations.\n    for(int i = 0; i < keypoints.cols(); ++i)\n      occupancy_.at(getCellIndex(static_cast<int>(keypoints(0,i)),\n                                 static_cast<int>(keypoints(1,i)), 1)) = true;\n  }\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/point.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <array>\n#include <atomic>\n#include <iostream>\n#include <unordered_map>\n\n#include <glog/logging.h>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n/// Thread-safe point-ID provider.\nclass PointIdProvider\n{\npublic:\n  PointIdProvider() = delete;\n\n  static int getNewPointId()\n  {\n    return last_id_.fetch_add(1);\n  }\n\nprivate:\n   static std::atomic<int> last_id_;\n};\n\nstruct KeypointIdentifier\n{\n  FrameWeakPtr frame;\n  int frame_id;\n  size_t keypoint_index_;\n  KeypointIdentifier(const FramePtr& _frame, const size_t _feature_index);\n\n  inline bool operator ==(const KeypointIdentifier& other) const\n  {\n    CHECK(frame.lock() && other.frame.lock());\n    return frame.lock().get() == other.frame.lock().get() &&\n        frame_id == other.frame_id && keypoint_index_ == other.keypoint_index_;\n  }\n};\nusing KeypointIdentifierList = std::vector<KeypointIdentifier>;\nusing Matrix23d = Eigen::Matrix<double, 2, 3>;\n\n\n/// A 3D point on the surface of the scene.\nclass Point\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  // observation saves frame-id and pointer to feature\n  typedef std::vector<KeypointIdentifier> KeypointIdentifierList;\n\n  enum PointType {\n    TYPE_EDGELET_SEED,\n    TYPE_CORNER_SEED,\n    TYPE_EDGELET,\n    TYPE_CORNER\n  };\n\n  int           id_;                       //!< Unique ID of the point.\n  Position      pos_;                      //!< 3d pos of the point in the world coordinate frame.\n  KeypointIdentifierList  obs_;                      //!< References to keyframes which observe the point\n  Eigen::Vector3d      normal_;                   //!< Surface normal at point.\n  Eigen::Matrix2d      normal_information_;       //!< Inverse covariance matrix of normal estimation.\n  bool          normal_set_ = false;       //!< Flag whether the surface normal was estimated or not.\n  uint64_t      last_published_ts_ = 0;    //!< Timestamp of last publishing.\n  std::array<int, 8> last_projected_kf_id_;//!< Flag for the reprojection: don't reproject a pt twice in the same camera\n  PointType     type_ = TYPE_CORNER;       //!< Quality of the point.\n  int           n_failed_reproj_ = 0;      //!< Number of failed reprojections. Used to assess the quality of the point.\n  int           n_succeeded_reproj_ = 0;   //!< Number of succeeded reprojections. Used to assess the quality of the point.\n  int           last_structure_optim_ = 0; //!< Timestamp of last point optimization\n\n  // bundle adjustment:\n  bool          in_ba_graph_ = false;     //!< Was this point already added to the iSAM bundle adjustment graph?\n  int64_t       last_ba_update_ = -1;     //!< Timestamp of last estimate in bundle adjustment.\n\n  /// Default constructor.\n  Point(const Eigen::Vector3d& pos);\n\n  /// Constructor with id: Only for testing!\n  Point(const int id, const Eigen::Vector3d& pos);\n\n  /// Destructor.\n  ~Point();\n\n  // no copy\n  Point(const Point&) = delete;\n  Point& operator=(const Point&) = delete;\n\n  /// Add a reference to a frame.\n  void addObservation(const FramePtr& frame, const size_t feature_index);\n\n  /// Remove observation via frame-ID.\n  void removeObservation(int frame_id);\n\n  /// Initialize point normal. The inital estimate will point towards the frame.\n  void initNormal();\n\n  /// Get Frame with similar viewpoint.\n  bool getCloseViewObs(const Eigen::Vector3d& pos, FramePtr& ref_frame, size_t& ref_feature_index) const;\n\n  /// Get parallax angle of triangulation. Useful to check if point is constrained.\n  double getTriangulationParallax() const;\n\n  /// Get frame with seed of this point.\n  FramePtr getSeedFrame() const;\n\n  /// Get number of observations.\n  inline size_t nRefs() const { return obs_.size(); }\n\n  /// Retriangulate the point from its observations.\n  bool triangulateLinear();\n\n  /// update Hessian and Gradient of point based on one observation, using unit plane.\n  void updateHessianGradientUnitPlane(\n      const Eigen::Ref<BearingVector>& f,\n      const Eigen::Vector3d& p_in_f,\n      const Eigen::Matrix3d& R_f_w,\n      Eigen::Matrix3d& A,\n      Eigen::Vector3d& b,\n      double& new_chi2);\n\n  /// update Hessian and Gradient of point based on one observation, using unit sphere.\n  void updateHessianGradientUnitSphere(\n      const Eigen::Ref<BearingVector>& f,\n      const Eigen::Vector3d& p_in_f,\n      const Eigen::Matrix3d& R_f_w,\n      Eigen::Matrix3d& A,\n      Eigen::Vector3d& b,\n      double& new_chi2);\n\n  /// Optimize point position through minimizing the reprojection error.\n  void optimize(const size_t n_iter, bool using_bearing_vector=false);\n\n  /// Print infos about the point.\n  void print(const std::string& s = \"Point:\") const;\n\n  /// Return unique point identifier.\n  inline int id() const { return id_; }\n\n  /// 3D position of point in world frame.\n  inline const Eigen::Vector3d& pos() const { return pos_; }\n\n  /// Return type of point.\n  inline const PointType& type() const { return type_; }\n\n  /// Jacobian of point projection on unit plane (focal length = 1) in frame (f).\n  inline static void jacobian_xyz2uv(\n      const Eigen::Vector3d& p_in_f,\n      const Eigen::Matrix3d& R_f_w,\n      svo::Matrix23d& point_jac)\n  {\n    const double z_inv = 1.0/p_in_f[2];\n    const double z_inv_sq = z_inv*z_inv;\n    point_jac(0, 0) = z_inv;\n    point_jac(0, 1) = 0.0;\n    point_jac(0, 2) = -p_in_f[0] * z_inv_sq;\n    point_jac(1, 0) = 0.0;\n    point_jac(1, 1) = z_inv;\n    point_jac(1, 2) = -p_in_f[1] * z_inv_sq;\n    point_jac = - point_jac * R_f_w;\n  }\n\n  /// Jacobian of point to unit bearing vector.\n  inline static void jacobian_xyz2f(\n      const Eigen::Vector3d& p_in_f,\n      const Eigen::Matrix3d& R_f_w,\n      Eigen::Matrix3d& point_jac)\n  {\n    Eigen::Matrix3d J_normalize;\n    double x2 = p_in_f[0]*p_in_f[0];\n    double y2 = p_in_f[1]*p_in_f[1];\n    double z2 = p_in_f[2]*p_in_f[2];\n    double xy = p_in_f[0]*p_in_f[1];\n    double yz = p_in_f[1]*p_in_f[2];\n    double zx = p_in_f[2]*p_in_f[0];\n    J_normalize << y2+z2, -xy, -zx,\n        -xy, x2+z2, -yz,\n        -zx, -yz, x2+y2;\n    J_normalize *= 1.0 / std::pow(x2+y2+z2, 1.5);\n    point_jac = (-1.0) * J_normalize * R_f_w;\n  }\n};\n\n} // namespace svo\n\nnamespace std {\n\ninline ostream& operator <<(ostream& stream, const svo::KeypointIdentifier& id)\n{\n  stream << \"(\" << id.frame_id << \", \" << id.keypoint_index_ << \")\";\n  return stream;\n}\n\n}  // namespace std\n"
  },
  {
    "path": "svo_common/include/svo/common/seed.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <glog/logging.h>\n#include <svo/common/types.h>\n\nnamespace svo {\nnamespace seed {\n\nenum SeedStateIndex\n{\n  kMu,\n  kSigma2,\n  kA,\n  kB,\n};\n\n// -----------------------------------------------------------------------------\n// Accessors\n\ninline FloatType mu(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(0);\n}\n\ninline FloatType sigma2(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(1);\n}\n\ninline FloatType a(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(2);\n}\n\ninline FloatType b(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(3);\n}\n\n#if 0\n// -----------------------------------------------------------------------------\n// Exponential Depth Parametrization\n\ninline FloatType getDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return std::exp(mu_sigma2_a_b(0));\n}\n\ninline FloatType getInvDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return std::exp(-mu_sigma2_a_b(0)); // exp(x)^-1 = exp(-x)\n}\n\ninline FloatType getInvMinDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  const FloatType sigma = std::sqrt(mu_sigma2_a_b(1));\n  return std::exp(-(mu_sigma2_a_b(0) - sigma));\n}\n\ninline FloatType getInvMaxDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  const FloatType sigma = std::sqrt(mu_sigma2_a_b(1));\n  return std::exp(-(mu_sigma2_a_b(0) + sigma));\n}\n\ninline FloatType getMeanFromDepth(FloatType depth)\n{\n  return std::log(depth);\n}\n\ninline FloatType getMeanRangeFromDepthMinMax(FloatType depth_min, FloatType depth_max)\n{\n  CHECK_GE(depth_max, 0.0);\n  CHECK_GE(depth_min, 0.0);\n  return (std::log(depth_max) - std::log(depth_min))*2.0;\n}\n\ninline FloatType getInitSigma2FromMuRange(FloatType mu_range)\n{\n  return mu_range * mu_range / 36.0;\n}\n\ninline bool isConverged(const Eigen::Ref<const SeedState>& mu_sigma2_a_b,\n                        FloatType mu_range,\n                        FloatType sigma2_convergence_threshold)\n{\n  // If initial uncertainty was reduced by factor sigma2_convergence_threshold\n  // we accept the seed as converged.\n  const FloatType thresh = mu_range / sigma2_convergence_threshold;\n  return (mu_sigma2_a_b(1) < thresh * thresh);\n}\n\ninline FloatType getSigma2FromDepthSigma(FloatType depth, FloatType depth_sigma)\n{\n  const FloatType sigma = 0.5 * (std::log(depth+depth_sigma) - std::log(depth-depth_sigma));\n  return sigma * sigma;\n}\n#else\n// -----------------------------------------------------------------------------\n// Inverse Depth Parametrization\n\ninline FloatType getDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return 1.0 / mu_sigma2_a_b(0);\n}\n\ninline FloatType getInvDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(0);\n}\n\ninline FloatType getInvMinDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return mu_sigma2_a_b(0) + std::sqrt(mu_sigma2_a_b(1));\n}\n\ninline FloatType getInvMaxDepth(const Eigen::Ref<const SeedState>& mu_sigma2_a_b)\n{\n  return std::max(mu_sigma2_a_b(0) - std::sqrt(mu_sigma2_a_b(1)), 0.00000001);\n}\n\ninline FloatType getMeanFromDepth(FloatType depth)\n{\n  return 1.0 / depth;\n}\n\ninline FloatType getMeanRangeFromDepthMinMax(FloatType depth_min, FloatType /*depth_max*/)\n{\n  return 1.0 / depth_min;\n}\n\ninline FloatType getInitSigma2FromMuRange(FloatType mu_range)\n{\n  return mu_range * mu_range / 36.0;\n}\n\ninline bool isConverged(const Eigen::Ref<const SeedState>& mu_sigma2_a_b,\n                        FloatType mu_range,\n                        FloatType sigma2_convergence_threshold)\n{\n  // If initial uncertainty was reduced by factor sigma2_convergence_threshold\n  // we accept the seed as converged.\n  const FloatType thresh = mu_range / sigma2_convergence_threshold;\n  return (mu_sigma2_a_b(1) < thresh * thresh);\n}\n\ninline FloatType getSigma2FromDepthSigma(FloatType depth, FloatType depth_sigma)\n{\n  const FloatType sigma = 0.5 * (1.0 / std::max(0.000000000001, depth - depth_sigma)\n                               - 1.0 / (depth + depth_sigma));\n  return sigma * sigma;\n}\n#endif\n\n// -----------------------------------------------------------------------------\n// Utils\n\ninline void increaseOutlierProbability(Eigen::Ref<SeedState>& mu_sigma2_a_b)\n{\n  mu_sigma2_a_b(3) += 1;\n}\n\n} // namespace seed\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/transformation.h",
    "content": "#pragma once\n\n#include <kindr/minimal/quat-transformation.h>\n\nnamespace svo {\n\nusing Transformation = kindr::minimal::QuatTransformation;\nusing Quaternion = kindr::minimal::RotationQuaternion;\n\n} // namespace svo\n"
  },
  {
    "path": "svo_common/include/svo/common/types.h",
    "content": "#pragma once\n\n#include <memory>\n#include <vector>\n#include <opencv2/core/core.hpp>\n#include <Eigen/Core>\n\nnamespace svo {\n\n//------------------------------------------------------------------------------\n// Scalars and fp precision.\nusing size_t = std::size_t;\nusing uint8_t = std::uint8_t;\nusing uint64_t = std::uint64_t;\nusing FloatType = double;\n\n//------------------------------------------------------------------------------\n// Feature containers.\nusing Keypoint = Eigen::Matrix<FloatType, 2, 1>;\nusing BearingVector = Eigen::Matrix<FloatType, 3, 1>;\nusing Position = Eigen::Matrix<FloatType, 3, 1>;\nusing GradientVector = Eigen::Matrix<FloatType, 2, 1>;\nusing SeedState = Eigen::Matrix<FloatType, 4, 1>;\nusing Level = int;\nusing Score = FloatType;\nusing Keypoints = Eigen::Matrix<FloatType, 2, Eigen::Dynamic, Eigen::ColMajor>;\nusing Bearings = Eigen::Matrix<FloatType, 3, Eigen::Dynamic, Eigen::ColMajor>;\nusing Positions = Eigen::Matrix<FloatType, 3, Eigen::Dynamic, Eigen::ColMajor>;\nusing Gradients = Eigen::Matrix<FloatType, 2, Eigen::Dynamic, Eigen::ColMajor>;\nusing Scores = Eigen::Matrix<FloatType, Eigen::Dynamic, 1, Eigen::ColMajor>;\nusing Levels = Eigen::Matrix<Level, Eigen::Dynamic, 1, Eigen::ColMajor>;\nusing InlierMask = Eigen::Matrix<bool, Eigen::Dynamic, 1, Eigen::ColMajor>;\nusing SeedStates = Eigen::Matrix<FloatType, 4, Eigen::Dynamic, Eigen::ColMajor>;\nusing TrackIds = Eigen::VectorXi;\n\n//------------------------------------------------------------------------------\n// Forward declarations and common types for simplicity.\nstruct Feature;\nusing FeaturePtr = std::shared_ptr<Feature>;\nclass Frame;\nusing FramePtr = std::shared_ptr<Frame>;\nusing FrameWeakPtr = std::weak_ptr<Frame>;\nclass FrameBundle;\nusing FrameBundlePtr = std::shared_ptr<FrameBundle>;\nusing BundleId = int;\nusing ImgPyr = std::vector<cv::Mat>;\n\n//------------------------------------------------------------------------------\n// Feature Type.\nenum class FeatureType : uint8_t\n{\n  kEdgeletSeed = 0,\n  kCornerSeed = 1,\n  kEdgeletSeedConverged = 2,\n  kCornerSeedConverged = 3,\n  kEdgelet = 4,\n  kCorner = 5,\n  kOutlier = 6,\n};\nusing FeatureTypes = std::vector<FeatureType>;\n\ninline bool isSeed(const FeatureType& t)\n{\n  return static_cast<uint8_t>(t) < 4;\n}\n\ninline bool isConvergedSeed(const FeatureType& t)\n{\n  return (t == FeatureType::kEdgeletSeedConverged\n          || t == FeatureType::kCornerSeedConverged);\n}\n\ninline bool isUnconvergedSeed(const FeatureType& t)\n{\n  return static_cast<uint8_t>(t) < 2;\n}\n\ninline bool isEdgelet(const FeatureType& t)\n{\n  return (t == FeatureType::kEdgelet\n          || t == FeatureType::kEdgeletSeed\n          || t == FeatureType::kEdgeletSeedConverged);\n}\n\ninline bool isCorner(const FeatureType& t)\n{\n  return (t == FeatureType::kCorner\n          || t == FeatureType::kCornerSeed\n          || t == FeatureType::kCornerSeedConverged);\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_common/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_common</name>\n  <description>\n    SVO common module for types and common base functionality used by other modules\n  </description>\n  <version>0.0.1</version>\n  <license>tbd</license>\n\n  <author>Christian Forster</author>\n  <author>Manuel Werlberger</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>svo_cmake</depend>\n  <depend>vikit_common</depend>\n  <depend>vikit_cameras</depend>\n  <depend>fast</depend>\n\n  <depend>glog_catkin</depend>\n  <depend>eigen_catkin</depend>\n\n  <test_depend>gtest</test_depend>\n  <depend>eigen_checks</depend>\n</package>\n"
  },
  {
    "path": "svo_common/src/empty.cpp",
    "content": ""
  },
  {
    "path": "svo_common/src/frame.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/common/frame.h>\n\n#include <opencv2/imgproc/imgproc.hpp>\n\n#include <algorithm>\n#include <stdexcept>\n#include <fast/fast.h>\n#include <vikit/math_utils.h>\n#include <vikit/vision.h>\n\n#include <svo/common/logging.h>\n#include <svo/common/point.h>\n#include <svo/common/camera.h>\n\nnamespace svo {\n\nint Frame::frame_counter_ = 0;\n\nFrame::Frame(\n    const CameraPtr& cam,\n    const cv::Mat& img,\n    const int64_t timestamp_ns,\n    size_t n_pyr_levels)\n  : id_(frame_counter_++) // TEMPORARY\n  , cam_(cam)\n  , key_pts_(5, std::make_pair(-1, BearingVector()))\n  , timestamp_(timestamp_ns)\n{\n  initFrame(img, n_pyr_levels);\n}\n\nFrame::Frame(\n    const int id,\n    const int64_t timestamp_ns,\n    const CameraPtr& cam,\n    const Transformation& T_world_cam)\n  : id_(id)\n  , cam_(cam)\n  , T_f_w_(T_world_cam.inverse())\n  , key_pts_(5, std::make_pair(-1, BearingVector()))\n  , timestamp_(timestamp_ns)\n{}\n\nFrame::~Frame()\n{}\n\nvoid Frame::initFrame(const cv::Mat& img, size_t n_pyr_levels)\n{\n  CHECK_EQ(key_pts_[0].first, -1);\n  CHECK_EQ(key_pts_[4].first, -1);\n\n  // check image\n  CHECK(!img.empty());\n  CHECK_EQ(img.cols, static_cast<int>(cam_->imageWidth()));\n  CHECK_EQ(img.rows, static_cast<int>(cam_->imageHeight()));\n\n  if (img.type() == CV_8UC1)\n  {\n    frame_utils::createImgPyramid(img, n_pyr_levels, img_pyr_);\n  }\n  else if (img.type() == CV_8UC3)\n  {\n    cv::Mat gray_image;\n    cv::cvtColor(img, gray_image, CV_BGR2GRAY);\n    frame_utils::createImgPyramid(gray_image, n_pyr_levels, img_pyr_);\n    original_color_image_ = img;\n  }\n  else\n  {\n    LOG(FATAL) << \"Unknown image type \" << img.type() << \"!\";\n  }\n}\n\nvoid Frame::setKeyframe()\n{\n  is_keyframe_ = true;\n  setKeyPoints();\n}\n\nvoid Frame::deleteLandmark(const size_t& feature_index)\n{\n  landmark_vec_.at(feature_index) = nullptr;\n}\n\nvoid Frame::resizeFeatureStorage(size_t num)\n{\n  if(static_cast<size_t>(px_vec_.cols()) < num)\n  {\n    const size_t n_new = num - num_features_;\n\n    px_vec_.conservativeResize(Eigen::NoChange, num);\n    f_vec_.conservativeResize(Eigen::NoChange, num);\n    score_vec_.conservativeResize(num);\n    level_vec_.conservativeResize(num);\n    grad_vec_.conservativeResize(Eigen::NoChange, num);\n    invmu_sigma2_a_b_vec_.conservativeResize(Eigen::NoChange, num);\n    track_id_vec_.conservativeResize(num);\n\n    type_vec_.resize(num, FeatureType::kCorner);\n    landmark_vec_.resize(num, nullptr);\n    seed_ref_vec_.resize(num);\n    in_ba_graph_vec_.resize(num, false);\n\n    // initial values\n    level_vec_.tail(n_new).setZero();\n    track_id_vec_.tail(n_new).setConstant(-1);\n  }\n  else if(num < static_cast<size_t>(px_vec_.cols()))\n  {\n    SVO_ERROR_STREAM(\"Downsizing storage not implemented. cols = \" << px_vec_.cols()\n                     << \" , desired = \" << num << \", num features = \" << num_features_);\n  }\n}\n\nvoid Frame::clearFeatureStorage()\n{\n  px_vec_.resize(Eigen::NoChange, 0);\n  f_vec_.resize(Eigen::NoChange, 0);\n  score_vec_.resize(0);\n  level_vec_.resize(0);\n  grad_vec_.resize(Eigen::NoChange, 0);\n  invmu_sigma2_a_b_vec_.resize(Eigen::NoChange, 0);\n  track_id_vec_.resize(0);\n  type_vec_.clear();\n  landmark_vec_.clear();\n  seed_ref_vec_.clear();\n  in_ba_graph_vec_.clear();\n  num_features_ = 0;\n}\n\nvoid Frame::copyFeaturesFrom(const Frame& other)\n{\n  px_vec_ = other.px_vec_;\n  f_vec_ = other.f_vec_;\n  score_vec_ = other.score_vec_;\n  level_vec_ = other.level_vec_;\n  grad_vec_ = other.grad_vec_;\n  type_vec_ = other.type_vec_;\n  landmark_vec_ = other.landmark_vec_;\n  seed_ref_vec_ = other.seed_ref_vec_;\n  invmu_sigma2_a_b_vec_ = other.invmu_sigma2_a_b_vec_;\n  track_id_vec_ = other.track_id_vec_;\n  num_features_ = other.num_features_;\n  in_ba_graph_vec_ = other.in_ba_graph_vec_;\n}\n\nFeatureWrapper Frame::getFeatureWrapper(size_t index)\n{\n  CHECK_LT(index, static_cast<size_t>(px_vec_.cols()));\n  return FeatureWrapper(\n        type_vec_[index], px_vec_.col(index), f_vec_.col(index),\n        grad_vec_.col(index), score_vec_(index), level_vec_(index), landmark_vec_[index],\n        seed_ref_vec_[index], track_id_vec_(index));\n}\n\nFeatureWrapper Frame::getEmptyFeatureWrapper()\n{\n  return getFeatureWrapper(num_features_);\n}\n\nvoid Frame::setKeyPoints()\n{\n  const FloatType cu = cam_->imageWidth()/2;\n  const FloatType cv = cam_->imageHeight()/2;\n\n  for(size_t i = 0; i < num_features_; ++i)\n  {\n    if(landmark_vec_[i] == nullptr)\n      continue;\n\n    const FloatType& u = px_vec_(0,i);\n    const FloatType& v = px_vec_(1,i);\n\n    // center\n    if(key_pts_[0].first == -1)\n      key_pts_[0] = std::make_pair(i, landmark_vec_[i]->pos_);\n\n    else if(std::max(std::fabs(u-cu), std::fabs(v-cv))\n            < std::max(std::fabs(px_vec_(0, key_pts_[0].first) - cu),\n                       std::fabs(px_vec_(1, key_pts_[0].first) - cv)))\n      key_pts_[0] = std::make_pair(i, landmark_vec_[i]->pos_);\n\n    // corner\n    if(u >= cu && v >= cv)\n    {\n      if(key_pts_[1].first == -1)\n        key_pts_[1] = std::make_pair(i, landmark_vec_[i]->pos_);\n      else if((u-cu) * (v-cv)\n              > (px_vec_(0, key_pts_[1].first) - cu) * (px_vec_(1, key_pts_[1].first)-cv))\n        key_pts_[1] = std::make_pair(i, landmark_vec_[i]->pos_);\n    }\n    if(u >= cu && v < cv)\n    {\n      if(key_pts_[2].first == -1)\n        key_pts_[2] = std::make_pair(i, landmark_vec_[i]->pos_);\n      else if((u-cu) * (v-cv)\n              > (px_vec_(0, key_pts_[2].first) - cu) * (px_vec_(1, key_pts_[2].first)-cv))\n        key_pts_[2] = std::make_pair(i, landmark_vec_[i]->pos_);\n    }\n    if(u < cv && v < cv)\n    {\n      if(key_pts_[3].first == -1)\n        key_pts_[3] = std::make_pair(i, landmark_vec_[i]->pos_);\n      else if((u-cu) * (v-cv)\n              > (px_vec_(0, key_pts_[3].first) - cu) * (px_vec_(1, key_pts_[3].first)-cv))\n        key_pts_[3] = std::make_pair(i, landmark_vec_[i]->pos_);\n    }\n    if(u < cv && v >= cv)\n    {\n      if(key_pts_[4].first == -1)\n        key_pts_[4] = std::make_pair(i, landmark_vec_[i]->pos_);\n      else if((u-cu) * (v-cv)\n              > (px_vec_(0, key_pts_[4].first) - cu) * (px_vec_(1, key_pts_[4].first)-cv))\n        key_pts_[4] = std::make_pair(i, landmark_vec_[i]->pos_);\n    }\n  }\n}\n\nbool Frame::isVisible(const Eigen::Vector3d& xyz_w) const\n{\n  Eigen::Vector3d xyz_f = T_f_w_*xyz_w;\n  Eigen::Vector2d px;\n  return cam_->project3(xyz_f, &px).isKeypointVisible();\n}\n\nconst cv::Mat& Frame::getMask() const\n{\n  return cam_->getMask();\n}\n\ndouble Frame::getErrorMultiplier() const\n{\n  return cam_->errorMultiplier();\n}\n\ndouble Frame::getAngleError(double img_err) const\n{\n  return cam_->getAngleError(img_err);\n}\n\nvoid Frame::jacobian_xyz2image_imu(\n    const svo::Camera& cam,\n    const Transformation& T_cam_imu,\n    const Eigen::Vector3d& p_in_imu,\n    Eigen::Matrix<double,2,6>& J)\n{\n  Eigen::Matrix<double,3,6> G_x; // Generators times pose\n  G_x.block<3,3>(0,0) = Eigen::Matrix3d::Identity();\n  G_x.block<3,3>(0,3) = -vk::skew(p_in_imu);\n  const Eigen::Vector3d p_in_cam = T_cam_imu * p_in_imu;\n\n  Eigen::Matrix<double,2,3> J_proj; // projection derivative\n  Eigen::Vector2d out_point;\n  cam.project3(p_in_cam, &out_point, &J_proj);\n\n  J = J_proj * T_cam_imu.getRotation().getRotationMatrix() * G_x;\n}\n\n\nFrameBundle::FrameBundle(const std::vector<FramePtr>& frames)\n  : frames_(frames)\n{\n  static BundleId bundle_counter = 0;\n  bundle_id_ = bundle_counter++;\n  for(const FramePtr& frame : frames)\n  {\n    frame->bundle_id_ = bundle_id_;\n  }\n}\n\nsize_t FrameBundle::numFeatures() const\n{\n  size_t n = 0;\n  for(const FramePtr& f : frames_)\n    n += f->numFeatures();\n  return n;\n}\n\nsize_t FrameBundle::numTrackedFeatures() const\n{\n  size_t n = 0;\n  for(const FramePtr& f : frames_)\n    n += f->numTrackedFeatures();\n  return n;\n}\n\nsize_t FrameBundle::numLandmarks() const\n{\n  size_t n = 0;\n  for(const FramePtr& f : frames_)\n    n += f->numLandmarks();\n  return n;\n}\n\n/// Utility functions for the Frame class\nnamespace frame_utils {\n\nvoid createImgPyramid(const cv::Mat& img_level_0, int n_levels, ImgPyr& pyr)\n{\n  CHECK_EQ(img_level_0.type(), CV_8U);\n  CHECK_GT(img_level_0.rows, 0);\n  CHECK_GT(img_level_0.cols, 0);\n  CHECK_GT(n_levels, 0);\n\n  pyr.resize(n_levels);\n  pyr[0] = img_level_0;\n  for(int i=1; i<n_levels; ++i)\n  {\n    pyr[i] = cv::Mat(pyr[i-1].rows/2, pyr[i-1].cols/2, CV_8U);\n    vk::halfSample(pyr[i-1], pyr[i]);\n  }\n}\n\nbool getSceneDepth(const FramePtr& frame, double& depth_median, double& depth_min, double& depth_max)\n{\n  std::vector<double> depth_vec;\n  depth_vec.reserve(frame->num_features_);\n  depth_min = std::numeric_limits<double>::max();\n  depth_max = 0;\n  double depth = 0;\n  const Position ref_pos = frame->pos();\n  for(size_t i = 0; i < frame->num_features_; ++i)\n  {\n    if(frame->landmark_vec_[i])\n    {\n      depth = (frame->T_cam_world()*frame->landmark_vec_[i]->pos_).norm();\n    }\n    else if(frame->seed_ref_vec_[i].keyframe)\n    {\n      const SeedRef& seed_ref = frame->seed_ref_vec_[i];\n      const Position pos = seed_ref.keyframe->T_world_cam() *\n          seed_ref.keyframe->getSeedPosInFrame(seed_ref.seed_id);\n      depth = (pos - ref_pos).norm();\n    }\n    else\n      continue;\n    depth_vec.push_back(depth);\n    depth_min = std::min(depth, depth_min);\n    depth_max = std::max(depth, depth_max);\n  }\n  if(depth_vec.empty())\n  {\n    SVO_WARN_STREAM(\"Cannot set scene depth. Frame has no point-observations!\");\n    return false;\n  }\n  depth_median = vk::getMedian(depth_vec);\n  return true;\n}\n\nvoid computeNormalizedBearingVectors(\n    const Keypoints& px_vec,\n    const Camera& cam,\n    Bearings* f_vec)\n{\n  CHECK_NOTNULL(f_vec);\n  std::vector<bool> success;\n  cam.backProject3(px_vec, f_vec, &success);\n  for (const bool s : success) {\n    CHECK(s);\n  }\n  *f_vec = f_vec->array().rowwise() / f_vec->colwise().norm().array();\n}\n\n} // namespace frame_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_common/src/point.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/common/point.h>\n\n#include <vikit/math_utils.h>\n#include <svo/common/logging.h>\n#include <svo/common/frame.h>\n\nnamespace svo {\n\nstd::atomic<int> PointIdProvider::last_id_ { 0 };\n\nKeypointIdentifier::KeypointIdentifier(const FramePtr& _frame, const size_t _feature_index)\n  : frame(_frame)\n  , frame_id(_frame->id_)\n  , keypoint_index_(_feature_index)\n{ ; }\n\nPoint::Point(const Eigen::Vector3d& pos)\n  : Point(PointIdProvider::getNewPointId(), pos)\n{ ; }\n\nPoint::Point(const int id, const Eigen::Vector3d& pos)\n  : id_(id)\n  , pos_(pos)\n{\n  last_projected_kf_id_.fill(-1);\n}\n\nPoint::~Point()\n{}\n\nvoid Point::addObservation(const FramePtr& frame, const size_t feature_index)\n{\n  CHECK_NOTNULL(frame.get());\n\n  // check that we don't have yet a reference to this frame\n  // TODO(cfo): maybe we should use a std::unordered_map to store the observations.\n  const auto id = frame->id();\n  auto it = std::find_if(obs_.begin(), obs_.end(),\n                         [&](const KeypointIdentifier& i){ return i.frame_id == id; });\n  if(it == obs_.end())\n  {\n    obs_.emplace_back(KeypointIdentifier(frame, feature_index));\n  }\n  else\n  {\n    CHECK_EQ(it->keypoint_index_, feature_index);\n  }\n}\n\nvoid Point::removeObservation(int frame_id)\n{\n  obs_.erase(\n        std::remove_if(obs_.begin(), obs_.end(),\n                       [&](const KeypointIdentifier& o){ return o.frame_id == frame_id; }),\n        obs_.end());\n}\n\nvoid Point::initNormal()\n{\n  CHECK(!obs_.empty()) << \"initializing normal without any observation\";\n\n  if(const FramePtr& frame = obs_.front().frame.lock())\n  {\n    BearingVector f = frame->f_vec_.col(obs_.front().keypoint_index_);\n    normal_ = frame->T_f_w_.getRotation().inverseRotate(-f);\n    normal_information_ = Eigen::Matrix2d::Identity(); //DiagonalMatrix<double,3,3>(pow(20/(pos_-ftr->frame->pos()).norm(),2), 1.0, 1.0);\n    normal_set_ = true;\n  }\n  else\n    SVO_ERROR_STREAM(\"could not unlock weak_ptr<frame> in normal initialization\");\n}\n\nbool Point::getCloseViewObs(\n    const Eigen::Vector3d& framepos,\n    FramePtr& ref_frame,\n    size_t& ref_feature_index) const\n{\n  double min_cos_angle = 0.0;\n  Eigen::Vector3d obs_dir(framepos - pos_);\n  obs_dir.normalize();\n\n  //\n  //  TODO: For edgelets, find another view that reduces an epipolar line that\n  //        is orthogonal to the gradient!\n  //\n\n  // TODO: get frame with same point of view AND same pyramid level!\n  for(const KeypointIdentifier& obs : obs_)\n  {\n    if(FramePtr frame = obs.frame.lock())\n    {\n      Eigen::Vector3d dir(frame->pos() - pos_);\n      dir.normalize();\n      const double cos_angle = obs_dir.dot(dir);\n      if(cos_angle > min_cos_angle)\n      {\n        min_cos_angle = cos_angle;\n        ref_frame = frame;\n        ref_feature_index = obs.keypoint_index_;\n      }\n    }\n    else\n    {\n      SVO_ERROR_STREAM(\"could not unlock weak_ptr<Frame> in Point::getCloseViewObs\"\n                       <<\", Point-ID = \" << id_\n                       <<\", Point-nObs = \" << obs_.size()\n                       <<\", Frame-ID = \" << obs.frame_id\n                       <<\", Feature-ID = \" << obs.keypoint_index_\n                       <<\", Point-Type = \" << type_);\n    }\n  }\n  if(min_cos_angle < 0.4) // assume that observations larger than 60° are useless\n  {\n    SVO_DEBUG_STREAM(\"getCloseViewObs(): obs is from too far away: \" << min_cos_angle);\n    return false;\n  }\n  return true;\n}\n\ndouble Point::getTriangulationParallax() const\n{\n  CHECK(!obs_.empty()) << \"getTriangualtionParallax(): obs_ is empty!\";\n\n  const FramePtr ref_frame = obs_.front().frame.lock();\n  if(!ref_frame)\n  {\n    SVO_ERROR_STREAM(\"getTriangualtionParallax(): Could not lock ref_frame\");\n    return 0.0;\n  }\n\n  const Eigen::Vector3d r = (ref_frame->pos()-pos_).normalized();\n  double max_parallax = 0.0;\n  for(const KeypointIdentifier& obs : obs_)\n  {\n    if(const FramePtr frame = obs.frame.lock())\n    {\n      const Eigen::Vector3d v = (frame->pos()-pos_).normalized();\n      const double parallax = std::acos(r.dot(v));\n      max_parallax = std::max(parallax, max_parallax);\n    }\n  }\n  return max_parallax;\n}\n\nFramePtr Point::getSeedFrame() const\n{\n  if(obs_.empty())\n    return nullptr;\n\n  // the seed should be in the observation with the smallest id\n  if(auto ref_frame = obs_.front().frame.lock())\n    return ref_frame;\n  else\n    SVO_ERROR_STREAM(\"could not lock weak_ptr<Frame> in point\");\n  return nullptr;\n}\n\nbool Point::triangulateLinear()\n{\n  const size_t n_obs = obs_.size();\n  if(n_obs < 2)\n  {\n    return false; // not enough measurements to triangulate.\n  }\n  Eigen::Matrix3Xd f_world; // bearing vectors in world coordinates\n  Eigen::Matrix3Xd p_world; // position vectors of cameras\n  f_world.resize(Eigen::NoChange, n_obs);\n  p_world.resize(Eigen::NoChange, n_obs);\n  size_t index = 0;\n  for(const KeypointIdentifier& obs : obs_)\n  {\n    if(const FramePtr frame = obs.frame.lock())\n    {\n      const Transformation T_world_cam = frame->T_world_cam();\n      f_world.col(index) = T_world_cam*frame->f_vec_.col(obs.keypoint_index_);\n      p_world.col(index) = T_world_cam.getPosition();\n      ++index;\n    }\n  }\n  if(index != n_obs)\n  {\n    SVO_ERROR_STREAM(\"triangulateLinear failed, could not lock all frames.\");\n    return false;\n  }\n\n  // from aslam: triangulation.cc\n  const Eigen::MatrixXd BiD = f_world *\n      f_world.colwise().squaredNorm().asDiagonal().inverse();\n  const Eigen::Matrix3d AxtAx = n_obs * Eigen::Matrix3d::Identity() -\n      BiD * f_world.transpose();\n  const Eigen::Vector3d Axtbx = p_world.rowwise().sum() - BiD *\n      f_world.cwiseProduct(p_world).colwise().sum().transpose();\n\n  Eigen::ColPivHouseholderQR<Eigen::Matrix3d> qr = AxtAx.colPivHouseholderQr();\n  static constexpr double kRankLossTolerance = 1e-5;\n  qr.setThreshold(kRankLossTolerance);\n  const size_t rank = qr.rank();\n  if (rank < 3) {\n    return false; // unobservable\n  }\n  pos_ = qr.solve(Axtbx);\n  return true;\n}\n\nvoid Point::updateHessianGradientUnitPlane(\n    const Eigen::Ref<BearingVector>& f,\n    const Eigen::Vector3d& p_in_f,\n    const Eigen::Matrix3d& R_f_w,\n    Eigen::Matrix3d& A,\n    Eigen::Vector3d& b,\n    double& new_chi2)\n{\n  svo::Matrix23d J;\n  Point::jacobian_xyz2uv(p_in_f, R_f_w, J);\n  const Eigen::Vector2d e(vk::project2(f) - vk::project2(p_in_f));\n  A.noalias() += J.transpose() * J;\n  b.noalias() -= J.transpose() * e;\n  new_chi2 += e.squaredNorm();\n}\n\nvoid Point::updateHessianGradientUnitSphere(\n    const Eigen::Ref<BearingVector>& f,\n    const Eigen::Vector3d& p_in_f,\n    const Eigen::Matrix3d& R_f_w,\n    Eigen::Matrix3d& A,\n    Eigen::Vector3d& b,\n    double& new_chi2)\n{\n  Eigen::Matrix3d J;\n  Point::jacobian_xyz2f(p_in_f, R_f_w, J);\n  const Eigen::Vector3d e = f - p_in_f.normalized();\n  A.noalias() += J.transpose() * J;\n  b.noalias() -= J.transpose() * e;\n  new_chi2 += e.squaredNorm();\n}\n\nvoid Point::optimize(const size_t n_iter, bool using_bearing_vector)\n{\n  Eigen::Vector3d old_point = pos_;\n  double chi2 = 0.0;\n  Eigen::Matrix3d A;\n  Eigen::Vector3d b;\n\n  if(obs_.size() < 2)\n  {\n    SVO_ERROR_STREAM(\"optimizing point with less than two observations\");\n    return;\n  }\n\n  const double eps = 0.0000000001;\n  for(size_t i=0; i<n_iter; i++)\n  {\n    A.setZero();\n    b.setZero();\n    double new_chi2 = 0.0;\n\n    // compute residuals\n    for(const KeypointIdentifier& obs : obs_)\n    {\n      if(const FramePtr& frame = obs.frame.lock())\n      {\n        if(using_bearing_vector)\n        {\n          updateHessianGradientUnitSphere(\n                frame->f_vec_.col(obs.keypoint_index_), frame->T_f_w_*pos_,\n                frame->T_f_w_.getRotation().getRotationMatrix(),\n                A, b, new_chi2);\n        }\n        else\n        {\n          updateHessianGradientUnitPlane(\n                frame->f_vec_.col(obs.keypoint_index_), frame->T_f_w_*pos_,\n                frame->T_f_w_.getRotation().getRotationMatrix(),\n                A, b, new_chi2);\n        }\n      }\n      else\n        SVO_ERROR_STREAM(\"could not unlock weak_ptr<Frame> in Point::optimize\");\n    }\n\n    // solve linear system\n    const Eigen::Vector3d dp(A.ldlt().solve(b));\n\n    // check if error increased\n    if((i > 0 && new_chi2 > chi2) || (bool) std::isnan((double)dp[0]))\n    {\n#ifdef POINT_OPTIMIZER_DEBUG\n      cout << \"it \" << i\n           << \"\\t FAILURE \\t new_chi2 = \" << new_chi2 << endl;\n#endif\n      pos_ = old_point; // roll-back\n      break;\n    }\n\n    // update the model\n    Eigen::Vector3d new_point = pos_ + dp;\n    old_point = pos_;\n    pos_ = new_point;\n    chi2 = new_chi2;\n#ifdef POINT_OPTIMIZER_DEBUG\n    cout << \"it \" << i\n         << \"\\t Success \\t new_chi2 = \" << new_chi2\n         << \"\\t norm(b) = \" << vk::norm_max(b)\n         << endl;\n#endif\n\n    // stop when converged\n    if(vk::norm_max(dp) <= eps)\n      break;\n  }\n#ifdef POINT_OPTIMIZER_DEBUG\n  cout << endl;\n#endif\n}\n\nvoid Point::print(const std::string& s) const\n{\n  std::cout << s << std::endl;\n  std::cout << \"  id = \" << id_ << std::endl;\n  std::cout << \"  pos = [\" << pos_.transpose() << \"]\" << std::endl;\n  std::cout << \"  num obs = \" << obs_.size() << std::endl;\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/CMakeLists.txt",
    "content": "project(svo_direct)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\nfind_package(OpenCV REQUIRED)\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/svo/direct/patch_normal.h\n  include/svo/direct/patch_warp.h\n  include/svo/direct/patch_score.h\n  include/svo/direct/patch_utils.h\n  include/svo/direct/feature_alignment.h\n  include/svo/direct/feature_detection_types.h\n  include/svo/direct/feature_detection.h\n  include/svo/direct/feature_detection_utils.h\n  include/svo/direct/matcher.h\n  include/svo/direct/depth_filter.h\n  include/svo/direct/depth_estimation.h\n  include/svo/direct/elder_zucker.h\n)\n\nset(SOURCES\n  src/patch_warp.cpp\n  src/feature_alignment.cpp\n  src/feature_detection.cpp\n  src/feature_detection_utils.cpp\n  src/matcher.cpp\n  src/depth_filter.cpp\n  src/depth_estimation.cpp\n  src/elder_zucker.cpp\n  )\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\ntarget_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})\n\n################################################################################\ncs_install()\ncs_export()\n\n"
  },
  {
    "path": "svo_direct/include/svo/direct/depth_estimation.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <vikit/solver/mini_least_squares_solver.h>\n\nnamespace svo {\n\nclass Frame;\n\n/// Depth estimation by minimizing photometric error.\nclass DepthEstimator : public vk::solver::MiniLeastSquaresSolver<1, double, DepthEstimator>\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  using SolverOptions = vk::solver::MiniLeastSquaresSolverOptions;\n  using DepthEstimatorState = double;\n\n  static constexpr int kPatchHalfsize = 4;\n  static constexpr int kPatchSize = 2*kPatchHalfsize;\n  static constexpr int kPatchArea = kPatchSize*kPatchSize;\n  static constexpr int kMaxLevel = 4;\n  static constexpr int kMinLevel = 0;\n\n  DepthEstimator(const SolverOptions& solver_options);\n  ~DepthEstimator() = default;\n\n  static SolverOptions getDefaultSolverOptions();\n\n  void run(\n      const FramePtr& cur_frame,\n      const FramePtr& ref_frame,\n      const int ref_feature_id);\n\n  double evaluateError(\n      const State& params,\n      HessianMatrix* H,\n      GradientVector* g);\n\n  void update(\n      const State& param_old,\n      const UpdateVector& dx,\n      State& param_new);\n\n  bool solve(\n      const HessianMatrix& H,\n      const GradientVector& g,\n      UpdateVector& dx);\n\n  FramePtr cur_frame_;\n  FramePtr ref_frame_;\n  BearingVector f_ref_;\n  Keypoint px_ref_;\n  Transformation T_cur_ref_;\n\n  uint8_t ref_patch_[kPatchSize*kPatchSize] __attribute__ ((aligned (16)));\n  uint8_t ref_patch_with_border_[(kPatchSize+2)*(kPatchSize+2)] __attribute__ ((aligned (16)));\n\n  int level_ = 0;\n\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/depth_filter.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <queue>\n#include <memory> // std::shared_ptr\n#include <mutex>\n#include <thread>\n#include <condition_variable>\n#include <vikit/performance_monitor.h>\n#include <svo/direct/matcher.h>\n\nnamespace svo {\n\n// forward declarations\nclass AbstractDetector;\ntypedef std::shared_ptr<AbstractDetector> DetectorPtr;\nstruct DetectorOptions;\n\n/// Depth-filter config parameters\nstruct DepthFilterOptions\n{\n  /// Threshold for the uncertainty of the seed. If seed's sigma2 is thresh\n  /// smaller than the inital sigma, it is considered as converged.\n  /// Default value is 200. If seeds should converge quicker, set it to 50 or\n  /// if you want very precise 3d points, set it higher.\n  double seed_convergence_sigma2_thresh = 200.0;\n\n  /// Use inverse-depth parametrization for seeds.\n  /// Default is true. Set to false if you are using the depth-filter to\n  /// reconstruct small objects with fixed depth range.\n  bool use_inverse_depth = true;\n\n  /// Specify the max pyramid level for the matcher.\n  /// Normally, you don't need to change this parameters.\n  size_t max_search_level = 2;\n\n  /// Show additional debug output\n  bool verbose = false;\n\n  /// Start separate thread for seed updates\n  bool use_threaded_depthfilter = true;\n\n  /// Update the 3D point linked by the feature in the seed (false for REMODE-CPU)\n  bool update_3d_point = true;\n\n  /// Do epipolar search on unit sphere\n  bool scan_epi_unit_sphere = false;\n\n  /// Restrict number of features per frame.\n  size_t max_n_seeds_per_frame = 200;\n\n  /// use affine model to compensate for brightness change\n  bool affine_est_offset = true;\n  bool affine_est_gain = false;\n};\n\n/// Depth filter implements the Bayesian Update proposed in:\n/// \"Video-based, Real-Time Multi View Stereo\" by G. Vogiatzis and C. Hernández.\n/// In Image and Vision Computing, 29(7):434-441, 2011.\nclass DepthFilter\n{\nprotected:\n\n  /// Job for multi-threading. can either be to update a seed with the frame\n  /// or to initialize new seeds in the frame\n  struct Job\n  {\n    enum Type { UPDATE, SEED_INIT } type;\n    FramePtr cur_frame;\n    FramePtr ref_frame;\n    size_t ref_frame_seed_index;\n    double min_depth, max_depth, mean_depth;\n\n    /// Default constructor\n    Job()\n      : cur_frame(nullptr), ref_frame(nullptr)\n    {}\n\n    /// Constructor for seed update\n    Job(const FramePtr& _cur_frame, const FramePtr& _ref_frame, const size_t _ref_index)\n      : type(UPDATE)\n      , cur_frame(_cur_frame)\n      , ref_frame(_ref_frame)\n      , ref_frame_seed_index(_ref_index)\n    {}\n\n    /// Constructor for seed initialization\n    Job(const FramePtr& f, double min_d, double max_d, double mean_d)\n      : type(SEED_INIT), cur_frame(f), ref_frame(nullptr)\n      , min_depth(min_d), max_depth(max_d), mean_depth(mean_d)\n    {}\n  };\n\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<DepthFilter> Ptr;\n  typedef std::mutex mutex_t;\n  typedef std::unique_lock<mutex_t> ulock_t;\n  typedef std::queue<Job> JobQueue;\n\n  DepthFilterOptions options_;\n\n  /// Default Constructor\n  DepthFilter(\n      const DepthFilterOptions& options,\n      const DetectorOptions& detector,\n      const std::shared_ptr<CameraBundle>& cams);\n\n  /// Constructor for REMODE-CPU\n  DepthFilter(\n      const DepthFilterOptions& options);\n\n  /// Destructor stops thread if necessary.\n  virtual ~DepthFilter();\n\n  /// Start this thread when seed updating should be in a parallel thread.\n  void startThread();\n\n  /// Stop the parallel thread that is running.\n  void stopThread();\n\n  /// Add new keyframe to the queue, depth_max is only required for direct-depth\n  void addKeyframe(\n      const FramePtr& frame,\n      const double depth_mean,\n      const double depth_min,\n      const double depth_max);\n\n  /// Resets all jobs of the parallel thread\n  void reset();\n\n  /// test\n  Matcher& getMatcher() { return *matcher_; }\n\n  /// Update seeds\n  /// \\param frames_with_seeds List of frames which contain seeds that should be\n  /// updated with new_frame\n  /// \\param new_frame The new frame that is used as observation to update all\n  /// seeds in frames_with_seeds\n  size_t updateSeeds(\n      const std::vector<FramePtr>& frames_with_seeds,\n      const FramePtr& new_frame);\n\n  // need public access to set grid occupancy\n  mutex_t feature_detector_mut_;\n  DetectorPtr feature_detector_;\n\nprotected:\n  mutex_t jobs_mut_;\n  JobQueue jobs_;\n  std::condition_variable jobs_condvar_;\n  std::unique_ptr<std::thread> thread_;\n  bool quit_thread_ = false;\n  Matcher::Ptr matcher_;\n\n  /// A thread that is continuously updating the seeds.\n  void updateSeedsLoop();\n};\n\nnamespace depth_filter_utils {\n\n/// Initialize new seeds from a frame.\nvoid initializeSeeds(\n    const FramePtr& frame,\n    const DetectorPtr& feature_detector,\n    const size_t max_n_seeds,\n    const float min_depth,\n    const float max_depth,\n    const float mean_depth);\n\n/// Update Seed\nbool updateSeed(\n    const Frame& cur_frame,\n    Frame& ref_frame,\n    const size_t& seed_index,\n    Matcher& matcher,\n    const FloatType sigma2_convergence_threshold,\n    const bool check_visibility = true,\n    const bool check_convergence = false,\n    const bool use_vogiatzis_update = true);\n\nbool updateFilterVogiatzis(\n    const FloatType z,\n    const FloatType tau2,\n    const FloatType z_range,\n    Eigen::Ref<SeedState>& seed);\n\nbool updateFilterGaussian(\n    const FloatType z,\n    const FloatType tau2,\n    Eigen::Ref<SeedState>& seed);\n\n/// Compute the uncertainty of the measurement.\ndouble computeTau(\n    const Transformation& T_ref_cur,\n    const BearingVector& f,\n    const FloatType z,\n    const FloatType px_error_angle);\n\ndouble computeEpiGradAngle(\n    const Transformation& T_cur_ref,\n    const BearingVector& f_ref,\n    const GradientVector& grad,\n    const FloatType depth_estimate);\n\n#ifdef SVO_USE_PHOTOMETRIC_DISPARITY_ERROR\nbool setSeedCovariance(\n    const int halfpatch_size,\n    const double image_noise2,\n    SeedImplementation::Ptr seed);\n\ndouble getSeedDisparityUncertainty(\n    const SeedImplementation::Ptr& seed,\n    const Transformation& T_cur_ref);\n#endif\n\n} // namespace depth_filter_utils\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/elder_zucker.h",
    "content": "#pragma once\n\n#include <vector>\n#include <opencv2/core/core.hpp>\n\nnamespace svo {\nnamespace elder_zucker {\n\nvoid detectEdges(\n    const std::vector<cv::Mat>& img_pyr,\n    const double sigma,\n    cv::Mat& edge_map,\n    cv::Mat& level_map);\n\nvoid getCovarEntries(\n    const cv::Mat& src,\n    cv::Mat& dxdx,\n    cv::Mat& dydy,\n    cv::Mat& dxdy);\n\nvoid filterGauss3by316S(\n    const cv::Mat& src,\n    cv::Mat& dst);\n\n} // namespace elder_zucker\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/feature_alignment.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#ifndef SVO_DIRECT_FEATURE_ALIGNMENT_H_\n#define SVO_DIRECT_FEATURE_ALIGNMENT_H_\n\n#include <Eigen/Core>\n#include <opencv2/core/core.hpp>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n/// Subpixel refinement of a reference feature patch with the current image.\n/// Implements the inverse-compositional approach (see \"Lucas-Kanade 20 Years on\"\n/// paper by Baker.\nnamespace feature_alignment {\n\nbool align1D(\n    const cv::Mat& cur_img,\n    const Eigen::Ref<GradientVector>& dir,                  // direction in which the patch is allowed to move\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    const bool affine_est_offset,\n    const bool affine_est_gain,\n    Keypoint* cur_px_estimate,\n    double* h_inv = nullptr);\n\nbool align2D(\n    const cv::Mat& cur_img,\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    const bool affine_est_offset,\n    const bool affine_est_gain,\n    Keypoint& cur_px_estimate,\n    bool no_simd = false,\n    std::vector<Eigen::Vector2f>* each_step=nullptr);\n\nbool align2D_SSE2(\n    const cv::Mat& cur_img,\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    Keypoint& cur_px_estimate);\n\nbool align2D_NEON(\n    const cv::Mat& cur_img,\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    Keypoint& cur_px_estimate);\n\nvoid alignPyr2DVec(\n    const std::vector<cv::Mat>& img_pyr_ref,\n    const std::vector<cv::Mat>& img_pyr_cur,\n    const int max_level,\n    const int min_level,\n    const std::vector<int>& patch_sizes,\n    const int n_iter,\n    const float min_update_squared,\n    const std::vector<cv::Point2f>& px_ref,\n    std::vector<cv::Point2f>& px_cur,\n    std::vector<uint8_t>& status);\n\nbool alignPyr2D(\n    const std::vector<cv::Mat>& img_pyr_ref,\n    const std::vector<cv::Mat>& img_pyr_cur,\n    const int max_level,\n    const int min_level,\n    const std::vector<int>& patch_sizes,\n    const int n_iter,\n    const float min_update_squared,\n    const Eigen::Vector2i &px_ref_level_0,\n    Keypoint &px_cur_level_0);\n\n} // namespace feature_alignment\n} // namespace svo\n\n#endif // SVO_DIRECT_FEATURE_ALIGNMENT_H_\n"
  },
  {
    "path": "svo_direct/include/svo/direct/feature_detection.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/occupancy_grid_2d.h>\n#include <svo/direct/feature_detection_types.h>\n\nnamespace svo {\n\n//------------------------------------------------------------------------------\n/// All detectors should derive from this abstract class.\nclass AbstractDetector\n{\npublic:\n  typedef std::shared_ptr<AbstractDetector> Ptr;\n\n  DetectorOptions options_;\n\n  /// Default constructor.\n  AbstractDetector(\n      const DetectorOptions& options,\n      const CameraPtr& cam);\n\n  /// Default destructor.\n  virtual ~AbstractDetector() = default;\n\n  // no copy\n  AbstractDetector& operator=(const AbstractDetector&) = delete;\n  AbstractDetector(const AbstractDetector&) = delete;\n\n  void detect(const FramePtr &frame);\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) = 0;\n\n  inline void resetGrid()\n  {\n    grid_.reset();\n  }\n\n  OccupandyGrid2D grid_;\n};\n\n//------------------------------------------------------------------------------\n/// FAST detector by Edward Rosten.\nclass FastDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~FastDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n//------------------------------------------------------------------------------\n/// Detect pixels that have a high gradient magnitude over multiple pyramid levels.\n/// These gradient pixels are good for camera tracking.\nclass GradientDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~GradientDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n\n//------------------------------------------------------------------------------\n/// Detect pixels that have a high gradient magnitude over multiple pyramid levels.\n/// These gradient pixels are good for camera tracking.\nclass GradientDetectorGrid : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~GradientDetectorGrid() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n//------------------------------------------------------------------------------\n/// @todo\nclass FastGradDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~FastGradDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n//------------------------------------------------------------------------------\n/// Dummy detector that selects all pixels\nclass AllPixelsDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~AllPixelsDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n//------------------------------------------------------------------------------\n/// Detect pixels that have strong gradients according to the paper\n/// Huang, J. and Mumford, D. (1999). Statistics of natural images and models. (CVPR)\nclass GradientHuangMumfordDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~GradientHuangMumfordDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\nclass CannyDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~CannyDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\nclass SobelDetector : public AbstractDetector\n{\npublic:\n  using AbstractDetector::AbstractDetector; // default constructor\n  virtual ~SobelDetector() = default;\n\n  virtual void detect(\n      const ImgPyr& img_pyr,\n      const cv::Mat& mask,\n      const size_t max_n_features,\n      Keypoints& px_vec,\n      Scores& score_vec,\n      Levels& level_vec,\n      Gradients& grad_vec,\n      FeatureTypes& types_vec) override;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/feature_detection_types.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n\nnamespace svo {\n\n//------------------------------------------------------------------------------\n/// Temporary container used for corner detection. Features are initialized from these.\nstruct Corner\n{\n  int x;        ///< x-coordinate of corner in the image.\n  int y;        ///< y-coordinate of corner in the image.\n  int level;    ///< pyramid level of the corner.\n  float score;  ///< shi-tomasi score of the corner.\n  float angle;  ///< for gradient-features: dominant gradient angle.\n\n  Corner(int _x, int _y, float _score, int _level, float _angle)\n    : x(_x), y(_y), level(_level), score(_score), angle(_angle)\n  {}\n};\nusing Corners = std::vector<Corner>;\n\n//------------------------------------------------------------------------------\n/// Available Feature Detector Types\nenum class DetectorType\n{\n  kFast,            ///< Fast Corner Detector by Edward Rosten\n  kGrad,            ///< Gradient detector for edgelets\n  kFastGrad,        ///< Combined Fast and Gradient detector\n  kGridGrad,        ///< Gradient detector with feature grid.\n  kAll,             ///< Every pixel is a feature!\n  kGradHuangMumford,///< 'Natural' edges (see Huang CVPR'99)\n  kCanny,           ///< Canny edge detector\n  kSobel            ///< Sobel edge detector\n};\n\n//------------------------------------------------------------------------------\n/// Common options of all feature detectors.\nstruct DetectorOptions\n{\n  /// Maximum one feature per bucked with cell_size width and height\n  size_t cell_size = 30;\n\n  /// Extract features on pyramid\n  int max_level = 2;\n\n  /// minimum pyramid level at which features should be selected\n  int min_level = 0;\n\n  /// no feature should be within border.\n  int border = 8;\n\n  /// Choose between {FAST, FAST_GRAD}, FAST_GRAD will use Edgelets.\n  DetectorType detector_type = DetectorType::kFast;\n\n  /// Primary detector threshold\n  double threshold_primary = 10.0;\n\n  /// Secondary detector threshold.\n  /// Used if the detector uses two different detectors. E.g. in the case of\n  /// FAST_GRAD, it is the gradient detector threshold.\n  double threshold_secondary = 100.0;\n\n  /// Level where features are initialized.\n  /// Only for detectors supporting specific feature levels like the AllPixelDetector.\n  int sampling_level = 0;\n  int level = 0;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/feature_detection_utils.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <memory>\n#include <array>\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/occupancy_grid_2d.h>\n#include <svo/direct/feature_detection_types.h>\n\n\nnamespace svo {\n\nclass AbstractDetector;\nusing AbstractDetectorPtr = std::shared_ptr<AbstractDetector>;\n\nnamespace feature_detection_utils {\n\n/// Factory returns a pointer to a detector that is specified with in the options.\nAbstractDetectorPtr makeDetector(\n    const DetectorOptions& options,\n    const CameraPtr& cam);\n\nvoid fillFeatures(const Corners& corners,\n    const FeatureType& type,\n    const cv::Mat& mask,\n    const double& threshold,\n    const size_t max_n_features,\n    Keypoints& keypoints,\n    Scores& scores,\n    Levels& levels,\n    Gradients& gradients,\n    FeatureTypes& types,\n    OccupandyGrid2D& grid);\n\nvoid fastDetector(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const size_t min_level,\n    const size_t max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid);\n\nvoid edgeletDetector_V1(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const int min_level,\n    const int max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid);\n\nvoid edgeletDetector_V2(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const int min_level,\n    const int max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid);\n\nbool getCornerAngle(\n    const ImgPyr& img_pyr,\n    const Eigen::Ref<const Keypoint>& level_0,\n    const size_t level,\n    double* angle);\n\n/// Get patch minimum eigenvalue.\nbool getShiTomasiScore(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    double* score);\n\nvoid setCornerAngles(\n    const ImgPyr& img_pyr,\n    Corners* corners);\n\nvoid setCornerLevel(\n    const ImgPyr& mag_pyr,\n    Corners* corners);\n\nvoid computeDerivMaxMagnitude(\n    const cv::Mat& img_8u,\n    cv::Mat& mag_8u);\n\nvoid computeDerivHuangMumford(\n    const cv::Mat& img_8u,\n    cv::Mat& mag_32f,\n    float alpha=10.0f,\n    float q=0.98f);\n\nvoid nonmax(\n    const cv::Mat& img_32f,\n    const float thresh,\n    Corners* corners);\n\nvoid displayGrid(\n    const OccupandyGrid2D& old_grid,\n    const Keypoints& keypoints,\n    const int img_width,\n    const int img_height);\n\nvoid nonlinearDiffusion(\n    const cv::Mat& img_8u,\n    cv::Mat& img_8u_diffused,\n    const double timestep = 0.25,   // absolute max is 0.5 for stability\n    const double final_time = 2.5);\n\nvoid detectGuillermoEdges(\n    const cv::Mat& src_gray,\n    cv::Mat& dest,\n    int low_threshold = 20,\n    int ratio = 3,\n    int kernel_size = 3);\n\nvoid detectCannyEdges(\n    const cv::Mat& src_gray,\n    cv::Mat& dest,\n    int low_threshold = 20,\n    int ratio = 3,\n    int kernel_size = 3);\n\nvoid detectSobelEdges(\n    const cv::Mat& src_gray,\n    cv::Mat& dest,\n    int low_threshold = 30,\n    int kernel_size = 2);\n\nvoid drawFeatures(\n    const Frame& frame,\n    const size_t level,\n    const bool only_matched_features,\n    cv::Mat* img_rgb);\n\ndouble getAngleAtPixelUsingHistogram(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    const size_t halfpatch_size);\n\n// Compute an angle histogram.\nnamespace angle_hist {\n\nconstexpr size_t n_bins = 36;\nusing AngleHistogram = std::array<double, n_bins>;\n\nvoid angleHistogram(\n    const cv::Mat& img, int x, int y, int halfpatch_size, AngleHistogram& hist);\n\nbool gradientAndMagnitudeAtPixel(\n    const cv::Mat& img, int x, int y, double* mag, double* angle);\n\nvoid smoothOrientationHistogram(\n    AngleHistogram& hist);\n\ndouble getDominantAngle(\n    const AngleHistogram& hist);\n\n} // angle_hist\n} // feature_detection_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/matcher.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <array>\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/transformation.h>\n\nnamespace svo {\n\n// forward declarations\nclass Point;\nclass Frame;\nclass FeatureWrapper;\n\nnamespace patch_score {\ntemplate<int HALF_PATCH_SIZE> class ZMSSD;\n}\n\n/// Patch-matcher for reprojection-matching and epipolar search in triangulation.\nclass Matcher\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  static const int kHalfPatchSize = 4;\n  static const int kPatchSize = 8;\n\n  typedef svo::patch_score::ZMSSD<kHalfPatchSize> PatchScore;\n  typedef std::shared_ptr<Matcher> Ptr;\n\n  struct Options\n  {\n    bool align_1d = false;                  //!< in epipolar search: align patch 1D along epipolar line\n    int align_max_iter = 10;                //!< number of iterations for aligning the feature patches in gauss newton\n    double max_epi_length_optim = 2.0;      //!< max length of epipolar line to skip epipolar search and directly go to img align\n    size_t max_epi_search_steps = 100;      //!< max number of evaluations along epipolar line\n    bool subpix_refinement = true;          //!< do gauss newton feature patch alignment after epipolar search\n    bool epi_search_edgelet_filtering = true;\n    bool scan_on_unit_sphere = true;\n    double epi_search_edgelet_max_angle = 0.7;\n    bool verbose = false;\n    bool use_affine_warp_ = true;\n    bool affine_est_offset_ = true;\n    bool affine_est_gain_ = false;\n  } options_;\n\n  enum class MatchResult {\n    kSuccess,\n    kFailScore,\n    kFailTriangulation,\n    kFailVisibility,\n    kFailWarp,\n    kFailAlignment,\n    kFailRange,\n    kFailAngle,\n    kFailCloseView,\n    kFailLock\n  };\n\n  uint8_t patch_[kPatchSize*kPatchSize] __attribute__ ((aligned (16)));\n  uint8_t patch_with_border_[(kPatchSize+2)*(kPatchSize+2)] __attribute__ ((aligned (16)));\n  Eigen::Matrix2d A_cur_ref_;          //!< affine warp matrix\n  Eigen::Vector2d epi_image_;          //!< vector from epipolar start to end on the image plane\n  double epi_length_pyramid_;   //!< length of epipolar line segment in pixels on pyrimid level (only used for epipolar search)\n  double h_inv_;                //!< hessian of 1d image alignment along epipolar line\n  int search_level_;\n  bool reject_;\n  Keypoint px_cur_;\n  BearingVector f_cur_;\n\n  Matcher() = default;\n  ~Matcher() = default;\n\n  /// Find a match by directly applying subpix refinement.\n  /// IMPORTANT! This function assumes that px_cur is already set to an estimate that is within ~2-3 pixel of the final result!\n  MatchResult findMatchDirect(\n      const Frame& ref_frame,\n      const Frame& cur_frame,\n      const FeatureWrapper& ref_ftr,\n      const FloatType& ref_depth,\n      Keypoint& px_cur);\n\n  /// Find a match by searching along the epipolar line without using any features.\n  MatchResult findEpipolarMatchDirect(\n      const Frame& ref_frame,\n      const Frame& cur_frame,\n      const FeatureWrapper& ref_ftr,\n      const double d_estimate_inv,\n      const double d_min_inv,\n      const double d_max_inv,\n      double& depth);\n\n  MatchResult findEpipolarMatchDirect(\n      const Frame& ref_frame,\n      const Frame& cur_frame,\n      const Transformation &T_cur_ref,\n      const FeatureWrapper& ref_ftr,\n      const double d_estimate_inv,\n      const double d_min_inv,\n      const double d_max_inv,\n      double& depth);\n  /// search epipolar line between A~C~B for the best match with respect to patch score\n  /// the search is done on patch_level, returns image coordinates and best ZMSSD\n  void scanEpipolarLine(\n      const Frame& frame,\n      const Eigen::Vector3d& A,\n      const Eigen::Vector3d& B,\n      const Eigen::Vector3d& C,\n      const PatchScore& patch_score,\n      const int patch_level,\n      Keypoint* image_best,\n      int* zmssd_best);\n\n  static std::string getResultString(const Matcher::MatchResult& result);\n\nprivate:\n  // TODO(zzc): perhaps some of these should be inline\n  /// local optimization for patch_ and patch_with_border_ in *frame* around *px_cur*(image)\n  MatchResult findLocalMatch(\n      const Frame& frame,\n      const Eigen::Ref<GradientVector>& direction,\n      const int patch_level,\n      Keypoint& px_cur);\n\n\n  /// update best zmssd, if a better one is find, return true\n  bool updateZMSSD(\n      const Frame& frame,\n      const Eigen::Vector2i& pxi,\n      const int patch_level,\n      const PatchScore& patch_score,\n      int* zmssd_best);\n\n  /// check is patch is fully within image\n  bool isPatchWithinImage(\n      const Frame& frame,\n      const Eigen::Vector2i& pxi,\n      const int patch_level);\n\n  /// search along the epipolar line on image plane\n  /// we sample on the UNIT PLANE and check corresponding patches on the image plane\n  void scanEpipolarUnitPlane(const Frame& frame,\n      const Eigen::Vector3d& A,\n      const Eigen::Vector3d& B,\n      const Eigen::Vector3d& C,\n      const PatchScore& patch_score,\n      const int patch_level,\n      Keypoint* image_best,\n      int* zmssd_best);\n\n  /// search along the epipolar line on image plane\n  /// we sample on the UNIT SPHERE and check corresponding patches on the image plane\n  void scanEpipolarUnitSphere(const Frame& frame,\n      const Eigen::Vector3d& A,\n      const Eigen::Vector3d& B,\n      const Eigen::Vector3d& C,\n      const PatchScore& patch_score,\n      const int patch_level,\n      Keypoint* image_best,\n      int* zmssd_best);\n};\n\nnamespace matcher_utils {\n\n/// calculate feature point depth\nMatcher::MatchResult depthFromTriangulation(\n    const Transformation& T_search_ref,\n    const Eigen::Vector3d& f_ref,\n    const Eigen::Vector3d& f_cur,\n    double* depth);\n\n/// returns image patch around px (used for testing)\nvoid createPatchWithBorderNoWarp(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    const int halfpatch_size_without_border,\n    uint8_t* patch_with_border);\n\n/// returns a patch that is 2px smaller in both dimensions.\nvoid createPatchFromPatchWithBorder(\n    const uint8_t* const patch_with_border,\n    const int patch_size,\n    uint8_t* patch);\n\n\n} // namespace matcher_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/patch_normal.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <vikit/solver/mini_least_squares_solver.h>\n\nnamespace vk {\nclass AbstractCamera;\n}\n\nnamespace svo {\n\nclass Frame;\nclass Point;\nstruct Feature;\n\n/// Estimate the patch normal from multiple observations of the corresponding\n/// 3D point.\nclass PatchNormal : public vk::solver::MiniLeastSquaresSolver<2, Eigen::Vector2d, PatchNormal>\n{\npublic:\n\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  using SolverOptions = vk::solver::MiniLeastSquaresSolverOptions;\n\n  static constexpr int patch_halfsize_ = 20;\n  static constexpr int patch_size_ = 2*patch_halfsize_;\n  static constexpr int patch_area_ = patch_size_*patch_size_;\n\n  PatchNormal(const SolverOptions& solver_options);\n  ~PatchNormal() = default;\n\n  static SolverOptions getDefaultSolverOptions();\n\n  void run(\n      std::shared_ptr<Feature> ftr_ref,\n      double depth,\n      const FramePtr& frame_cur,\n      Eigen::Vector3d& normal_ref,\n      Eigen::Matrix2d& information);\n\n  void precomputeJacobian();\n\n//protected:\n  bool display_;\n  cv::Mat img_residuals_;\n  FeaturePtr ftr_ref_;\n  double depth_;                  //!< depth of the point in the reference frame\n  FramePtr frame_ref_;              //!< reference frame\n  FramePtr frame_cur_;\n\n  Transformation T_c_r_;\n  Eigen::Vector3d normal_;\n  Eigen::Vector3d update_x_vec_;\n  Eigen::Vector3d update_y_vec_;\n\n  // cache:\n  Eigen::Matrix<double, 2, patch_area_> jacobian_cache_;\n  bool have_ref_patch_cache_;\n\n  double evaluateError(\n      const State& params,\n      HessianMatrix* H,\n      GradientVector* g);\n\n  void update(\n      const State& param_old,\n      const UpdateVector& dx,\n      State& param_new);\n\n  void applyPrior(const State& current_model);\n\n  void startIteration();\n\n  void finishIteration();\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/patch_score.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n\n#if __SSSE3__\n# include <tmmintrin.h>\n#endif\n#ifdef __ARM_NEON__\n# include <arm_neon.h>\n#endif\n\nnamespace svo {\nnamespace patch_score {\n\n\n#if __SSSE3__\n// Horizontal sum of uint16s stored in an XMM register\ninline int SumXMM_16(__m128i &target)\n{\n  unsigned short int sums_store[8];\n  _mm_storeu_si128((__m128i*)sums_store, target);\n  return sums_store[0] + sums_store[1] + sums_store[2] + sums_store[3] +\n    sums_store[4] + sums_store[5] + sums_store[6] + sums_store[7];\n}\n// Horizontal sum of uint32s stored in an XMM register\ninline int SumXMM_32(__m128i &target)\n{\n  unsigned int sums_store[4];\n  _mm_storeu_si128((__m128i*)sums_store, target);\n  return sums_store[0] + sums_store[1] + sums_store[2] + sums_store[3];\n}\n#endif\n\n/// Zero Mean Sum of Squared Differences Cost\ntemplate<int HALF_PATCH_SIZE>\nclass ZMSSD {\npublic:\n\n  static const int patch_size_ = 2*HALF_PATCH_SIZE;\n  static const int patch_area_ = patch_size_*patch_size_;\n  static const int threshold_  = 2000*patch_area_;\n  uint8_t* ref_patch_;\n  int sumA_, sumAA_;\n\n  ZMSSD(uint8_t* ref_patch) :\n    ref_patch_(ref_patch)\n  {\n#ifdef __ARM_NEON__\n    if(patch_size_ == 0)\n    {\n      uint16x8_t tpl_x8;\n      uint16x8_t sumAx8  = vdupq_n_u16(0);\n      uint32x4_t sumAAx4 = vdupq_n_u32(0);\n      for(int i=0; i<64; i+=8)\n      {\n        tpl_x8 = vmovl_u8(vld1_u8(&ref_patch_[i]));\n        sumAx8 = vaddq_u16(sumAx8, tpl_x8);\n        sumAAx4 = vmlal_u16(sumAAx4, vget_low_u16(tpl_x8), vget_low_u16(tpl_x8));\n        sumAAx4 = vmlal_u16(sumAAx4, vget_high_u16(tpl_x8), vget_high_u16(tpl_x8));\n      }\n       uint16x4_t sumAx4 = vpadd_u16(vget_low_u16(sumAx8), vget_high_u16(sumAx8));\n       sumA_ = vget_lane_u16(sumAx4, 0) + vget_lane_u16(sumAx4, 1)\n             + vget_lane_u16(sumAx4, 2) + vget_lane_u16(sumAx4, 3);\n\n       uint32x2_t sumAAx2 = vpadd_u32(vget_low_u32(sumAAx4), vget_high_u32(sumAAx4));\n       sumAA_ = vget_lane_u32(sumAAx2, 0) + vget_lane_u32(sumAAx2, 1);\n    }\n    else\n#endif\n    {\n      uint32_t sumA_uint=0, sumAA_uint=0;\n      for(int r = 0; r < patch_area_; r++)\n      {\n        uint8_t n = ref_patch_[r];\n        sumA_uint += n;\n        sumAA_uint += n*n;\n      }\n      sumA_ = sumA_uint;\n      sumAA_ = sumAA_uint;\n    }\n  }\n\n  static int threshold() { return threshold_; }\n\n  int computeScore(uint8_t* cur_patch) const\n  {\n    uint32_t sumB_uint = 0;\n    uint32_t sumBB_uint = 0;\n    uint32_t sumAB_uint = 0;\n    for(int r = 0; r < patch_area_; r++)\n    {\n      const uint8_t cur_pixel = cur_patch[r];\n      sumB_uint  += cur_pixel;\n      sumBB_uint += cur_pixel*cur_pixel;\n      sumAB_uint += cur_pixel * ref_patch_[r];\n    }\n    const int sumB = sumB_uint;\n    const int sumBB = sumBB_uint;\n    const int sumAB = sumAB_uint;\n    return sumAA_ - 2*sumAB + sumBB - (sumA_*sumA_ - 2*sumA_*sumB + sumB*sumB)/patch_area_;\n  }\n\n  int computeScore(uint8_t* cur_patch, int stride) const\n  {\n    int sumB, sumBB, sumAB;\n#ifdef __SSSE3__\n    if(patch_size_ == 8)\n    {\n      // From PTAM-GPL, Copyright 2008 Isis Innovation Limited\n      __m128i xImageAsEightBytes;\n      __m128i xImageAsWords;\n      __m128i xTemplateAsEightBytes;\n      __m128i xTemplateAsWords;\n      __m128i xZero;\n      __m128i xImageSums;   // These sums are 8xuint16\n      __m128i xImageSqSums; // These sums are 4xint32\n      __m128i xCrossSums;   // These sums are 4xint32\n      __m128i xProduct;\n\n      xImageSums = _mm_setzero_si128();\n      xImageSqSums = _mm_setzero_si128();\n      xCrossSums = _mm_setzero_si128();\n      xZero = _mm_setzero_si128();\n\n      uint8_t* imagepointer = cur_patch;\n      uint8_t* templatepointer = ref_patch_;\n      long unsigned int cur_stride = stride;\n\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);\n      templatepointer += 16;\n      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n\n\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);\n      templatepointer += 16;\n      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);\n      templatepointer += 16;\n      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      imagepointer += cur_stride;\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsEightBytes=_mm_load_si128((__m128i*) templatepointer);\n      templatepointer += 16;\n      xTemplateAsWords = _mm_unpacklo_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n      xImageAsEightBytes=_mm_loadl_epi64((__m128i*) imagepointer);\n      xImageAsWords = _mm_unpacklo_epi8(xImageAsEightBytes,xZero);\n      xImageSums = _mm_adds_epu16(xImageAsWords,xImageSums);\n      xProduct = _mm_madd_epi16(xImageAsWords, xImageAsWords);\n      xImageSqSums = _mm_add_epi32(xProduct, xImageSqSums);\n      xTemplateAsWords = _mm_unpackhi_epi8(xTemplateAsEightBytes,xZero);\n      xProduct = _mm_madd_epi16(xImageAsWords, xTemplateAsWords);\n      xCrossSums = _mm_add_epi32(xProduct, xCrossSums);\n\n      sumB = SumXMM_16(xImageSums);\n      sumAB = SumXMM_32(xCrossSums);\n      sumBB = SumXMM_32(xImageSqSums);\n    }\n    else\n#endif\n#ifdef __ARM_NEON__\n    if(patch_size_ == 8)\n    {\n      uint16x8_t img_x8, tpl_x8;\n      uint16x8_t sumBx8  = vdupq_n_u16(0);\n      uint32x4_t sumBBx4 = vdupq_n_u32(0);\n      uint32x4_t sumABx4 = vdupq_n_u32(0);\n      uint8_t* cur_ptr = cur_patch;\n      uint8_t* ref_ptr = ref_patch_;\n      for(int i=0; i<64; i+=8, cur_ptr+=stride, ref_ptr+=8)\n      {\n        // load first row of image and tpl\n        img_x8 = vmovl_u8(vld1_u8(cur_ptr));\n        tpl_x8 = vmovl_u8(vld1_u8(ref_ptr));\n        // sum img\n        sumBx8 = vaddq_u16(sumBx8, img_x8);\n        // multiply and sum\n        sumBBx4 = vmlal_u16(sumBBx4, vget_low_u16(img_x8), vget_low_u16(img_x8));\n        sumBBx4 = vmlal_u16(sumBBx4, vget_high_u16(img_x8), vget_high_u16(img_x8));\n        // multiply and sum\n        sumABx4 = vmlal_u16(sumABx4, vget_low_u16(tpl_x8), vget_low_u16(img_x8));\n        sumABx4 = vmlal_u16(sumABx4, vget_high_u16(tpl_x8), vget_high_u16(img_x8));\n      }\n      uint16x4_t sumBx4 = vpadd_u16(vget_low_u16(sumBx8), vget_high_u16(sumBx8));\n      sumB = vget_lane_u16(sumBx4, 0) + vget_lane_u16(sumBx4, 1)\n           + vget_lane_u16(sumBx4, 2) + vget_lane_u16(sumBx4, 3);\n\n      uint32x2_t sumBBx2 = vpadd_u32(vget_low_u32(sumBBx4), vget_high_u32(sumBBx4));\n      sumBB = vget_lane_u32(sumBBx2, 0) + vget_lane_u32(sumBBx2, 1);\n\n      uint32x2_t sumABx2 = vpadd_u32(vget_low_u32(sumABx4), vget_high_u32(sumABx4));\n      sumAB = vget_lane_u32(sumABx2, 0) + vget_lane_u32(sumABx2, 1);\n\n    }\n    else\n#endif\n    {\n      uint32_t sumB_uint = 0;\n      uint32_t sumBB_uint = 0;\n      uint32_t sumAB_uint = 0;\n      for(int y=0, r=0; y < patch_size_; ++y)\n      {\n        uint8_t* cur_patch_ptr = cur_patch + y*stride;\n        for(int x=0; x < patch_size_; ++x, ++r)\n        {\n          const uint8_t cur_px = cur_patch_ptr[x];\n          sumB_uint  += cur_px;\n          sumBB_uint += cur_px * cur_px;\n          sumAB_uint += cur_px * ref_patch_[r];\n        }\n      }\n      sumB = sumB_uint;\n      sumBB = sumBB_uint;\n      sumAB = sumAB_uint;\n    }\n    return sumAA_ - 2*sumAB + sumBB - (sumA_*sumA_ - 2*sumA_*sumB + sumB*sumB)/patch_area_;\n  }\n};\n\n} // namespace patch_score\n} // namespace svo\n\n"
  },
  {
    "path": "svo_direct/include/svo/direct/patch_utils.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <glog/logging.h>\n#include <svo/common/types.h>\n#include <opencv2/imgproc/imgproc.hpp>\n\nnamespace svo {\nnamespace patch_utils {\n\ninline void createPatchFromPatchWithBorder(\n    const uint8_t* const patch_with_border,\n    const int patch_size,\n    uint8_t* patch)\n{\n  uint8_t* patch_ptr = patch;\n  for(int y=1; y<patch_size+1; ++y, patch_ptr += patch_size)\n  {\n    const uint8_t* ref_patch_border_ptr = patch_with_border + y*(patch_size+2) + 1;\n    for(int x=0; x<patch_size; ++x)\n      patch_ptr[x] = ref_patch_border_ptr[x];\n  }\n}\n\ninline void patchToMat(\n    const uint8_t* const patch_data,\n    const size_t patch_width,\n    cv::Mat* img)\n{\n  CHECK_NOTNULL(img);\n  *img = cv::Mat(patch_width, patch_width, CV_8UC1);\n  std::memcpy(img->data, patch_data, patch_width*patch_width);\n}\n\ninline void normalizeAndUpsamplePatch(\n    const cv::Mat& patch,\n    double upsample_factor,\n    cv::Mat* img_rgb)\n{\n  CHECK_NOTNULL(img_rgb);\n\n  cv::Mat patch_normalized;\n  if(patch.type() == CV_32FC1)\n  {\n    double minval, maxval;\n    cv::minMaxLoc(patch, &minval, &maxval);\n    patch_normalized = (patch - minval) / (maxval - minval);\n  }\n  else if(patch.type() == CV_8UC1)\n  {\n    patch.convertTo(patch_normalized, CV_32FC1);\n    double minval, maxval;\n    cv::minMaxLoc(patch_normalized, &minval, &maxval);\n    patch_normalized = (patch_normalized - minval) / (maxval - minval);\n  }\n  else\n  {\n    LOG(FATAL) << \"Image Type not supported.\";\n  }\n  cv::Mat img_gray;\n  cv::resize(patch_normalized, img_gray, cv::Size(0,0), upsample_factor, upsample_factor, cv::INTER_NEAREST);\n  *img_rgb = cv::Mat(img_gray.size(), CV_8UC3);\n  cv::cvtColor(img_gray, *img_rgb, cv::COLOR_GRAY2RGB);\n}\n\ninline void concatenatePatches(\n    std::vector<cv::Mat> patches,\n    cv::Mat* result_rgb)\n{\n  const size_t n = patches.size();\n  const int width = patches.at(0).cols;\n  const int height = patches.at(0).rows;\n\n  *result_rgb = cv::Mat(height, n*width, CV_32FC3);\n  for(size_t i = 0; i < n; ++i)\n  {\n    CHECK_EQ(width, patches[i].cols);\n    CHECK_EQ(height, patches[i].rows);\n    cv::Mat roi(*result_rgb, cv::Rect(i*width, 0, width, height));\n    cv::Mat patch_rgb(patches[i].size(), CV_32FC3);\n    cv::cvtColor(patches[i], patch_rgb, cv::COLOR_GRAY2RGB);\n    patch_rgb.copyTo(roi);\n  }\n}\n\n\n} // namespace patch_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/include/svo/direct/patch_warp.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/transformation.h>\n\nnamespace svo {\n\n// Forward declarations.\nclass FeatureWrapper;\n\n/// Warp a patch from the reference view to the current view.\nnamespace warp {\n\nusing AffineTransformation2 = Eigen::Matrix2d;\n\nvoid getWarpMatrixAffine(\n    const CameraPtr& cam_ref,\n    const CameraPtr& cam_cur,\n    const Eigen::Ref<Keypoint>& px_ref,\n    const Eigen::Ref<BearingVector>& f_ref,\n    const double depth_ref,\n    const Transformation& T_cur_ref,\n    const int level_ref,\n    AffineTransformation2* A_cur_ref);\n\nvoid getWarpMatrixAffineHomography(\n    const CameraPtr& cam_ref,\n    const CameraPtr& cam_cur,\n    const Keypoint& px_ref,\n    const BearingVector& f_ref,\n    const BearingVector& normal_ref,\n    const double depth_ref,\n    const Transformation T_cur_ref,\n    const int level_ref,\n    AffineTransformation2& A_cur_ref);\n\nint getBestSearchLevel(\n    const AffineTransformation2& A_cur_ref,\n    const int max_level);\n\nbool warpAffine(\n    const AffineTransformation2& A_cur_ref,\n    const cv::Mat& img_ref,\n    const Eigen::Ref<Keypoint>& px_ref,\n    const int level_ref,\n    const int level_cur,\n    const int halfpatch_size,\n    uint8_t* patch);\n\nbool warpPixelwise(\n    const Frame& cur_frame,\n    const Frame& ref_frame,\n    const FeatureWrapper& ref_ftr,\n    const int level_ref,\n    const int level_cur,\n    const int halfpatch_size,\n    uint8_t* patch);\n\nvoid createPatchNoWarp(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    const int halfpatch_size,\n    uint8_t* patch);\n\nvoid createPatchNoWarpInterpolated(\n    const cv::Mat& img,\n    const Eigen::Ref<Keypoint>& px,\n    const int halfpatch_size,\n    uint8_t* patch);\n\n\n} // namespace warp\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_direct</name>\n  <description>\n    SVO direct matching and feature alignment module.\n  </description>\n  <version>0.0.1</version>\n  <license>tbd</license>\n\n  <author>Christian Forster</author>\n  <author>Manuel Werlberger</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>cv_bridge</depend>\n  <depend>eigen_catkin</depend>\n  <depend>gflags_catkin</depend>\n  <depend>glog_catkin</depend>\n  <depend>roslib</depend>\n  <depend>svo_common</depend>\n  <depend>vikit_ros</depend>\n  <depend>vikit_solver</depend>\n  \n  <test_depend>gtest</test_depend>\n</package>\n"
  },
  {
    "path": "svo_direct/src/depth_estimation.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/depth_estimation.h>\n#include <svo/direct/patch_warp.h>\n#include <svo/direct/patch_utils.h>\n#include <svo/common/frame.h>\n#include <svo/common/camera.h>\n#include <opencv2/highgui/highgui.hpp>\n\nnamespace svo {\n\nDepthEstimator::DepthEstimator(const SolverOptions& solver_options)\n  : vk::solver::MiniLeastSquaresSolver<1, double, DepthEstimator>(solver_options)\n{ ; }\n\nDepthEstimator::SolverOptions DepthEstimator::getDefaultSolverOptions()\n{\n  SolverOptions options;\n  options.strategy = vk::solver::Strategy::GaussNewton;\n  options.max_iter = 10;\n  options.eps = 0.00001;\n  return options;\n}\n\nvoid DepthEstimator::run(\n    const FramePtr& cur_frame,\n    const FramePtr& ref_frame,\n    const int ref_feature_id)\n{\n  CHECK_GT(ref_frame->invmu_sigma2_a_b_vec_.cols(), ref_feature_id);\n  CHECK_GT(ref_frame->f_vec_.cols(), ref_feature_id);\n  CHECK_GT(ref_frame->img_pyr_.size(), static_cast<size_t>(kMaxLevel));\n  CHECK_GT(cur_frame->img_pyr_.size(), static_cast<size_t>(kMaxLevel));\n\n  cur_frame_ = cur_frame;\n  ref_frame_ = ref_frame;\n  f_ref_ = ref_frame_->f_vec_.col(ref_feature_id);\n  px_ref_ = ref_frame_->px_vec_.col(ref_feature_id);\n  T_cur_ref_ = cur_frame_->T_cam_world() * ref_frame_->T_world_cam();\n\n  double state = ref_frame_->invmu_sigma2_a_b_vec_(0, ref_feature_id);\n  for(level_ = kMaxLevel; level_ >= kMinLevel; --level_)\n  {\n    VLOG(100) << \"=== Pyramid Level \" << level_ << \" ===\";\n    mu_ = 0.1;\n    optimize(state);\n  }\n\n  ref_frame_->invmu_sigma2_a_b_vec_(0, ref_feature_id) = state;\n}\n\ndouble DepthEstimator::evaluateError(\n    const DepthEstimatorState& inverse_depth,\n    HessianMatrix* H,\n    GradientVector* g)\n{\n\n  const BearingVector f_cur =\n      T_cur_ref_.getRotation().rotate(f_ref_) + T_cur_ref_.getPosition()*inverse_depth;\n  Keypoint px_cur;\n  Eigen::Matrix<double, 2, 3> projection_jacobian;\n  cur_frame_->cam_->project3(f_cur, &px_cur, &projection_jacobian);\n  if(!cur_frame_->cam_->isKeypointVisibleWithMargin(px_cur, (kPatchHalfsize+3)*level_))\n  {\n    VLOG(200) << \"Depth Estimation: Cur-Patch out of image.\"\n              << \" px_cur_pyr = (\"  << (px_cur / (1 << level_)).transpose()\n              << \"), img_size = (\" << cur_frame_->img_pyr_[level_].cols\n              << \" x \" << cur_frame_->img_pyr_[level_].rows << \")\";\n    return 0.0;\n  }\n\n  // Compute warped patch.\n  warp::AffineTransformation2 A_cur_ref;\n  warp::getWarpMatrixAffine(\n      ref_frame_->cam(), cur_frame_->cam(), px_ref_, f_ref_,\n      1.0/std::max(0.000001, inverse_depth), T_cur_ref_, level_, &A_cur_ref);\n  if(!warp::warpAffine(A_cur_ref, ref_frame_->img_pyr_[level_], px_ref_,\n                       level_, level_, kPatchHalfsize+1, ref_patch_with_border_))\n  {\n    VLOG(200) << \"Depth Estimation: Ref-Patch out of image:\"\n              << \" px_ref_pyr = \"  << (px_ref_ / (1<<level_)).transpose()\n              << \"), img_size = (\" << cur_frame_->img_pyr_[level_].cols\n              << \" x \" << cur_frame_->img_pyr_[level_].rows << \")\";\n    return 0.0;\n  }\n  patch_utils::createPatchFromPatchWithBorder(\n        ref_patch_with_border_, kPatchSize, ref_patch_);\n\n  uint8_t cur_patch_with_border[(kPatchSize+2)*(kPatchSize+2)] __attribute__ ((aligned (16)));\n  Keypoint px_cur_vec = px_cur / (1 << level_);\n  warp::createPatchNoWarpInterpolated(\n      cur_frame_->img_pyr_[level_], px_cur_vec, kPatchHalfsize+1, cur_patch_with_border);\n\n  if(VLOG_IS_ON(200))\n  {\n    cv::Mat img_cur_rgb(cur_frame_->img_pyr_[level_].size(), CV_8UC3);\n    cv::cvtColor(cur_frame_->img_pyr_[level_], img_cur_rgb, cv::COLOR_GRAY2RGB);\n    cv::Mat img_ref_rgb(ref_frame_->img_pyr_[level_].size(), CV_8UC3);\n    cv::cvtColor(ref_frame_->img_pyr_[level_], img_ref_rgb, cv::COLOR_GRAY2RGB);\n    const Eigen::Vector2d px_ref_vec = px_ref_ / (1 << level_);\n    cv::rectangle(img_cur_rgb, cv::Rect(px_cur_vec(0), px_cur_vec(1), kPatchSize+3, kPatchSize+3), cv::Scalar(0,255,1));\n    cv::rectangle(img_ref_rgb, cv::Rect(px_ref_vec(0), px_ref_vec(1), kPatchSize+3, kPatchSize+3), cv::Scalar(0,255,1));\n    cv::imshow(\"img_cur_rgb\", img_cur_rgb);\n    cv::imshow(\"img_ref_rgb\", img_ref_rgb);\n    cv::Mat img_cur(kPatchSize+2, kPatchSize+2, CV_8UC1, cur_patch_with_border);\n    cv::Mat img_ref(kPatchSize+2, kPatchSize+2, CV_8UC1, ref_patch_with_border_);\n    cv::imshow(\"patch_cur\", img_cur);\n    cv::imshow(\"patch_ref\", img_ref);\n    cv::waitKey(0);\n  }\n\n  double chi2 = 0.0;\n  const int patch_step = kPatchSize+2;\n  for(int y=0; y<kPatchSize; ++y)\n  {\n    uint8_t* cur_px = (uint8_t*) cur_patch_with_border  + (y+1)*patch_step + 1;\n    uint8_t* ref_px = (uint8_t*) ref_patch_with_border_ + (y+1)*patch_step + 1;\n    for(int x=0; x<kPatchSize; ++x, ++cur_px, ++ref_px)\n    {\n      Eigen::Vector2d grad(0.5 * (cur_px[1] - cur_px[-1]),\n                           0.5 * (cur_px[patch_step] - cur_px[-patch_step]));\n      double residual = *cur_px - *ref_px;\n      double J =\n          grad.dot(projection_jacobian * T_cur_ref_.getRotation().rotate( f_ref_ * (-1.0 / std::pow(inverse_depth, 2)) ));\n\n      (*H)(0,0) += J*J;\n      (*g)(0)   -= J*residual;\n      chi2 += residual*residual;\n    }\n  }\n\n  return chi2;\n}\n\nvoid DepthEstimator::update(\n    const DepthEstimatorState& state_old,\n    const UpdateVector& dx,\n    DepthEstimatorState& state_new)\n{\n  state_new = state_old + dx(0);\n}\n\nbool DepthEstimator::solve(\n    const HessianMatrix& H,\n    const GradientVector& g,\n    UpdateVector& dx)\n{\n  dx(0) = g(0)/H(0,0);\n  return true;\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/src/depth_filter.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/depth_filter.h>\n\n#include <algorithm>\n#include <vikit/math_utils.h>\n#include <vikit/vision.h>\n#include <svo/common/camera.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/logging.h>\n#include <svo/common/seed.h>\n#include <svo/direct/matcher.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo/direct/patch_normal.h>\n\n\nnamespace svo {\n\nDepthFilter::DepthFilter(\n    const DepthFilterOptions& options,\n    const DetectorOptions& detector_options,\n    const CameraBundle::Ptr& cams)\n  : DepthFilter(options)\n{\n  // TODO: make a detector for every camera!\n  feature_detector_ =\n      feature_detection_utils::makeDetector(detector_options, cams->getCameraShared(0));\n}\n\nDepthFilter::DepthFilter(\n    const DepthFilterOptions& options)\n  : options_(options)\n  , matcher_(new Matcher())\n{\n  SVO_INFO_STREAM(\"DepthFilter: created.\");\n  matcher_->options_.scan_on_unit_sphere = options.scan_epi_unit_sphere;\n  matcher_->options_.affine_est_offset_ = options.affine_est_offset;\n  matcher_->options_.affine_est_gain_ = options.affine_est_gain;\n  if(options_.use_threaded_depthfilter)\n    startThread();\n}\n\nDepthFilter::~DepthFilter()\n{\n  stopThread();\n  SVO_INFO_STREAM(\"DepthFilter: destructed.\");\n}\n\nvoid DepthFilter::startThread()\n{\n  if(thread_)\n  {\n    SVO_ERROR_STREAM(\"DepthFilter: Thread already started!\");\n    return;\n  }\n  SVO_INFO_STREAM(\"DepthFilter: Start thread.\");\n  thread_.reset(new std::thread(&DepthFilter::updateSeedsLoop, this));\n}\n\nvoid DepthFilter::stopThread()\n{\n  SVO_DEBUG_STREAM(\"DepthFilter: stop thread invoked.\");\n  if(thread_ != nullptr)\n  {\n    SVO_DEBUG_STREAM(\"DepthFilter: interrupt and join thread... \");\n    quit_thread_ = true;\n    jobs_condvar_.notify_all();\n    thread_->join();\n    thread_.reset();\n  }\n}\n\nvoid DepthFilter::addKeyframe(\n    const FramePtr& frame,\n    const double depth_mean,\n    const double depth_min,\n    const double depth_max)\n{\n  // allocate memory for new features.\n  frame->resizeFeatureStorage(\n        frame->num_features_ + feature_detector_->grid_.occupancy_.size());\n\n  if(thread_ == nullptr)\n  {\n    ulock_t lock(feature_detector_mut_);\n    depth_filter_utils::initializeSeeds(\n          frame, feature_detector_, options_.max_n_seeds_per_frame,\n          depth_min, depth_max, depth_mean);\n  }\n  else\n  {\n    ulock_t lock(jobs_mut_);\n\n    // clear all other jobs, this one has priority\n    while(!jobs_.empty())\n      jobs_.pop();\n    jobs_.push(Job(frame, depth_min, depth_max, depth_mean));\n    jobs_condvar_.notify_all();\n  }\n}\n\nvoid DepthFilter::reset()\n{\n  ulock_t lock(jobs_mut_);\n  while(!jobs_.empty())\n    jobs_.pop();\n  SVO_INFO_STREAM(\"DepthFilter: RESET.\");\n}\n\nvoid DepthFilter::updateSeedsLoop()\n{\n  while(true)\n  {\n    // wait for new jobs\n    Job job;\n    {\n      ulock_t lock(jobs_mut_);\n      while(jobs_.empty() && !quit_thread_)\n        jobs_condvar_.wait(lock);\n\n      if(quit_thread_)\n        return;\n\n      job = jobs_.front();\n      jobs_.pop();\n    } // release lock\n\n    // process jobs\n    if(job.type == Job::SEED_INIT)\n    {\n      ulock_t lock(feature_detector_mut_);\n      depth_filter_utils::initializeSeeds(\n            job.cur_frame, feature_detector_, options_.max_n_seeds_per_frame,\n            job.min_depth, job.max_depth, job.mean_depth);\n    }\n    else if(job.type == Job::UPDATE)\n    {\n      // We get higher precision (10x in the synthetic blender dataset)\n      // when we keep updating seeds even though they are converged until\n      // the frame handler selects a new keyframe.\n      depth_filter_utils::updateSeed(\n            *job.cur_frame, *job.ref_frame, job.ref_frame_seed_index, *matcher_,\n            options_.seed_convergence_sigma2_thresh, true, false);\n    }\n  }\n}\n\nsize_t DepthFilter::updateSeeds(\n    const std::vector<FramePtr>& ref_frames_with_seeds,\n    const FramePtr& cur_frame)\n{\n  size_t n_success = 0;\n  if(thread_ == nullptr)\n  {\n    for(const FramePtr& ref_frame : ref_frames_with_seeds)\n    {\n      for(size_t i = 0; i < ref_frame->num_features_; ++i)\n      {\n        if(isSeed(ref_frame->type_vec_[i]))\n        {\n          // We get higher precision (10x in the synthetic blender dataset)\n          // when we keep updating seeds even though they are converged until\n          // the frame handler selects a new keyframe.\n          if(depth_filter_utils::updateSeed(\n                *cur_frame, *ref_frame, i, *matcher_,\n                options_.seed_convergence_sigma2_thresh, true, false))\n          {\n            ++n_success;\n          }\n        }\n      }\n    }\n    SVO_DEBUG_STREAM(\"DepthFilter: \" << cur_frame->cam()->getLabel() << \" updated \"\n                     << n_success << \" Seeds successfully.\");\n  }\n  else\n  {\n    ulock_t lock(jobs_mut_);\n    for(const FramePtr& ref_frame : ref_frames_with_seeds)\n    {\n      for(size_t i = 0; i < ref_frame->num_features_; ++i)\n      {\n        if(isSeed(ref_frame->type_vec_[i]))\n        {\n          jobs_.push(Job(cur_frame, ref_frame, i));\n        }\n      }\n    }\n    jobs_condvar_.notify_all();\n  }\n  return n_success;\n}\n\nnamespace depth_filter_utils {\n\nvoid initializeSeeds(\n    const FramePtr& frame,\n    const AbstractDetector::Ptr& feature_detector,\n    const size_t max_n_seeds,\n    const float depth_min,\n    const float depth_max,\n    const float depth_mean)\n{\n  // Detect new features.\n  Keypoints new_px;\n  Scores new_scores;\n  Levels new_levels;\n  Gradients new_grads;\n  FeatureTypes new_types;\n  Bearings new_f;\n\n  //! @todo (MWE) FIXME - When we (ab)use the init seeds to initialize the first\n  //! seeds the check px_vec_.cols()<(n_new+n_old) will fail but in case we don't\n  //! have any old features we don't have concurrency issues and we just do it;\n  //! still we should resolve this at some point and have a clean init / update procedure\n  //!\n  //! maybe the detector should take over more of these things as the detectors\n  //! know what's going on -> but take care to be thread-safe\n  //!\n  bool no_features_in_frame = (frame->numFeatures() == 0);\n\n  const int max_n_features = max_n_seeds - frame->numFeatures();\n  if(max_n_features <= 0)\n  {\n    VLOG(3) << \"Skip seed initialization. Have already enough features.\";\n    return;\n  }\n  if (no_features_in_frame)\n  {\n    ///TODO remove\n    frame->clearFeatureStorage();\n    CHECK_EQ(frame->px_vec_.size(), 0);\n\n    feature_detector->detect(\n          frame->img_pyr_, frame->getMask(), max_n_features, frame->px_vec_,\n          frame->score_vec_, frame->level_vec_, frame->grad_vec_, frame->type_vec_);\n\n    frame->num_features_ = frame->px_vec_.cols();\n    frame->invmu_sigma2_a_b_vec_.resize(Eigen::NoChange, frame->numFeatures());\n    frame->landmark_vec_.resize(frame->px_vec_.cols(), nullptr);\n    frame->seed_ref_vec_.resize(frame->px_vec_.cols());\n\n    // compute and normalize bearing vectors\n    frame_utils::computeNormalizedBearingVectors(frame->px_vec_, *frame->cam(), &frame->f_vec_);\n    for(size_t i = 0; i<frame->num_features_ ; ++i)\n    {\n      if(frame->type_vec_[i] == FeatureType::kCorner)\n        frame->type_vec_[i] = FeatureType::kCornerSeed;\n      else if(frame->type_vec_[i] == FeatureType::kEdgelet)\n        frame->type_vec_[i] = FeatureType::kEdgeletSeed;\n    }\n  }\n  else\n  {\n    feature_detector->detect(\n          frame->img_pyr_, frame->getMask(), max_n_features, new_px, new_scores,\n          new_levels, new_grads, new_types);\n    frame_utils::computeNormalizedBearingVectors(new_px, *frame->cam(), &new_f);\n  }\n\n  // Add features to frame.\n  const size_t n_old = frame->num_features_;\n  const size_t n_new = new_px.cols();\n\n  CHECK_GE(frame->px_vec_.cols(), static_cast<int>(n_new+n_old));\n  frame->px_vec_.middleCols(n_old, n_new) = new_px;\n  frame->f_vec_.middleCols(n_old, n_new) = new_f;\n  frame->grad_vec_.middleCols(n_old, n_new) = new_grads;\n  frame->score_vec_.segment(n_old, n_new) = new_scores;\n  frame->level_vec_.segment(n_old, n_new) = new_levels;\n  for(size_t i = 0, j = n_old; i < n_new; ++i, ++j)\n  {\n    if(new_types[i] == FeatureType::kCorner)\n      frame->type_vec_[j] = FeatureType::kCornerSeed;\n    else if(new_types[i] == FeatureType::kEdgelet)\n      frame->type_vec_[j] = FeatureType::kEdgeletSeed;\n  }\n  frame->num_features_ = n_old+n_new;\n\n  // initialize seeds\n  frame->seed_mu_range_ = seed::getMeanRangeFromDepthMinMax(depth_min, depth_max);\n  if (no_features_in_frame)\n  {\n    frame->invmu_sigma2_a_b_vec_.block(0, 0, 1, n_old).setConstant(seed::getMeanFromDepth(depth_mean));\n    frame->invmu_sigma2_a_b_vec_.block(1, 0, 1, n_old).setConstant(seed::getInitSigma2FromMuRange(frame->seed_mu_range_));\n    frame->invmu_sigma2_a_b_vec_.block(2, 0, 2, n_old).setConstant(10.0);\n  }\n  else\n  {\n    frame->invmu_sigma2_a_b_vec_.block(0, n_old, 1, n_new).setConstant(seed::getMeanFromDepth(depth_mean));\n    frame->invmu_sigma2_a_b_vec_.block(1, n_old, 1, n_new).setConstant(seed::getInitSigma2FromMuRange(frame->seed_mu_range_));\n    frame->invmu_sigma2_a_b_vec_.block(2, n_old, 2, n_new).setConstant(10.0);\n  }\n\n  SVO_DEBUG_STREAM(\"DepthFilter: \"<< frame->cam()->getLabel() <<\n                   \" Initialized \"<< n_new <<\" new seeds\");\n}\n\nbool updateSeed(\n    const Frame& cur_frame,\n    Frame& ref_frame,\n    const size_t& seed_index,\n    Matcher& matcher,\n    const FloatType sigma2_convergence_threshold,\n    const bool check_visibility,\n    const bool check_convergence,\n    const bool use_vogiatzis_update)\n{\n  if(cur_frame.id() == ref_frame.id())\n  {\n    SVO_WARN_STREAM(\"update seed with ref frame\");\n    return false;\n  }\n\n  constexpr double px_noise = 1.0;\n  static double px_error_angle = cur_frame.getAngleError(px_noise);\n\n  // check if seed is diverged\n  const FeatureType type = ref_frame.type_vec_[seed_index];\n  if(type == FeatureType::kOutlier)\n  {\n    return false;\n  }\n\n  // check if already converged\n  if((type == FeatureType::kCornerSeedConverged ||\n      type == FeatureType::kEdgeletSeedConverged) && check_convergence)\n  {\n    return false;\n  }\n\n  // Create wrappers\n  FeatureWrapper ref_ftr = ref_frame.getFeatureWrapper(seed_index);\n  Eigen::Ref<SeedState> state = ref_frame.invmu_sigma2_a_b_vec_.col(seed_index);\n\n  // check if point is visible in the current image\n  Transformation T_cur_ref = cur_frame.T_f_w_ * ref_frame.T_f_w_.inverse();\n  if(check_visibility)\n  {\n    const Eigen::Vector3d xyz_f(T_cur_ref*(seed::getDepth(state) * ref_ftr.f) );\n    Eigen::Vector2d px;\n    if(!cur_frame.cam()->project3(xyz_f, &px).isKeypointVisible())\n      return false;\n\n    // check margin\n    const Eigen::Vector2i pxi = px.cast<int>();\n    const int boundary = 9;\n\n    if(!cur_frame.cam()->isKeypointVisibleWithMargin(pxi, boundary))\n      return false;\n  }\n\n  // set matcher options\n  if(ref_ftr.type == FeatureType::kEdgeletSeed\n     || ref_ftr.type == FeatureType::kEdgeletSeedConverged)\n    matcher.options_.align_1d = true;\n  else\n    matcher.options_.align_1d = false;\n\n  // sanity checks\n  if(std::isnan(seed::mu(state)))\n    SVO_ERROR_STREAM(\"seed is nan!\");\n  if(std::isnan(std::sqrt(seed::sigma2(state))))\n    LOG(WARNING) << \"seed sigma is nan!\" << seed::sigma2(state) <<\n                     \", sq\" << std::sqrt(seed::sigma2(state)) <<\n                     \", check-convergence = \" << check_convergence;\n\n  // search epipolar line, find match, and triangulate to find new depth z\n  double depth;\n  Matcher::MatchResult res =\n      matcher.findEpipolarMatchDirect(\n        ref_frame, cur_frame, T_cur_ref, ref_ftr, seed::getInvDepth(state),\n        seed::getInvMinDepth(state), seed::getInvMaxDepth(state), depth);\n\n  if(res != Matcher::MatchResult::kSuccess)\n  {\n    if(!matcher.reject_)\n    {\n      seed::increaseOutlierProbability(state);\n    }\n    if(matcher.options_.verbose)\n    {\n      std::cout << \"filter fail = \" << Matcher::getResultString(res) << std::endl;\n    }\n    return false;\n  }\n\n  // compute tau\n  const FloatType depth_sigma = computeTau(T_cur_ref.inverse(), ref_ftr.f, depth, px_error_angle);\n\n  // update the estimate\n  if(use_vogiatzis_update)\n  {\n    if(!updateFilterVogiatzis(\n         seed::getMeanFromDepth(depth),\n         seed::getSigma2FromDepthSigma(depth, depth_sigma),\n         ref_frame.seed_mu_range_,\n         state))\n    {\n      ref_ftr.type = FeatureType::kOutlier;\n      return false;\n    }\n  }\n  else\n  {\n    if(!updateFilterGaussian(\n         seed::getMeanFromDepth(depth),\n         seed::getSigma2FromDepthSigma(depth, depth_sigma),\n         state))\n    {\n      ref_ftr.type = FeatureType::kOutlier;\n      return false;\n    }\n  }\n\n  // check if converged\n  if(seed::isConverged(state, ref_frame.seed_mu_range_, sigma2_convergence_threshold))\n  {\n    if(ref_ftr.type == FeatureType::kCornerSeed)\n      ref_ftr.type = FeatureType::kCornerSeedConverged;\n    else if(ref_ftr.type == FeatureType::kEdgeletSeed)\n      ref_ftr.type = FeatureType::kEdgeletSeedConverged;\n  }\n  return true;\n}\n\nbool updateFilterVogiatzis(\n    const FloatType z, // Measurement\n    const FloatType tau2,\n    const FloatType mu_range,\n    Eigen::Ref<SeedState>& mu_sigma2_a_b)\n{\n  FloatType& mu = mu_sigma2_a_b(0);\n  FloatType& sigma2 = mu_sigma2_a_b(1);\n  FloatType& a = mu_sigma2_a_b(2);\n  FloatType& b = mu_sigma2_a_b(3);\n\n  const FloatType norm_scale = std::sqrt(sigma2 + tau2);\n  if(std::isnan(norm_scale))\n  {\n    LOG(WARNING) << \"Update Seed: Sigma2+Tau2 is NaN\";\n    return false;\n  }\n\n  const FloatType oldsigma2 = sigma2;\n  const FloatType s2 = 1.0/(1.0/sigma2 + 1.0/tau2);\n  const FloatType m = s2*(mu/sigma2 + z/tau2);\n  const FloatType uniform_x = 1.0/mu_range;\n  FloatType C1 = a/(a+b) * vk::normPdf<FloatType>(z, mu, norm_scale);\n  FloatType C2 = b/(a+b) * uniform_x;\n  const FloatType normalization_constant = C1 + C2;\n  C1 /= normalization_constant;\n  C2 /= normalization_constant;\n  const FloatType f = C1*(a+1.0)/(a+b+1.0) + C2*a/(a+b+1.0);\n  const FloatType e = C1*(a+1.0)*(a+2.0)/((a+b+1.0)*(a+b+2.0))\n                    + C2*a*(a+1.0)/((a+b+1.0)*(a+b+2.0));\n\n  // update parameters\n  const FloatType mu_new = C1*m+C2*mu;\n  sigma2 = C1*(s2 + m*m) + C2*(sigma2 + mu*mu) - mu_new*mu_new;\n  mu = mu_new;\n  a = (e - f) / (f - e / f);\n  b = a * (1.0 - f) / f;\n\n  // TODO: This happens sometimes.\n  if(sigma2 < 0.0)\n  {\n    LOG(WARNING) << \"Seed sigma2 is negative!\";\n    sigma2 = oldsigma2;\n  }\n  if(mu < 0.0)\n  {\n    LOG(WARNING) << \"Seed diverged! mu is negative!!\";\n    mu = 1.0;\n    return false;\n  }\n  return true;\n}\n\nbool updateFilterGaussian(\n    const FloatType z, // Measurement\n    const FloatType tau2,\n    Eigen::Ref<SeedState>& mu_sigma2_a_b)\n{\n  FloatType& mu = mu_sigma2_a_b(0);\n  FloatType& sigma2 = mu_sigma2_a_b(1);\n  FloatType& a = mu_sigma2_a_b(2);\n  FloatType& b = mu_sigma2_a_b(3);\n\n  const FloatType norm_scale = std::sqrt(sigma2 + tau2);\n  if(std::isnan(norm_scale))\n  {\n    LOG(WARNING) << \"Update Seed: Sigma2+Tau2 is NaN\";\n    return false;\n  }\n\n  const FloatType denom = (sigma2 + tau2);\n  mu = (sigma2 * z + tau2 * mu) / denom;\n  sigma2 = sigma2 * tau2 / denom;\n\n  CHECK_GE(sigma2, 0.0);\n  CHECK_GE(mu, 0.0);\n  return true;\n}\n\ndouble computeTau(\n      const Transformation& T_ref_cur,\n      const BearingVector& f,\n      const FloatType z,\n      const FloatType px_error_angle)\n{\n  const BearingVector& t = T_ref_cur.getPosition();\n  const BearingVector a = f*z-t;\n  FloatType t_norm = t.norm();\n  FloatType a_norm = a.norm();\n  FloatType alpha = std::acos(f.dot(t)/t_norm); // dot product\n  FloatType beta = std::acos(a.dot(-t)/(t_norm*a_norm)); // dot product\n  FloatType beta_plus = beta + px_error_angle;\n  FloatType gamma_plus = M_PI-alpha-beta_plus; // triangle angles sum to PI\n  FloatType z_plus = t_norm*std::sin(beta_plus)/std::sin(gamma_plus); // law of sines\n  return (z_plus - z); // tau\n}\n\ndouble computeEpiGradAngle(\n    const Transformation& T_cur_ref,\n    const BearingVector& f_ref,\n    const GradientVector& grad_ref,\n    const FloatType depth_estimate)\n{\n  // compute epipolar line in current image\n  const BearingVector& e_hom = T_cur_ref.getPosition();\n  const BearingVector u_infty_hom(T_cur_ref.getRotation().rotate(f_ref));\n  const BearingVector l(e_hom.cross(u_infty_hom)); // epipolar line in homogeneous coordinates\n\n  const BearingVector f_ref_plus(f_ref + BearingVector(0.1*grad_ref[0], 0.1*grad_ref[1], f_ref[2]));\n\n  const BearingVector f_cur = T_cur_ref*(f_ref*depth_estimate);\n  const BearingVector f_cur_plus = T_cur_ref*(f_ref_plus*depth_estimate);\n\n  GradientVector grad_cur(vk::project2(f_cur_plus)-vk::project2(f_cur));\n  GradientVector l_dir(l[1],-l[0]);\n\n  grad_cur.normalize();\n  l_dir.normalize();\n\n  return std::fabs(l_dir.dot(grad_cur));\n}\n\n#ifdef SVO_USE_PHOTOMETRIC_DISPARITY_ERROR\nbool setSeedCovariance(\n    const int halfpatch_size,\n    const double image_noise2,\n    SeedImplementation::Ptr seed)\n{\n  FramePtr frame = seed->ftr_->frame.lock();\n  if(!frame)\n  {\n    SVO_ERROR_STREAM(\"Could not lock weak_ptr<Frame> in DepthFilter::setSeedCovariance\");\n    return false;\n  }\n  Eigen::Matrix2d H; H.setZero();\n  const int patch_size = 2*halfpatch_size;\n  const int L = seed->ftr_->level;\n  const cv::Mat& img = frame->img_pyr_[L];\n  const int step = img.step;\n  const int u = seed->ftr_->px[0]/(1<<L);\n  const int v = seed->ftr_->px[1]/(1<<L);\n\n  if(u-halfpatch_size < 0 || u+halfpatch_size >= img.cols\n      || v-halfpatch_size < 0 || v+halfpatch_size >= img.rows)\n    return false;\n\n  for(int y=0; y<patch_size; ++y)\n  {\n    uint8_t* p = img.data + (v-halfpatch_size+y)*step + (u-halfpatch_size);\n    for(int x=0; x<patch_size; ++x, ++p)\n    {\n      const Eigen::Vector2d J((p[1] - p[-1]), (p[step] - p[-step]));\n      H += J*J.transpose();\n    }\n  }\n  H /= 260100.0*patch_size*patch_size; // 260100 = 2^2 * 255^2 for the missing 0.5 of the derivative and the 255 of uint8_t image\n  seed->patch_cov_ = 2.0*image_noise2*H.inverse();\n\n  if((bool) std::isnan((double)seed->patch_cov_(0,0)))\n  {\n    SVO_WARN_STREAM(\"Seed Patch Covariance is NaN\");\n      return false;\n  }\n  return true;\n}\n\ndouble getSeedDisparityUncertainty(\n    const SeedImplementation::Ptr& seed,\n    const Transformation& T_cur_ref)\n{\n  // compute epipolar line in current image\n  // we use the essential matrix since we will only need the angle of the line\n  // which should not be affected by the K-matrix. (distortion yes, but hopefully\n  // neglectible).\n  Eigen::Matrix3d E_cur_ref(vk::skew(T_cur_ref.getPosition())*T_cur_ref.getRotationMatrix());\n  Eigen::Vector3d l_cur(E_cur_ref*seed->ftr_->f);\n\n  // TODO apply rotation to l_cur to get l_ref\n\n  // find uncertainty in direction of epipolar line, marginalize bivariate distribution\n  double epi_angle_cur = atan(-l_cur[0]/l_cur[1]);\n  double s = sin(-epi_angle_cur);\n  double c = cos(-epi_angle_cur);\n  double disp_sigma2 =\n      seed->patch_cov_.determinant() / (seed->patch_cov_(1,1)*c*c + 2*seed->patch_cov_(0,1)*s*c + seed->patch_cov_(0,0)*s*s);\n  return fmax(disp_sigma2, 1.0); // we don't want less than 1.0px uncertainty. because e.g. sampling errors\n}\n#endif\n\n} // namespace depth_filter_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/src/elder_zucker.cpp",
    "content": "#include <svo/direct/elder_zucker.h>\n#ifdef __SSSE3__\n#include <tmmintrin.h>\n#endif\n#include <boost/math/special_functions/erf.hpp>\n#include <opencv2/imgproc/imgproc.hpp>\n#include <opencv2/highgui/highgui.hpp>\n\nnamespace svo {\nnamespace elder_zucker {\n\nvoid detectEdges(\n    const std::vector<cv::Mat>& img_pyr,\n    const double sigma,\n    cv::Mat& edge_map,\n    cv::Mat& level_map)\n{\n//  printf(\"detect edges\\n\");\n  const float pi = 3.14159265358979323846264;\n  const float sn = sigma;\n  const float alpha_p = 2e-7;\n  const int n_levels = img_pyr.size()-1;\n\n  // STEP-1: Use local scale control to realiably estimate the intensity\n  // gradient at each image point.\n  std::vector<cv::Mat> img_pyr_smoothed(n_levels);\n  std::vector<cv::Mat> angle_pyr(n_levels);\n  for(int L=0; L<n_levels; ++L)\n  {\n    // smooth image pyramid\n    cv::GaussianBlur(img_pyr[L], img_pyr_smoothed[L], cv::Size(3,3), 0);\n\n    // compute image first derivative\n    const int delta=0;\n    cv::Mat dx, dy;\n    cv::Scharr(img_pyr_smoothed[L], dx, CV_16S, 1, 0, 1, delta, cv::BORDER_DEFAULT );\n    cv::Scharr(img_pyr_smoothed[L], dy, CV_16S, 0, 1, 1, delta, cv::BORDER_DEFAULT );\n\n    // compute critical threshold 1\n    const float scale = L+1;\n    const float s1 = sn * (1.0 / (2.0*sqrt(2.0*pi)*scale*scale));\n    const float c1 = s1 * sqrt(-2.0*log(alpha_p));\n//    printf(\"c1 = %f\\n\", c1);\n\n    // compute angle and magnitude in angle direction\n    const int n_rows = img_pyr_smoothed[L].rows;\n    const int n_cols = img_pyr_smoothed[L].cols;\n    angle_pyr[L] = cv::Mat(dx.size(), CV_32F);\n    for(int y=0; y<n_rows; ++y)\n    {\n      int16_t* p_dx = dx.ptr<int16_t>(y);\n      int16_t* p_dy = dy.ptr<int16_t>(y);\n      float* p_a = angle_pyr[L].ptr<float>(y);\n      for(int x=0; x<n_cols; ++x)\n      {\n        p_a[x] = std::atan2(p_dy[x], p_dx[x]);\n        float mag = std::cos(p_a[x])*p_dx[x]+std::sin(p_a[x])*p_dy[x];\n        if(std::abs(mag) < c1)\n          p_a[x]=0;\n      }\n    }\n  }\n\n  // find minimum level\n  cv::Mat angle(img_pyr_smoothed[0].size(), CV_32FC1, cv::Scalar(0));\n  for(int y=0; y<img_pyr_smoothed[0].rows; ++y)\n  {\n    float* p_a = angle.ptr<float>(y);\n    uint8_t* p_lev = level_map.ptr<uint8_t>(y);\n    for(int x=0; x<img_pyr_smoothed[0].cols; ++x)\n    {\n      for(int L=0; L<n_levels; ++L)\n      {\n        const float a = angle_pyr[L].at<float>(y/(1<<L), x/(1<<L));\n        if(a != 0.0) // TODO: what if angle is actually 0.0?\n        {\n          p_a[x] = a;\n          break;\n        }\n      }\n    }\n  }\n\n  std::vector<cv::Mat> lap_of_gau_pyr(img_pyr_smoothed.size());\n  for(int L=0; L<n_levels; ++L)\n  {\n    // compute image second derivative\n    cv::Mat dxdx1, dydy1, dxdy1;\n    getCovarEntries(img_pyr_smoothed[L], dxdx1, dydy1, dxdy1);\n\n    // smooth\n    cv::Mat dxdx, dydy, dxdy;\n    filterGauss3by316S(dxdx1, dxdx);\n    filterGauss3by316S(dydy1, dydy);\n    filterGauss3by316S(dxdy1, dxdy);\n\n    // compute critical threshold 2\n    const float scale = L+1;\n    const float s2 = sn / (4.0 * sqrt(pi/3.0)*scale*scale*scale);\n    const float c2 = sqrt(2.0) * s2 * (boost::math::erf_inv(1-alpha_p));\n\n    // compute laplacian of gaussians\n    const int n_rows = img_pyr_smoothed[L].rows;\n    const int n_cols = img_pyr_smoothed[L].cols;\n    lap_of_gau_pyr[L] = cv::Mat(img_pyr_smoothed[L].size(), CV_32F);\n    for(int y=0; y<n_rows; ++y)\n    {\n      int16_t* p_dxdx = dxdx.ptr<int16_t>(y);\n      int16_t* p_dxdy = dxdy.ptr<int16_t>(y);\n      int16_t* p_dydy = dydy.ptr<int16_t>(y);\n      float* p_a = angle.ptr<float>(y);\n      float* p_l = lap_of_gau_pyr[L].ptr<float>(y);\n      for(int x=0; x<n_cols; ++x)\n      {\n        const float ca = cos(p_a[x]);\n        const float sa = sin(p_a[x]);\n        p_l[x] = (ca*ca*p_dxdx[x])+(sa*sa*p_dydy[x])-(2*ca*sa*p_dxdy[x]);\n        if(fabs(p_l[x]) < c2)\n          p_l[x]=0;\n      }\n    }\n  }\n\n  // find minimum level\n  edge_map = cv::Mat(img_pyr_smoothed[0].size(), CV_32FC1, cv::Scalar(0));\n  level_map = cv::Mat(img_pyr_smoothed[0].size(), CV_8UC1, cv::Scalar(0));\n  for(int y=0; y<img_pyr_smoothed[0].rows; ++y)\n  {\n    float* p_e = edge_map.ptr<float>(y);\n    uint8_t* p_lev = level_map.ptr<uint8_t>(y);\n    for(int x=0; x<img_pyr_smoothed[0].cols; ++x)\n    {\n      for(int L=0; L<n_levels; ++L)\n      {\n        const float e = lap_of_gau_pyr[L].at<float>(y/(1<<L), x/(1<<L));\n        if(e != 0.0)\n        {\n          p_e[x] = e;\n          p_lev[x] = L;\n          break;\n        }\n      }\n    }\n  }\n}\n\n\nvoid getCovarEntries(\n    const cv::Mat& src,\n    cv::Mat& dxdx,\n    cv::Mat& dydy,\n    cv::Mat& dxdy)\n{\n#ifdef __SSSE3__\n  cv::Mat kernel=cv::Mat::zeros(3,3,CV_8S);\n  kernel.at<char>(0,0)=3*8;\n  kernel.at<char>(1,0)=10*8;\n  kernel.at<char>(2,0)=3*8;\n  kernel.at<char>(0,2)=-3*8;\n  kernel.at<char>(1,2)=-10*8;\n  kernel.at<char>(2,2)=-3*8;\n\n  const unsigned int X=3; // kernel size\n  const unsigned int Y=3; // kernel size\n  const unsigned int cx=1;\n  const unsigned int cy=1;\n\n  // dest will be 16 bit\n  dxdx=cv::Mat::zeros(src.rows,src.cols,CV_16S);\n  dydy=cv::Mat::zeros(src.rows,src.cols,CV_16S);\n  dxdy=cv::Mat::zeros(src.rows,src.cols,CV_16S);\n\n  const unsigned int maxJ=((src.cols-2)/16)*16;\n  const unsigned int maxI=src.rows-2;\n  const unsigned int stride=src.cols;\n\n  __m128i mask_hi = _mm_set_epi8(0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF);\n  __m128i mask_lo = _mm_set_epi8(0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00);\n\n  for(unsigned int i=0; i<maxI; ++i)\n  {\n    bool end=false;\n    for(unsigned int j=0; j<maxJ; )\n    {\n      //__m128i result = _mm_set_epi16 ( -127,-127,-127,-127,-127,-127,-127,-127,-127,-127);\n      __m128i result_hi_dx = _mm_set_epi16 ( 0,0,0,0,0,0,0,0);\n      __m128i result_lo_dx = _mm_set_epi16 ( 0,0,0,0,0,0,0,0);\n      __m128i result_hi_dy = _mm_set_epi16 ( 0,0,0,0,0,0,0,0);\n      __m128i result_lo_dy = _mm_set_epi16 ( 0,0,0,0,0,0,0,0);\n\n      // enter convolution with kernel\n      for(unsigned int x=0;x<X;++x)\n      {\n        //if(dx&&x==1)continue; // jump, 0 kernel\n        for(unsigned int y=0;y<Y;++y)\n        {\n          //if(!dx&&y==1)continue; // jump, 0 kernel\n          const char m_dx=kernel.at<char>(y,x);\n          const char m_dy=kernel.at<char>(x,y);\n          __m128i mult_dx = _mm_set_epi16(m_dx,m_dx,m_dx,m_dx,m_dx,m_dx,m_dx,m_dx);\n          __m128i mult_dy = _mm_set_epi16(m_dy,m_dy,m_dy,m_dy,m_dy,m_dy,m_dy,m_dy);\n          uchar* p=(src.data+(stride*(i+y))+x+j);\n          __m128i i0 = _mm_loadu_si128 ((__m128i*)p);\n          __m128i i0_hi=_mm_and_si128(i0,mask_hi);\n          __m128i i0_lo=_mm_srli_si128(_mm_and_si128(i0,mask_lo),1);\n\n          if(m_dx!=0)\n          {\n            __m128i i_hi_dx = _mm_mullo_epi16 (i0_hi, mult_dx);\n            __m128i i_lo_dx = _mm_mullo_epi16 (i0_lo, mult_dx);\n            result_hi_dx=_mm_add_epi16(result_hi_dx,i_hi_dx);\n            result_lo_dx=_mm_add_epi16(result_lo_dx,i_lo_dx);\n          }\n\n          if(m_dy!=0)\n          {\n            __m128i i_hi_dy = _mm_mullo_epi16 (i0_hi, mult_dy);\n            __m128i i_lo_dy = _mm_mullo_epi16 (i0_lo, mult_dy);\n            result_hi_dy=_mm_add_epi16(result_hi_dy,i_hi_dy);\n            result_lo_dy=_mm_add_epi16(result_lo_dy,i_lo_dy);\n          }\n        }\n      }\n\n      // calculate covariance entries - remove precision (ends up being 4 bit), then remove 4 more bits\n      __m128i i_hi_dx_dx = _mm_srai_epi16(_mm_mulhi_epi16 (result_hi_dx, result_hi_dx),4);\n      __m128i i_hi_dy_dy = _mm_srai_epi16(_mm_mulhi_epi16 (result_hi_dy, result_hi_dy),4);\n      __m128i i_hi_dx_dy = _mm_srai_epi16(_mm_mulhi_epi16 (result_hi_dy, result_hi_dx),4);\n      __m128i i_lo_dx_dx = _mm_srai_epi16(_mm_mulhi_epi16 (result_lo_dx, result_lo_dx),4);\n      __m128i i_lo_dy_dy = _mm_srai_epi16(_mm_mulhi_epi16 (result_lo_dy, result_lo_dy),4);\n      __m128i i_lo_dx_dy = _mm_srai_epi16(_mm_mulhi_epi16 (result_lo_dy, result_lo_dx),4);\n\n      // store\n      uchar* p_lo_dxdx=(dxdx.data+(2*stride*(i+cy)))+2*cx+2*j;\n      uchar* p_hi_dxdx=(dxdx.data+(2*stride*(i+cy)))+2*cx+2*j+16;\n      _mm_storeu_si128 ((__m128i*)p_hi_dxdx,_mm_unpackhi_epi16 (i_hi_dx_dx, i_lo_dx_dx));\n      _mm_storeu_si128 ((__m128i*)p_lo_dxdx,_mm_unpacklo_epi16 (i_hi_dx_dx, i_lo_dx_dx));\n      uchar* p_lo_dydy=(dydy.data+(2*stride*(i+cy)))+2*cx+2*j;\n      uchar* p_hi_dydy=(dydy.data+(2*stride*(i+cy)))+2*cx+2*j+16;\n      _mm_storeu_si128 ((__m128i*)p_hi_dydy,_mm_unpackhi_epi16 (i_hi_dy_dy, i_lo_dy_dy));\n      _mm_storeu_si128 ((__m128i*)p_lo_dydy,_mm_unpacklo_epi16 (i_hi_dy_dy, i_lo_dy_dy));\n      uchar* p_lo_dxdy=(dxdy.data+(2*stride*(i+cy)))+2*cx+2*j;\n      uchar* p_hi_dxdy=(dxdy.data+(2*stride*(i+cy)))+2*cx+2*j+16;\n      _mm_storeu_si128 ((__m128i*)p_hi_dxdy,_mm_unpackhi_epi16 (i_hi_dx_dy, i_lo_dx_dy));\n      _mm_storeu_si128 ((__m128i*)p_lo_dxdy,_mm_unpacklo_epi16 (i_hi_dx_dy, i_lo_dx_dy));\n\n      // take care about end\n      j+=16;\n      if(j>=maxJ&&!end)\n      {\n        j=stride-2-16;\n        end=true;\n      }\n    }\n  }\n#endif\n}\n\nvoid filterGauss3by316S(\n    const cv::Mat& src,\n    cv::Mat& dst)\n{\n#ifdef __SSSE3__\n  // sanity check\n  const unsigned int X=3;\n  const unsigned int Y=3;\n  assert(X%2!=0);\n  assert(Y%2!=0);\n  int cx=X/2;\n  int cy=Y/2;\n\n  // dest will be 16 bit\n  dst=cv::Mat::zeros(src.rows,src.cols,CV_16S);\n  const unsigned int maxJ=((src.cols-2)/8)*8;\n  const unsigned int maxI=src.rows-2;\n  const unsigned int stride=src.cols;\n\n  for(unsigned int i=0; i<maxI; ++i)\n  {\n    bool end=false;\n    for(unsigned int j=0; j<maxJ; )\n    {\n      // enter convolution with kernel. do the multiplication with 2/4 at the same time\n      __m128i i00 = _mm_loadu_si128 ((__m128i*)&src.at<short>(i,j));\n      __m128i i10 = _mm_slli_epi16(_mm_loadu_si128 ((__m128i*)&src.at<short>(i+1,j)),1);\n      __m128i i20 = _mm_loadu_si128 ((__m128i*)&src.at<short>(i+2,j));\n      __m128i i01 = _mm_slli_epi16(_mm_loadu_si128 ((__m128i*)&src.at<short>(i,j+1)),1);\n      __m128i i11 = _mm_slli_epi16(_mm_loadu_si128 ((__m128i*)&src.at<short>(i+1,j+1)),2);\n      __m128i i21 = _mm_slli_epi16(_mm_loadu_si128 ((__m128i*)&src.at<short>(i+2,j+1)),1);\n      __m128i i02 = _mm_loadu_si128 ((__m128i*)&src.at<short>(i,j+2));\n      __m128i i12 = _mm_slli_epi16(_mm_loadu_si128 ((__m128i*)&src.at<short>(i+1,j+2)),1);\n      __m128i i22 = _mm_loadu_si128 ((__m128i*)&src.at<short>(i+2,j+2));\n      __m128i result = i11;\n\n      // add up\n      result=_mm_add_epi16(result,i00);\n      result=_mm_add_epi16(result,i20);\n      result=_mm_add_epi16(result,i02);\n      result=_mm_add_epi16(result,i22);\n\n      result=_mm_add_epi16(result,i10);\n      result=_mm_add_epi16(result,i01);\n      result=_mm_add_epi16(result,i12);\n      result=_mm_add_epi16(result,i21);\n\n      // store\n      //uchar* p_r=(dst.data+(2*stride*(i+cy)))+2*cx+2*j;\n      _mm_storeu_si128 ((__m128i*)&dst.at<short>(i+cy,j+cx),result);\n\n      // take care about end\n      j+=8;\n      if(j>=maxJ&&!end)\n      {\n              j=stride-2-8;\n              end=true;\n      }\n    }\n  }\n#endif\n}\n\n} // namespace elder_zucker\n} // namespace svo\n\n\n"
  },
  {
    "path": "svo_direct/src/feature_alignment.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/feature_alignment.h>\n\n#ifdef __SSE2__\n# include <emmintrin.h>\n#endif\n#ifdef __ARM_NEON__\n# include <arm_neon.h>\n#endif\n\n#include <glog/logging.h>\n#include <Eigen/Dense>\n#include <opencv2/highgui/highgui.hpp>\n#include <opencv2/imgproc/imgproc.hpp>\n#include <svo/direct/patch_utils.h>\n\nnamespace svo {\nnamespace feature_alignment {\n\n#define SUBPIX_VERBOSE 0\n#define SVO_DISPLAY_ALIGN_1D 0\n\n//------------------------------------------------------------------------------\nbool align1D(\n    const cv::Mat& cur_img,\n    const Eigen::Ref<GradientVector>& dir,                  // direction in which the patch is allowed to move\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    const bool affine_est_offset,\n    const bool affine_est_gain,\n    Keypoint* cur_px_estimate,\n    double* h_inv)\n{\n  CHECK_NOTNULL(cur_px_estimate);\n\n  constexpr int kHalfPatchSize = 4;\n  constexpr int kPatchSize = 2 * kHalfPatchSize;\n  constexpr int kPatchArea = kPatchSize * kPatchSize;\n  bool converged = false;\n\n  // We optimize feature position and two affine parameters.\n  // Compute derivative of template and prepare inverse compositional.\n  float __attribute__((__aligned__(16))) ref_patch_dv[kPatchArea];\n  Eigen::Matrix3f H = Eigen::Matrix3f::Zero(3, 3);\n\n  // Compute gradient and hessian.\n  constexpr int ref_step = kPatchSize + 2;\n  float* it_dv = ref_patch_dv;\n  for(int y=0; y<kPatchSize; ++y)\n  {\n    uint8_t* it = ref_patch_with_border + (y+1)*ref_step + 1;\n    for(int x=0; x<kPatchSize; ++x, ++it, ++it_dv)\n    {\n      Eigen::Vector3f J;\n      const float dx = static_cast<float>(it[1]) - static_cast<float>(it[-1]);\n      const float dy = static_cast<float>(it[ref_step]) - static_cast<float>(it[-ref_step]);\n      J[0] = 0.5f * (dir(0) * dx + dir(1) * dy);\n\n      // If not using the affine compensation, set the jacobian be zero.\n      // In this way, all the blocks related to affine parameters will be zero.\n      J[1] = affine_est_offset? 1.0f : 0.0f;\n      J[2] = affine_est_gain? -1.0f*it[0] : 0.0f;\n\n      *it_dv = J[0];\n      H += J*J.transpose();\n    }\n  }\n  // If not use affine compensation, force update to be zero by\n  // * setting the affine parameter block in H to identity\n  // * setting the residual block to zero (see below)\n  if(!affine_est_offset)\n  {\n    H(1, 1) = 1.0;\n  }\n  if(!affine_est_gain)\n  {\n    H(2, 2) = 1.0;\n  }\n\n  if(h_inv)\n    *h_inv = 1.0/H(0,0)*kPatchSize*kPatchSize;\n  Eigen::Matrix3f Hinv = H.inverse();\n  float mean_diff = 0;\n  float alpha = 1.0;\n\n  // Compute pixel location in new image:\n  float u = cur_px_estimate->x();\n  float v = cur_px_estimate->y();\n\n  // termination condition\n  const float min_update_squared = 0.03*0.03;\n  const int cur_step = cur_img.step.p[0];\n  #if SVO_DISPLAY_ALIGN_1D\n  cv::Mat res_patch(kPatchSize, kPatchSize, CV_32FC1);\n  cv::Mat cur_patch(kPatchSize, kPatchSize, CV_32FC1);\n  #endif\n  for(int iter = 0; iter<n_iter; ++iter)\n  {\n    int u_r = std::floor(u);\n    int v_r = std::floor(v);\n    if(u_r < kHalfPatchSize\n       || v_r < kHalfPatchSize\n       || u_r >= cur_img.cols - kHalfPatchSize\n       || v_r >= cur_img.rows - kHalfPatchSize)\n      break;\n\n    if(std::isnan(u) || std::isnan(v)) // TODO very rarely this can happen, maybe H is singular? should not be at corner.. check\n      return false;\n\n    // compute interpolation weights\n    float subpix_x = u-u_r;\n    float subpix_y = v-v_r;\n    float wTL = (1.0-subpix_x)*(1.0-subpix_y);\n    float wTR = subpix_x * (1.0-subpix_y);\n    float wBL = (1.0-subpix_x)*subpix_y;\n    float wBR = subpix_x * subpix_y;\n\n    // loop through search_patch, interpolate\n    uint8_t* it_ref = ref_patch;\n    float* it_ref_dv = ref_patch_dv;\n    float new_chi2 = 0.0;\n    Eigen::Vector3f Jres = Eigen::Vector3f::Zero();\n    for(int y=0; y<kPatchSize; ++y)\n    {\n      uint8_t* it = (uint8_t*) cur_img.data +\n          (v_r+y-kHalfPatchSize)*cur_step + u_r-kHalfPatchSize;\n      for(int x=0; x<kPatchSize; ++x, ++it, ++it_ref, ++it_ref_dv)\n      {\n        float cur_intensity =\n            wTL*it[0] + wTR*it[1] + wBL*it[cur_step] + wBR*it[cur_step+1];\n        float res = cur_intensity - alpha*(*it_ref) + mean_diff;\n        Jres[0] -= res*(*it_ref_dv);\n\n        // If affine compensation is used,\n        // set Jres with respect to affine parameters.\n        if(affine_est_offset)\n        {\n          Jres[1] -= res;\n        }\n        if(affine_est_gain)\n        {\n          Jres[2] -= (-1)*res*(*it_ref);\n        }\n        new_chi2 += res*res;\n        #if SVO_DISPLAY_ALIGN_1D\n        res_patch.at<float>(y,x) = res;\n        cur_patch.at<float>(y,x) = cur_intensity;\n        #endif\n      }\n    }\n    // If not using affine compensation, force update to be zero.\n    if(!affine_est_offset)\n    {\n      Jres[1] = 0.0;\n    }\n    if(!affine_est_gain)\n    {\n      Jres[2] = 0.0;\n    }\n\n    Eigen::Vector3f update = Hinv * Jres;\n    u += update[0]*dir[0];\n    v += update[0]*dir[1];\n    mean_diff += update[1];\n    alpha += update[2];\n\n    VLOG(300) << \"It. \" << iter << \": \\t\"\n              << \"\\t u=\" << u << \", v=\" << v\n              << \"\\t update = \"\n              << update[0] << \", \" << update[1] << \", \" << update[2]\n              << \"\\t new chi2 = \" << new_chi2;\n\n    #if SVO_DISPLAY_ALIGN_1D\n    cv::Mat res_patch_normalized, cur_patch_normalized, ref_patch_img, ref_patch_normalized;\n    patch_utils::normalizeAndUpsamplePatch(res_patch, 8, &res_patch_normalized);\n    patch_utils::normalizeAndUpsamplePatch(cur_patch, 8, &cur_patch_normalized);\n    patch_utils::patchToMat(ref_patch, kPatchSize, &ref_patch_img);\n    patch_utils::normalizeAndUpsamplePatch(ref_patch_img, 8, &ref_patch_normalized);\n    cv::Mat concatenated;\n    patch_utils::concatenatePatches({ref_patch_normalized,\n                                     cur_patch_normalized,\n                                     res_patch_normalized}, &concatenated);\n    cv::line(concatenated,\n             cv::Point2f(concatenated.rows/2, concatenated.rows/2),\n             cv::Point2f(concatenated.rows/2+15*dir(0), concatenated.rows/2 +15*dir(1)),\n             cv::Scalar(0,0,255), 3);\n    cv::imshow(\"concatenated\", concatenated);\n    cv::waitKey(0);\n    #endif\n\n    if(update[0]*update[0] < min_update_squared)\n    {\n      VLOG(300) << \"converged.\";\n      converged = true;\n      break;\n    }\n  }\n\n  *cur_px_estimate << u, v;\n  return converged;\n}\n\n//------------------------------------------------------------------------------\nbool align2D(\n    const cv::Mat& cur_img,\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    const bool affine_est_offset,\n    const bool affine_est_gain,\n    Keypoint& cur_px_estimate,\n    bool no_simd,\n    std::vector<Eigen::Vector2f> *each_step)\n{\n#ifdef __ARM_NEON__\n  if(!no_simd)\n    return align2D_NEON(cur_img, ref_patch_with_border,\n                        ref_patch, n_iter, cur_px_estimate);\n#endif\n\n  if(each_step) each_step->clear();\n\n  const int halfpatch_size_ = 4;\n  const int patch_size_ = 8;\n  const int patch_area_ = 64;\n  bool converged=false;\n\n  // We optimize feature position and two affine parameters.\n  // compute derivative of template and prepare inverse compositional\n  float __attribute__((__aligned__(16))) ref_patch_dx[patch_area_];\n  float __attribute__((__aligned__(16))) ref_patch_dy[patch_area_];\n  Eigen::Matrix4f H; H.setZero();\n\n  // compute gradient and hessian\n  const int ref_step = patch_size_+2;\n  float* it_dx = ref_patch_dx;\n  float* it_dy = ref_patch_dy;\n  for(int y=0; y<patch_size_; ++y)\n  {\n    uint8_t* it = ref_patch_with_border + (y+1)*ref_step + 1;\n    for(int x=0; x<patch_size_; ++x, ++it, ++it_dx, ++it_dy)\n    {\n      Eigen::Vector4f J;\n      J[0] = 0.5 * (it[1] - it[-1]);\n      J[1] = 0.5 * (it[ref_step] - it[-ref_step]);\n\n      // If not using the affine compensation, force the jacobian to be zero.\n      J[2] = affine_est_offset? 1.0 : 0.0;\n      J[3] = affine_est_gain? -1.0*it[0]: 0.0;\n\n      *it_dx = J[0];\n      *it_dy = J[1];\n      H += J*J.transpose();\n    }\n  }\n  // If not use affine compensation, force update to be zero by\n  // * setting the affine parameter block in H to identity\n  // * setting the residual block to zero (see below)\n  if(!affine_est_offset)\n  {\n    H(2, 2) = 1.0;\n  }\n  if(!affine_est_gain)\n  {\n    H(3, 3) = 1.0;\n  }\n  Eigen::Matrix4f Hinv = H.inverse();\n  float mean_diff = 0;\n  float alpha = 1.0;\n\n  // Compute pixel location in new image:\n  float u = cur_px_estimate.x();\n  float v = cur_px_estimate.y();\n\n  if(each_step) each_step->push_back(Eigen::Vector2f(u, v));\n\n  // termination condition\n  const float min_update_squared = 0.03*0.03; // TODO I suppose this depends on the size of the image (ate)\n  const int cur_step = cur_img.step.p[0];\n  //float chi2 = 0;\n  Eigen::Vector4f update; update.setZero();\n  for(int iter = 0; iter<n_iter; ++iter)\n  {\n    int u_r = std::floor(u);\n    int v_r = std::floor(v);\n    if(u_r < halfpatch_size_\n       || v_r < halfpatch_size_\n       || u_r >= cur_img.cols-halfpatch_size_\n       || v_r >= cur_img.rows-halfpatch_size_)\n      break;\n\n    if(std::isnan(u) || std::isnan(v)) // TODO very rarely this can happen, maybe H is singular? should not be at corner.. check\n      return false;\n\n    // compute interpolation weights\n    float subpix_x = u-u_r;\n    float subpix_y = v-v_r;\n    float wTL = (1.0-subpix_x)*(1.0-subpix_y);\n    float wTR = subpix_x * (1.0-subpix_y);\n    float wBL = (1.0-subpix_x)*subpix_y;\n    float wBR = subpix_x * subpix_y;\n\n    // loop through search_patch, interpolate\n    uint8_t* it_ref = ref_patch;\n    float* it_ref_dx = ref_patch_dx;\n    float* it_ref_dy = ref_patch_dy;\n    //float new_chi2 = 0.0;\n    Eigen::Vector4f Jres; Jres.setZero();\n    for(int y=0; y<patch_size_; ++y)\n    {\n      uint8_t* it = (uint8_t*) cur_img.data + (v_r+y-halfpatch_size_)*cur_step + u_r-halfpatch_size_;\n      for(int x=0; x<patch_size_; ++x, ++it, ++it_ref, ++it_ref_dx, ++it_ref_dy)\n      {\n        float search_pixel = wTL*it[0] + wTR*it[1] + wBL*it[cur_step] + wBR*it[cur_step+1];\n        float res = search_pixel - alpha*(*it_ref) + mean_diff;\n        Jres[0] -= res*(*it_ref_dx);\n        Jres[1] -= res*(*it_ref_dy);\n\n        // If affine compensation is used,\n        // set Jres with respect to affine parameters.\n        if(affine_est_offset)\n        {\n          Jres[2] -= res;\n        }\n\n        if(affine_est_gain)\n        {\n          Jres[3] -= (-1)*res*(*it_ref);\n        }\n        //new_chi2 += res*res;\n      }\n    }\n    // If not use affine compensation, force update to be zero.\n    if(!affine_est_offset)\n    {\n      Jres[2] = 0.0;\n    }\n    if(!affine_est_gain)\n    {\n      Jres[3] = 0.0;\n    }\n    /*\n    if(iter > 0 && new_chi2 > chi2)\n    {\n#if SUBPIX_VERBOSE\n      cout << \"error increased.\" << endl;\n#endif\n      u -= update[0];\n      v -= update[1];\n      break;\n    }\n    chi2 = new_chi2;\n*/\n    update = Hinv * Jres;\n    u += update[0];\n    v += update[1];\n    mean_diff += update[2];\n    alpha += update[3];\n\n    if(each_step) each_step->push_back(Eigen::Vector2f(u, v));\n\n#if SUBPIX_VERBOSE\n    cout << \"Iter \" << iter << \":\"\n         << \"\\t u=\" << u << \", v=\" << v\n         << \"\\t update = \" << update[0] << \", \" << update[1]\n         << \"\\t new chi2 = \" << new_chi2 << endl;\n#endif\n\n    if(update[0]*update[0]+update[1]*update[1] < min_update_squared)\n    {\n#if SUBPIX_VERBOSE\n      cout << \"converged.\" << endl;\n#endif\n      converged=true;\n      break;\n    }\n  }\n\n  cur_px_estimate << u, v;\n  (void)no_simd;\n\n  return converged;\n}\n\n#define  DESCALE(x,n)     (((x) + (1 << ((n)-1))) >> (n)) // rounds to closest integer and descales\n\n//------------------------------------------------------------------------------\nbool align2D_SSE2(\n    const cv::Mat& cur_img,\n    uint8_t* ref_patch_with_border,\n    uint8_t* ref_patch,\n    const int n_iter,\n    Keypoint& cur_px_estimate)\n{\n  // TODO: This function should not be used as the alignment is not robust to illumination changes!\n  const int halfpatch_size = 4;\n  const int patch_size = 8;\n  const int patch_area = 64;\n  bool converged=false;\n  const int W_BITS = 14;\n\n  // compute derivative of template and prepare inverse compositional\n  int16_t __attribute__((__aligned__(16))) ref_patch_dx[patch_area];\n  int16_t __attribute__((__aligned__(16))) ref_patch_dy[patch_area];\n\n  // compute gradient and hessian\n  const int ref_step = patch_size+2;\n  int16_t* it_dx = ref_patch_dx;\n  int16_t* it_dy = ref_patch_dy;\n  float A11=0, A12=0, A22=0;\n  for(int y=0; y<patch_size; ++y)\n  {\n    uint8_t* it = ref_patch_with_border + (y+1)*ref_step + 1;\n    for(int x=0; x<patch_size; ++x, ++it, ++it_dx, ++it_dy)\n    {\n      int16_t dx = static_cast<int16_t>(it[1]) - it[-1];\n      int16_t dy = static_cast<int16_t>(it[ref_step]) - it[-ref_step];\n      *it_dx = dx;\n      *it_dy = dy;  // we are missing a factor 1/2\n      A11 += static_cast<float>(dx*dx); // we are missing a factor 1/4\n      A12 += static_cast<float>(dx*dy);\n      A22 += static_cast<float>(dy*dy);\n    }\n  }\n\n  // Compute pixel location in new image:\n  float u = cur_px_estimate.x();\n  float v = cur_px_estimate.y();\n\n  // termination condition\n  const float min_update_squared = 0.03*0.03;\n#ifdef __SSE2__\n  const int cur_step = cur_img.step.p[0];\n#endif\n  const float Dinv = 1.0f/(A11*A22 - A12*A12); // we are missing an extra factor 16\n  float chi2 = 0;\n  float update_u = 0, update_v = 0;\n\n  for(int iter = 0; iter<n_iter; ++iter)\n  {\n    int u_r = std::floor(u);\n    int v_r = std::floor(v);\n    if(u_r < halfpatch_size || v_r < halfpatch_size || u_r >= cur_img.cols-halfpatch_size || v_r >= cur_img.rows-halfpatch_size)\n      break;\n\n    if(std::isnan(u) || std::isnan(v)) // TODO very rarely this can happen, maybe H is singular? should not be at corner.. check\n      return false;\n\n    float subpix_x = u-u_r;\n    float subpix_y = v-v_r;\n    float b1=0, b2=0;\n    float new_chi2 = 0.0;\n\n#ifdef __SSE2__\n    // compute bilinear interpolation weights\n    int wTL = static_cast<int>((1.0f-subpix_x)*(1.0f-subpix_y)*(1 << W_BITS));\n    int wTR = static_cast<int>(subpix_x * (1.0f-subpix_y)*(1 << W_BITS));\n    int wBL = static_cast<int>((1.0f-subpix_x)*subpix_y*(1 << W_BITS));\n    int wBR = (1 << W_BITS) - wTL - wTR - wBL;\n\n    __m128i qw0 = _mm_set1_epi32(wTL + (wTR << 16)); // Sets the 4 signed 32-bit integer values to [wTL, wTR].\n    __m128i qw1 = _mm_set1_epi32(wBL + (wBR << 16));\n    __m128i z = _mm_setzero_si128();\n    __m128 qb0 = _mm_setzero_ps(); // 4 floats\n    __m128 qb1 = _mm_setzero_ps(); // 4 floats\n    __m128i qdelta = _mm_set1_epi32(1 << (W_BITS-1));\n    for(int y=0; y<patch_size; ++y)\n    {\n      const uint8_t* it  = (const uint8_t*) cur_img.data + (v_r+y-halfpatch_size)*cur_step + u_r-halfpatch_size;\n\n      // Iptr is aligned!\n      //__m128i diff0 = _mm_load_si128((const __m128i*)(ref_patch + y*8));\n      __m128i diff = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(ref_patch + y*8)), z);\n\n      // load the lower 64 bits and unpack [8u 0 8u 0..]\n      __m128i v00 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(it)), z);\n      __m128i v01 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(it + 1)), z);\n      __m128i v10 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(it + cur_step)), z);\n      __m128i v11 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(it + cur_step + 1)), z);\n\n      // interpolate top row and bottom row\n      // _mm_unpacklo_epi16: Interleaves the lower 4 signed or unsigned 16-bit integers in a with the lower 4 signed or unsigned 16-bit integers in b.\n      // _mm_madd_epi16: Multiplies the 8 signed 16-bit integers from a by the 8 signed 16-bit integers from b.\n      __m128i t0 = _mm_add_epi32(_mm_madd_epi16(_mm_unpacklo_epi16(v00, v01), qw0),\n                                 _mm_madd_epi16(_mm_unpacklo_epi16(v10, v11), qw1));\n      __m128i t1 = _mm_add_epi32(_mm_madd_epi16(_mm_unpackhi_epi16(v00, v01), qw0),\n                                 _mm_madd_epi16(_mm_unpackhi_epi16(v10, v11), qw1));\n\n      // _mm_srai_epi32: Shifts the 4 signed 32-bit integers in A right by count bits while shifting in the sign bit.\n      t0 = _mm_srai_epi32(_mm_add_epi32(t0, qdelta), W_BITS); // adding qdelta is for rounding closest int\n      t1 = _mm_srai_epi32(_mm_add_epi32(t1, qdelta), W_BITS);\n\n      // compute 8xres:\n      // _mm_packs_epi32: Packs the 8 signed 32-bit integers from a and b into signed 16-bit integers and saturates.\n      diff = _mm_subs_epi16(_mm_packs_epi32(t0, t1), diff);\n\n      // load gradient dX and dY, both are aligned!\n      v00 = _mm_load_si128((const __m128i*)(ref_patch_dx + y*patch_size)); // [dx1, dx2, dx3, dx4 ...]\n      v01 = _mm_load_si128((const __m128i*)(ref_patch_dy + y*patch_size)); // [dy1, dy2, dy3, dy4 ...]\n\n      // _mm_mulhi_epi16: Multiplies the 8 signed 16-bit integers from a by the 8 signed 16-bit integers from b.\n      v10 = _mm_mullo_epi16(v00, diff); // Packs the lower 16 bits of the 8 signed 32-bit results. [15:0]\n      v11 = _mm_mulhi_epi16(v00, diff); // Packs the upper 16 bits of the 8 signed 32-bit results. [31:16]\n\n      // _mm_unpacklo_epi16: Interleaves the lower 4 signed or unsigned 16-bit integers with the lower 4 signed or unsigned 16-bit integers in b.\n      v00 = _mm_unpacklo_epi16(v10, v11);\n      v10 = _mm_unpackhi_epi16(v10, v11);\n\n      // convert to float and add to dx\n      qb0 = _mm_add_ps(qb0, _mm_cvtepi32_ps(v00));\n      qb0 = _mm_add_ps(qb0, _mm_cvtepi32_ps(v10));\n\n      // same with dY\n      v10 = _mm_mullo_epi16(v01, diff);\n      v11 = _mm_mulhi_epi16(v01, diff);\n      v00 = _mm_unpacklo_epi16(v10, v11);\n      v10 = _mm_unpackhi_epi16(v10, v11);\n      qb1 = _mm_add_ps(qb1, _mm_cvtepi32_ps(v00));\n      qb1 = _mm_add_ps(qb1, _mm_cvtepi32_ps(v10));\n    }\n\n    float __attribute__((__aligned__(16))) buf[4];\n    _mm_store_ps(buf, qb0);\n    b1 += buf[0]+buf[1]+buf[2]+buf[3];\n    _mm_store_ps(buf, qb1);\n    b2 += buf[0]+buf[1]+buf[2]+buf[3];\n#endif\n\n    // compute -A^-1*b\n    update_u = ((A12*b2 - A22*b1) * Dinv)*2; // * 2 to compensate because above, we did not compute the derivative correctly\n    update_v = ((A12*b1 - A11*b2) * Dinv)*2;\n    u += update_u;\n    v += update_v;\n\n#if SUBPIX_VERBOSE\n    cout << \"Iter \" << iter << \":\"\n         << \"\\t u=\" << u << \", v=\" << v\n         << \"\\t update = \" << update_u << \", \" << update_v\n         << \"\\t new chi2 = \" << new_chi2 << endl;\n#endif\n\n    if(update_u*update_u+update_v*update_v < min_update_squared)\n    {\n#if SUBPIX_VERBOSE\n      cout << \"converged.\" << endl;\n#endif\n      converged=true;\n      break;\n    }\n    chi2 = new_chi2;\n    (void)chi2;\n    (void)subpix_x;\n    (void)subpix_y;\n    (void)ref_patch;\n  }\n\n  cur_px_estimate << u, v;\n  (void)W_BITS;\n  return converged;\n}\n\n//------------------------------------------------------------------------------\nbool align2D_NEON (const cv::Mat& cur_img,\n                   uint8_t* ref_patch_with_border,\n                   uint8_t* ref_patch,\n                   const int n_iter,\n                   Keypoint& cur_px_estimate)\n{\n  const int halfpatch_size = 4;\n  const int patch_size = 8;\n  const int patch_area = 64;\n  bool converged=false;\n  const int W_BITS = 14;\n\n  // compute derivative of template and prepare inverse compositional\n  int16_t __attribute__((__aligned__(16))) ref_patch_dx[patch_area];\n  int16_t __attribute__((__aligned__(16))) ref_patch_dy[patch_area];\n\n  // compute gradient and hessian\n  const int ref_step = patch_size+2;\n  int16_t* it_dx = ref_patch_dx;\n  int16_t* it_dy = ref_patch_dy;\n  Eigen::Matrix3f H; H.setZero();\n  for(int y=0; y<patch_size; ++y)\n  {\n    uint8_t* it = ref_patch_with_border + (y+1)*ref_step + 1;\n    for(int x=0; x<patch_size; ++x, ++it, ++it_dx, ++it_dy)\n    {\n      *it_dx = static_cast<int16_t>(it[1]) - it[-1];\n      *it_dy = static_cast<int16_t>(it[ref_step]) - it[-ref_step]; // divide by 2 missing\n      Eigen::Vector3f J(*it_dx, *it_dy, 1.0f);\n      H += J*J.transpose();\n    }\n  }\n  Eigen::Matrix3f Hinv = H.inverse();\n  float mean_diff = 0.0;\n\n  // Compute pixel location in new image:\n  float u = cur_px_estimate.x();\n  float v = cur_px_estimate.y();\n\n  // termination condition\n  const float min_update_squared = 0.03*0.03;\n  const int cur_step = cur_img.step.p[0];\n  Eigen::Vector3f update;\n  Eigen::Vector3f Jres;\n  for(int iter = 0; iter<n_iter; ++iter)\n  {\n    const int u_r = std::floor(u);\n    const int v_r = std::floor(v);\n    if(u_r < halfpatch_size || v_r < halfpatch_size || u_r >= cur_img.cols-halfpatch_size || v_r >= cur_img.rows-halfpatch_size)\n      break;\n\n    if(std::isnan(u) || std::isnan(v)) // TODO very rarely this can happen, maybe H is singular? should not be at corner.. check\n      return false;\n\n    const float subpix_x = u-u_r;\n    const float subpix_y = v-v_r;\n    float b1=0, b2=0;\n\n#ifdef __ARM_NEON__\n    const int SHIFT_BITS = 7;\n    const uint16_t wTL = static_cast<uint16_t>((1.0f-subpix_x)*(1.0f-subpix_y)*(1<<SHIFT_BITS));\n    const uint16_t wTR = static_cast<uint16_t>(subpix_x*(1.0f-subpix_y)*(1<<SHIFT_BITS));\n    const uint16_t wBL = static_cast<uint16_t>((1.0f-subpix_x)*subpix_y*(1<<SHIFT_BITS));\n    const uint16_t wBR = static_cast<uint16_t>((1 << SHIFT_BITS) - wTL - wTR - wBL);\n\n    // initialize result to zero\n    int32x4_t vb1 = vdupq_n_s32(0);\n    int32x4_t vb2 = vdupq_n_s32(0);\n    int16x8_t vmean_diff = vdupq_n_s16( (int16_t) (mean_diff+0.5) );\n    int16x8_t vres_sum = vdupq_n_s16(0);\n    for(int y=0; y<patch_size; ++y)\n    {\n      const uint8_t* it  = (const uint8_t*) cur_img.data + (v_r+y-halfpatch_size)*cur_step + u_r-halfpatch_size;\n\n      // load and convert from uint8 to uint16\n      uint16x8_t v00 = vmovl_u8( vld1_u8( it ) );\n      uint16x8_t v01 = vmovl_u8( vld1_u8( it + 1 ) );\n      uint16x8_t v10 = vmovl_u8( vld1_u8( it + cur_step ) );\n      uint16x8_t v11 = vmovl_u8( vld1_u8( it + cur_step + 1 ) );\n\n      // vector multiply by scalar\n      v00 = vmulq_n_u16( v00, wTL );\n      v01 = vmulq_n_u16( v01, wTR );\n      v10 = vmulq_n_u16( v10, wBL );\n      v11 = vmulq_n_u16( v11, wBR );\n\n      // add all results together\n      v00 = vaddq_u16( v00, vaddq_u16( v01, vaddq_u16( v10, v11 ) ) );\n\n      // descale: shift right by constant\n      v00 = vrshrq_n_u16(v00, SHIFT_BITS);\n\n      // compute difference between reference and interpolated patch,\n      // use reinterpet-cast to make signed [-255,255]\n      int16x8_t res = vsubq_s16(vreinterpretq_s16_u16(v00), vreinterpretq_s16_u16(vmovl_u8(vld1_u8( ref_patch + y*8 ))));\n\n      // correct res with mean difference\n      res = vaddq_s16(res, vmean_diff);\n\n      // compute sum of the residual\n      vres_sum = vaddq_s16(vres_sum, res);\n\n      // Eigen::Vector multiply accumulate long: vmla -> Vr[i] := Va[i] + Vb[i] * Vc[i]\n      // int32x4_t  vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c);    // VMLAL.S16 q0,d0,d0\n      int16x8_t grad = vld1q_s16(ref_patch_dx + y*patch_size);\n      vb1 = vmlal_s16(vb1, vget_low_s16(grad), vget_low_s16(res));\n      vb1 = vmlal_s16(vb1, vget_high_s16(grad), vget_high_s16(res));\n\n      grad = vld1q_s16(ref_patch_dy + y*patch_size);\n      vb2 = vmlal_s16(vb2, vget_low_s16(grad), vget_low_s16(res));\n      vb2 = vmlal_s16(vb2, vget_high_s16(grad), vget_high_s16(res));\n    }\n\n    // finally, sum results of vb1, vb2 and vres_sum\n    int32x2_t tmp;\n    tmp = vpadd_s32(vget_low_s32(vb1), vget_high_s32(vb1));\n    Jres[0] = -vget_lane_s32(tmp, 0) - vget_lane_s32(tmp, 1);\n\n    tmp = vpadd_s32(vget_low_s32(vb2), vget_high_s32(vb2));\n    Jres[1] = -vget_lane_s32(tmp, 0) - vget_lane_s32(tmp, 1);\n\n    int32x4_t vres_sum1 = vpaddlq_s16(vres_sum);\n    tmp = vpadd_s32(vget_low_s32(vres_sum1), vget_high_s32(vres_sum1));\n    Jres[2] = -vget_lane_s32(tmp, 0) - vget_lane_s32(tmp, 1);\n#endif\n\n    update = Hinv * Jres * 2; // * 2 to compensate because above, we did not compute the derivative correctly\n    u += update[0];\n    v += update[1];\n    mean_diff += update[2];\n\n#if SUBPIX_VERBOSE\n    cout << \"Iter \" << iter << \":\"\n         << \"\\t u=\" << u << \", v=\" << v\n         << \"\\t update = \" << update[0] << \", \" << update[1] << endl;\n#endif\n\n    if(update[0]*update[0]+update[1]*update[1] < min_update_squared)\n    {\n#if SUBPIX_VERBOSE\n      cout << \"converged.\" << endl;\n#endif\n      converged=true;\n      break;\n    }\n\n    (void)subpix_x;\n    (void)subpix_y;\n    (void)b1;\n    (void)b2;\n    (void)cur_step;\n  }\n\n  cur_px_estimate << u, v;\n\n  (void)W_BITS;\n  (void)ref_patch;\n  return converged;\n}\n\n//------------------------------------------------------------------------------\nvoid alignPyr2DVec(\n    const std::vector<cv::Mat>& img_pyr_ref,\n    const std::vector<cv::Mat>& img_pyr_cur,\n    const int max_level,\n    const int min_level,\n    const std::vector<int>& patch_sizes,\n    const int n_iter,\n    const float min_update_squared,\n    const std::vector<cv::Point2f>& px_ref,\n    std::vector<cv::Point2f>& px_cur,\n    std::vector<uint8_t>& status)\n{\n  for(size_t i=0; i<px_ref.size(); ++i)\n  {\n    Eigen::Vector2i px_ref_level_0(px_ref[i].x, px_ref[i].y);\n    Keypoint px_cur_level_0(px_cur[i].x, px_cur[i].y);\n    bool res = alignPyr2D(\n          img_pyr_ref, img_pyr_cur, max_level, min_level, patch_sizes,\n          n_iter, min_update_squared, px_ref_level_0, px_cur_level_0);\n    status[i] = res ? 1 : 0;\n    px_cur[i] = cv::Point2f(px_cur_level_0[0], px_cur_level_0[1]);\n\n    // TODO: add subpixel of rounding px_ref_level_0.\n    //       typically not a problem because ref comes directly from feature\n    //       extraction and is int.\n  }\n}\n\n//------------------------------------------------------------------------------\nbool alignPyr2D(\n    const std::vector<cv::Mat>& img_pyr_ref,\n    const std::vector<cv::Mat>& img_pyr_cur,\n    const int max_level,\n    const int min_level,\n    const std::vector<int>& patch_sizes,\n    const int n_iter,\n    const float min_update_squared,\n    const Eigen::Vector2i& px_ref_level_0,\n    Keypoint& px_cur_level_0)\n{\n#define SVO_PYRAMIDAL_VERBOSE 0\n#define SVO_DESCALE(x,n)     (((x) + (1 << ((n)-1))) >> (n))\n\n#if SVO_PYRAMIDAL_VERBOSE\n  std::cout << \"--------\" << std::endl;\n#endif\n\n  // compute derivative of template and prepare inverse compositional\n  const int max_patch_area = patch_sizes[0]*patch_sizes[0];\n  uint8_t __attribute__((__aligned__(16))) ref_patch[max_patch_area];\n  int16_t __attribute__((__aligned__(16))) ref_patch_dx[max_patch_area];\n  int16_t __attribute__((__aligned__(16))) ref_patch_dy[max_patch_area];\n  bool converged = false;\n\n  for(int level = max_level; level >= min_level; --level)\n  {\n    const int patch_size = patch_sizes[level];\n    CHECK(patch_size % 8 == 0)\n        << \": alignPyr2D is only made for patch sizes multiples of 8!\";\n    const int halfpatch_size = patch_size/2;\n    const int scale = (1<<level);\n    const cv::Mat& img_ref = img_pyr_ref[level];\n    const cv::Mat& img_cur = img_pyr_cur[level];\n    const int width = img_ref.cols;\n    const int height = img_ref.rows;\n    const int step = img_ref.step; // should be number of bytes of each row\n    const Eigen::Vector2f px_ref_flt = px_ref_level_0.cast<float>() / scale - Eigen::Vector2f(halfpatch_size, halfpatch_size);\n    const Eigen::Vector2i px_ref = px_ref_flt.cast<int>();\n    const Eigen::Vector2f px_ref_offset = px_ref_flt - px_ref.cast<float>();\n\n    if(px_ref[0] < 1 || px_ref[1] < 1\n       || px_ref[0] >= width-patch_size-1 || px_ref[1] >= height-patch_size-1)\n    {\n#if SVO_PYRAMIDAL_VERBOSE\n      std::cout << \"reference pixel is too close to the border\" << std::endl;\n#endif\n      continue;\n    }\n\n    // compute gradient and hessian\n    uint8_t* it_patch = ref_patch;\n    int16_t* it_dx = ref_patch_dx;\n    int16_t* it_dy = ref_patch_dy;\n    Eigen::Matrix2f H; H.setZero();\n    for(int y=0; y<patch_size; ++y)\n    {\n      uint8_t* it = img_ref.data + (px_ref[1]+y)*step + (px_ref[0]);\n      for(int x=0; x<patch_size; ++x, ++it, ++it_patch, ++it_dx, ++it_dy)\n      {\n        *it_patch = *it;\n        *it_dx = static_cast<int16_t>(it[1]) - it[-1];\n        *it_dy = static_cast<int16_t>(it[step]) - it[-step]; // divide by 2 missing\n        Eigen::Vector2f J(*it_dx, *it_dy);\n        H += J*J.transpose();\n      }\n    }\n    Eigen::Matrix2f Hinv = H.inverse();\n\n    // Compute pixel location in new image:\n    float u = px_cur_level_0[0] / scale - halfpatch_size - px_ref_offset[0];\n    float v = px_cur_level_0[1] / scale - halfpatch_size - px_ref_offset[1];\n    Eigen::Vector2f update; update.setZero();\n    bool go_to_next_level = false;\n    const int SHIFT_BITS = 7;\n    converged = false; // reset at every level\n    for(int iter = 0; iter<n_iter; ++iter)\n    {\n      if(std::isnan(u) || std::isnan(v)) // TODO very rarely this can happen, maybe H is singular? should not be at corner.. check\n      {\n#if SVO_PYRAMIDAL_VERBOSE\n        std::cout << \"update is NaN\" << std::endl;\n#endif\n        return false;\n      }\n\n      go_to_next_level = false;\n      const int u_r = std::floor(u);\n      const int v_r = std::floor(v);\n      if(u_r < 0 || v_r < 0 || u_r >= width-patch_size || v_r >= height-patch_size)\n      {\n#if SVO_PYRAMIDAL_VERBOSE\n        std::cout << \"current patch is too close to the border \"\n                  << \"u,v: \" << u_r << \", \" << v_r\n                  << \"\\t w,h:\" << width << \", \" << height\n                  << \"\\t patch_size = \" << patch_size << std::endl;\n#endif\n        go_to_next_level = true;\n        break;\n      }\n\n      // compute interpolation weights\n      const float subpix_x = u-u_r;\n      const float subpix_y = v-v_r;\n      const uint16_t wTL = static_cast<uint16_t>((1.0f-subpix_x)*(1.0f-subpix_y)*(1<<SHIFT_BITS));\n      const uint16_t wTR = static_cast<uint16_t>(subpix_x*(1.0f-subpix_y)*(1<<SHIFT_BITS));\n      const uint16_t wBL = static_cast<uint16_t>((1.0f-subpix_x)*subpix_y*(1<<SHIFT_BITS));\n      const uint16_t wBR = (1 << SHIFT_BITS) - wTL - wTR - wBL;\n\n      // loop through search_patch, interpolate\n      uint8_t* it_ref = ref_patch;\n      Eigen::Vector2f Jres; Jres.setZero();\n\n#ifdef __ARM_NEON__\n      // initialize result to zero\n      int32x4_t vb1 = vdupq_n_s32(0);\n      int32x4_t vb2 = vdupq_n_s32(0);\n      for(int y=0; y<patch_size; ++y)\n      {\n        uint8_t* it = img_cur.data + (v_r+y)*step + (u_r);\n        for(int x=0; x<patch_size; x+=8, it+=8, it_ref+=8)\n        {\n          // load and convert from uint8 to uint16\n          uint16x8_t v00 = vmovl_u8( vld1_u8( it ) );\n          uint16x8_t v01 = vmovl_u8( vld1_u8( it + 1 ) );\n          uint16x8_t v10 = vmovl_u8( vld1_u8( it + step ) );\n          uint16x8_t v11 = vmovl_u8( vld1_u8( it + step + 1 ) );\n\n          // vector multiply by scalar\n          v00 = vmulq_n_u16( v00, wTL );\n          v01 = vmulq_n_u16( v01, wTR );\n          v10 = vmulq_n_u16( v10, wBL );\n          v11 = vmulq_n_u16( v11, wBR );\n\n          // add all results together\n          v00 = vaddq_u16( v00, vaddq_u16( v01, vaddq_u16( v10, v11 ) ) );\n\n          // descale: shift right by constant\n          v00 = vrshrq_n_u16(v00, SHIFT_BITS);\n\n          // compute difference between reference and interpolated patch,\n          // use reinterpet-cast to make signed [-255,255]\n          int16x8_t res = vsubq_s16(vreinterpretq_s16_u16(v00),\n                                    vreinterpretq_s16_u16(vmovl_u8(vld1_u8( it_ref ))));\n\n          // Vector multiply accumulate long: vmla -> Vr[i] := Va[i] + Vb[i] * Vc[i]\n          // int32x4_t  vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c);    // VMLAL.S16 q0,d0,d0\n          int16x8_t grad = vld1q_s16(ref_patch_dx + y*patch_size + x);\n          vb1 = vmlal_s16(vb1, vget_low_s16(grad), vget_low_s16(res));\n          vb1 = vmlal_s16(vb1, vget_high_s16(grad), vget_high_s16(res));\n\n          grad = vld1q_s16(ref_patch_dy + y*patch_size + x);\n          vb2 = vmlal_s16(vb2, vget_low_s16(grad), vget_low_s16(res));\n          vb2 = vmlal_s16(vb2, vget_high_s16(grad), vget_high_s16(res));\n        }\n      }\n\n      // finally, sum results of vb1, vb2\n      int32x2_t tmp;\n      tmp = vpadd_s32(vget_low_s32(vb1), vget_high_s32(vb1));\n      Jres[0] = -vget_lane_s32(tmp, 0) - vget_lane_s32(tmp, 1);\n\n      tmp = vpadd_s32(vget_low_s32(vb2), vget_high_s32(vb2));\n      Jres[1] = -vget_lane_s32(tmp, 0) - vget_lane_s32(tmp, 1);\n#else\n      int16_t* it_ref_dx = ref_patch_dx;\n      int16_t* it_ref_dy = ref_patch_dy;\n\n      for(int y=0; y<patch_size; ++y)\n      {\n        uint8_t* it = img_cur.data + (v_r+y)*step + (u_r);\n        for(int x=0; x<patch_size; ++x, ++it, ++it_ref, ++it_ref_dx, ++it_ref_dy)\n        {\n          uint16_t cur = SVO_DESCALE(wTL*it[0] + wTR*it[1] + wBL*it[step] + wBR*it[step+1], SHIFT_BITS);\n          //float cur = wTL*it[0] + wTR*it[1] + wBL*it[step] + wBR*it[step+1];\n          float res = static_cast<float>(cur) - *it_ref;\n          Jres[0] -= res*(*it_ref_dx);\n          Jres[1] -= res*(*it_ref_dy);\n        }\n      }\n#endif\n\n      update = Hinv * Jres * 2.0; // * 2 to compensate because above, we did not compute the derivative correctly\n      u += update[0];\n      v += update[1];\n\n#if SVO_PYRAMIDAL_VERBOSE\n      std::cout << \"Level: \" << level\n                << \"\\t Iter: \" << iter << \":\"\n                << \"\\t u=\" << u << \", v=\" << v\n                << \"\\t update = \" << update[0] << \", \" << update[1] << std::endl;\n#endif\n\n      if(update[0]*update[0]+update[1]*update[1] < min_update_squared)\n      {\n#if SVO_PYRAMIDAL_VERBOSE\n        std::cout << \"level = \" << level << \": converged.\" << std::endl;\n#endif\n        converged=true;\n        break;\n      }\n    } // end iterations\n\n    px_cur_level_0 = Keypoint((u+halfpatch_size+px_ref_offset[0])*scale,\n        (v+halfpatch_size+px_ref_offset[1])*scale);\n\n    if(!converged && !go_to_next_level)\n      return false; // no need to go to next level when we didn't converge at this one.\n\n  } // end pyramid\n\n  return converged;\n}\n\n} // namespace feature_alignment\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/src/feature_detection.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/feature_detection.h>\n\n#include <Eigen/Dense>\n#include <fast/fast.h>\n#include <vikit/vision.h>\n#include <opencv2/imgproc/imgproc.hpp>\n#include <opencv2/highgui/highgui.hpp>\n#include <aslam/common/memory.h>\n#include <svo/common/frame.h>\n#include <svo/common/camera.h>\n#include <svo/common/logging.h>\n#include <svo/direct/feature_detection_utils.h>\n\nnamespace svo {\n\nnamespace fd_utils = feature_detection_utils;\n\n//------------------------------------------------------------------------------\nAbstractDetector::AbstractDetector(\n    const DetectorOptions& options,\n    const CameraPtr& cam)\n  : options_(options)\n  , grid_(options_.cell_size,\n          std::ceil(static_cast<double>(cam->imageWidth())/options_.cell_size),\n          std::ceil(static_cast<double>(cam->imageHeight())/options_.cell_size))\n{}\n\n//------------------------------------------------------------------------------\nvoid AbstractDetector::detect(const FramePtr& frame)\n{\n  size_t max_n_features = grid_.size();\n  detect(frame->img_pyr_, frame->getMask(), max_n_features, frame->px_vec_,\n         frame->score_vec_, frame->level_vec_, frame->grad_vec_, frame->type_vec_);\n  frame->num_features_ = frame->px_vec_.cols();\n  frame->landmark_vec_.resize(frame->num_features_, nullptr);\n  frame->seed_ref_vec_.resize(frame->num_features_);\n  frame->invmu_sigma2_a_b_vec_.resize(Eigen::NoChange, frame->num_features_);\n  frame_utils::computeNormalizedBearingVectors(frame->px_vec_, *frame->cam(), &frame->f_vec_);\n}\n\n//------------------------------------------------------------------------------\nvoid FastDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  Corners corners(\n        grid_.n_cols*grid_.n_rows,\n        Corner(0, 0, options_.threshold_primary, 0, 0.0f));\n  fd_utils::fastDetector(\n        img_pyr, options_.threshold_primary, options_.border,\n        options_.min_level, options_.max_level, corners, grid_);\n  fd_utils::fillFeatures(\n        corners, FeatureType::kCorner, mask, options_.threshold_primary,\n        max_n_features, px_vec, score_vec, level_vec, grad_vec, types_vec, grid_);\n\n  resetGrid();\n}\n\n//------------------------------------------------------------------------------\nvoid GradientDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  // Compute pyramid of derivative max magnitude\n  ImgPyr mag_pyr(img_pyr.size());\n  for(size_t i=0; i<img_pyr.size(); ++i)\n  {\n    fd_utils::computeDerivMaxMagnitude(img_pyr[i], mag_pyr[i]);\n  }\n\n  cv::Mat mag_ss;\n  mag_pyr[0].convertTo(mag_ss, CV_32F, 1.0f/500.0f);\n  //const int stride=mag_ss.cols;\n#if 0\n  const size_t max_level=img_pyr.size();\n\n  if(false)\n  {\n    // Multiply across scale space\n    float* mag_ss_ptr = (float*) mag_ss.data;\n    for(int y=0; y<mag_ss.rows; ++y)\n    {\n      for(int x=0; x<mag_ss.cols; ++x, ++mag_ss_ptr)\n      {\n        for(size_t L=1; L<max_level; ++L)\n        {\n          const float scale = 1.0f / (1<<L);\n          const int u = static_cast<int>(scale*x+0.5f);\n          const int v = static_cast<int>(scale*y+0.5f);\n          *mag_ss_ptr += 1.0/500.0f*mag_pyr[L].at<uint8_t>(v,u); // += ?\n        }\n      }\n    }\n  }\n#endif\n\n  // Nonmax suppression\n  Corners corners;\n  fd_utils::nonmax(mag_ss, options_.threshold_primary, &corners);\n  fd_utils::setCornerAngles(img_pyr, &corners);\n\n  // Create feature for every corner that has high enough corner score\n  fd_utils::fillFeatures(\n        corners, FeatureType::kEdgelet, mask, options_.threshold_secondary,\n        max_n_features, px_vec, score_vec, level_vec, grad_vec, types_vec, grid_);\n}\n\nvoid GradientDetectorGrid::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  Corners corners(\n        grid_.n_cols * grid_.n_rows,\n        Corner(0, 0, options_.threshold_secondary, 0, 0.0f));\n  fd_utils::edgeletDetector_V2(\n        img_pyr, options_.threshold_secondary, options_.border,\n        options_.min_level, options_.max_level, corners, grid_);\n  fd_utils::fillFeatures(\n        corners, FeatureType::kEdgelet, mask, options_.threshold_secondary,\n        max_n_features, px_vec, score_vec, level_vec, grad_vec, types_vec, grid_);\n\n  resetGrid();\n}\n\n//------------------------------------------------------------------------------\nvoid FastGradDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  {\n    // Detect fast corners.\n    Corners corners(\n          grid_.n_cols*grid_.n_rows,\n          Corner(0, 0, options_.threshold_primary, 0, 0.0f));\n    fd_utils::fastDetector(\n          img_pyr, options_.threshold_primary, options_.border,\n          options_.min_level, options_.max_level, corners, grid_);\n    fd_utils::fillFeatures(\n          corners, FeatureType::kCorner, mask, options_.threshold_primary,\n          max_n_features, px_vec, score_vec, level_vec, grad_vec, types_vec, grid_);\n  }\n\n  int max_features = static_cast<int>(max_n_features) - px_vec.cols();\n  if(max_features > 0)\n  {\n    // Detect edgelets.\n    Corners corners(\n          grid_.n_cols * grid_.n_rows,\n          Corner(0, 0, options_.threshold_secondary, 0, 0.0f));\n    fd_utils::edgeletDetector_V2(\n          img_pyr, options_.threshold_secondary, options_.border,\n          options_.min_level, options_.max_level, corners, grid_);\n    fd_utils::fillFeatures(\n          corners, FeatureType::kEdgelet, mask, options_.threshold_secondary,\n          max_features, px_vec, score_vec, level_vec, grad_vec, types_vec, grid_);\n  }\n\n  resetGrid();\n}\n\n//------------------------------------------------------------------------------\n//! @todo (MWE) kept the old version around as there might be changes still and\n//! we want to have the same structure and workflow within the detectors.\n#if 0\nvoid AllPixelsDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  Corners corners;\n  for(int y=1; y<=img_pyr[0].rows-1; ++y)\n  {\n    for(int x=1; x<=img_pyr[0].cols-1; ++x)\n    {\n      corners.push_back(Corner(x, y, std::numeric_limits<double>::max(), 0, 0.0f));\n    }\n  }\n  fd_utils::setCornerAngles(img_pyr, &corners);\n\n  fd_utils::fillFeatures(\n        corners, FeatureType::kEdgelet, mask, 0.0, max_n_features, px_vec, score_vec,\n        level_vec, grad_vec, types_vec, grid_);\n\n  resetGrid();\n}\n#else // new\nvoid AllPixelsDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t /*max_n_features*/,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  const int width = img_pyr.at(options_.sampling_level).cols;\n  const int height = img_pyr.at(options_.sampling_level).rows;\n  const int pyr_init_scale = 1 << options_.sampling_level;\n  const int border = options_.border;\n  const size_t num_features = (width-2*border) * (height-2*border);\n\n  px_vec.resize(Eigen::NoChange, num_features);\n  score_vec.setConstant(num_features, 1.0);\n  level_vec.setConstant(num_features, options_.level);\n  grad_vec.resize(Eigen::NoChange, num_features);\n  types_vec.assign(num_features, svo::FeatureType::kCorner);\n  size_t feature_index = 0;\n  for(int y=border; y<height-border; ++y)\n  {\n    for(int x=border; x<width-border; ++x)\n    {\n      px_vec.col(feature_index++) = svo::Keypoint(x*pyr_init_scale, y*pyr_init_scale);\n    }\n  }\n}\n#endif\n\nvoid CannyDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  // Compute pyramid of derivative max magnitude\n  cv::Mat canny_edges;\n  fd_utils::detectCannyEdges(img_pyr[options_.sampling_level], canny_edges);\n\n  const int width = img_pyr.at(options_.sampling_level).cols;\n  const int height = img_pyr.at(options_.sampling_level).rows;\n  const int border = 1;\n  const int pyr_init_scale = 1 << options_.sampling_level;\n  const int max_num_features = cv::countNonZero(canny_edges == 255);\n\n  px_vec.resize(Eigen::NoChange, max_num_features);\n  size_t feature_index = 0;\n  for(int y=border; y<height-border; ++y)\n  {\n    for(int x=border; x<width-border; ++x)\n    {\n      if (canny_edges.at<uchar>(y,x))\n      {\n        px_vec.col(feature_index++) = svo::Keypoint(x*pyr_init_scale, y*pyr_init_scale);\n      }\n    }\n  }\n\n  size_t num_features = feature_index - 1;\n  px_vec.conservativeResize(Eigen::NoChange, num_features);\n  score_vec.setConstant(num_features, 1.0);\n  level_vec.setConstant(num_features, options_.level);\n  grad_vec.resize(Eigen::NoChange, num_features);\n  types_vec.assign(num_features, svo::FeatureType::kCorner);\n}\n\nvoid SobelDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  // Compute pyramid of derivative max magnitude\n  cv::Mat sobel_edges;\n  fd_utils::detectSobelEdges(img_pyr[options_.sampling_level], sobel_edges);\n\n  const int width = img_pyr.at(options_.sampling_level).cols;\n  const int height = img_pyr.at(options_.sampling_level).rows;\n  const int border = 1;\n  const int pyr_init_scale = 1 << options_.sampling_level;\n  const int max_num_features = cv::countNonZero(sobel_edges==255);\n\n  px_vec.resize(Eigen::NoChange, max_num_features);\n  size_t feature_index = 0;\n  for(int y=border; y<height-border; ++y)\n  {\n    for(int x=border; x<width-border; ++x)\n    {\n      if (sobel_edges.at<uchar>(y,x))\n      {\n        px_vec.col(feature_index++) = svo::Keypoint(x*pyr_init_scale, y*pyr_init_scale);\n      }\n    }\n  }\n\n  size_t num_features = feature_index - 1;\n  px_vec.conservativeResize(Eigen::NoChange, num_features);\n  score_vec.setConstant(num_features, 1.0);\n  level_vec.setConstant(num_features, options_.level);\n  grad_vec.resize(Eigen::NoChange, num_features);\n  types_vec.assign(num_features, svo::FeatureType::kCorner);\n}\n\n//------------------------------------------------------------------------------\nvoid GradientHuangMumfordDetector::detect(\n    const ImgPyr& img_pyr,\n    const cv::Mat& mask,\n    const size_t max_n_features,\n    Keypoints& px_vec,\n    Scores& score_vec,\n    Levels& level_vec,\n    Gradients& grad_vec,\n    FeatureTypes& types_vec)\n{\n  // Compute pyramid of derivative max magnitude\n  ImgPyr mag_pyr_32f(img_pyr.size());\n  for(size_t i=0; i<img_pyr.size(); ++i)\n  {\n    fd_utils::computeDerivHuangMumford(img_pyr[i], mag_pyr_32f[i]);\n  }\n\n  const int width = img_pyr.at(options_.sampling_level).cols;\n  const int height = img_pyr.at(options_.sampling_level).rows;\n  const int border = 1;\n  const int pyr_init_scale = 1 << options_.sampling_level;\n\n  cv::Mat mag_level_32f = mag_pyr_32f[options_.sampling_level];\n  cv::Mat mag_level_thresholded;\n  cv::threshold(mag_level_32f, mag_level_thresholded, options_.threshold_primary,\n                1.0, cv::THRESH_BINARY_INV);\n  const int max_num_features = cv::countNonZero(mag_level_thresholded==1.0);\n\n#if 0\n  cv::imshow(\"mag_level_32f\", mag_level_32f);\n  cv::imshow(\"mag_level_thresholded\", mag_level_thresholded);\n  cv::waitKey(0);\n#endif\n  px_vec.resize(Eigen::NoChange, max_num_features);\n\n  size_t feature_index = 0;\n  for(int y=border; y<height-border; ++y)\n  {\n    for(int x=border; x<width-border; ++x)\n    {\n      if (mag_level_thresholded.at<uchar>(y,x))\n      {\n        px_vec.col(feature_index++) = svo::Keypoint(x*pyr_init_scale, y*pyr_init_scale);\n      }\n    }\n  }\n\n  size_t num_features = feature_index - 1;\n\n  // Resize px_vec to the actual number of features while keeping the data.\n  px_vec.conservativeResize(Eigen::NoChange, num_features);\n  score_vec.setConstant(num_features, 1.0);\n  level_vec.setConstant(num_features, options_.level);\n  grad_vec.resize(Eigen::NoChange, num_features);\n  types_vec.assign(num_features, svo::FeatureType::kCorner);\n\n//  // Nonmax suppression\n//  Corners corners;\n//  fd_utils::nonmax(mag_ss, options_.threshold_primary, &corners);\n//  fd_utils::setCornerAngles(img_pyr, &corners);\n\n//  // Create feature for every corner that has high enough corner score\n//  fd_utils::fillFeatures(\n//        corners, FeatureType::kEdgelet, mask, options_.threshold_secondary,\n//        px_vec, level_vec, grad_vec, types_vec, grid_);\n}\n\n} // namespace svo\n\n"
  },
  {
    "path": "svo_direct/src/feature_detection_utils.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/feature_detection_utils.h>\n\n#include <algorithm>\n#include <numeric>\n\n#include <fast/fast.h>\n#include <vikit/vision.h>\n#include <opencv2/imgproc/imgproc.hpp>\n#include <opencv2/highgui/highgui.hpp>\n#include <svo/common/frame.h>\n#include <svo/common/camera.h>\n#include <svo/common/logging.h>\n#include <svo/direct/feature_detection_types.h>\n#include <svo/direct/feature_detection.h>\n\nnamespace svo {\nnamespace feature_detection_utils {\n\n//------------------------------------------------------------------------------\nAbstractDetector::Ptr makeDetector(\n    const DetectorOptions& options,\n    const CameraPtr& cam)\n{\n  AbstractDetector::Ptr detector;\n  switch(options.detector_type)\n  {\n  case DetectorType::kFast:\n    detector.reset(new FastDetector(options, cam));\n    break;\n  case DetectorType::kFastGrad:\n    detector.reset(new FastGradDetector(options, cam));\n    break;\n  case DetectorType::kGrad:\n    detector.reset(new GradientDetector(options, cam));\n    break;\n  case DetectorType::kGridGrad:\n    detector.reset(new GradientDetectorGrid(options, cam));\n    break;\n  case DetectorType::kAll:\n    detector.reset(new AllPixelsDetector(options, cam));\n    break;\n  case DetectorType::kGradHuangMumford:\n    detector.reset(new GradientHuangMumfordDetector(options, cam));\n    break;\n  case DetectorType::kCanny:\n    detector.reset(new CannyDetector(options, cam));\n    break;\n  case DetectorType::kSobel:\n    detector.reset(new SobelDetector(options, cam));\n    break;\n  default:\n    SVO_ERROR_STREAM(\"Detector unknown!\");\n  }\n  return detector;\n}\n\n//------------------------------------------------------------------------------\nvoid fillFeatures(const Corners& corners,\n    const FeatureType& type,\n    const cv::Mat& mask,\n    const double& threshold,\n    const size_t max_n_features,\n    Keypoints& keypoints,\n    Scores& scores,\n    Levels& levels,\n    Gradients& gradients,\n    FeatureTypes& types,\n    OccupandyGrid2D& grid)\n{\n  CHECK_EQ(keypoints.cols(), levels.size());\n  CHECK_EQ(keypoints.cols(), gradients.cols());\n  CHECK_EQ(static_cast<size_t>(keypoints.cols()), types.size());\n\n  // copy new features in temporary vectors\n  aslam::Aligned<std::vector, Keypoint>::type keypoint_vec;\n  aslam::Aligned<std::vector, GradientVector>::type gradient_vec;\n  std::vector<Score> score_vec;\n  std::vector<Level> level_vec;\n  keypoint_vec.reserve(corners.size());\n  gradient_vec.reserve(corners.size());\n  level_vec.reserve(corners.size());\n  score_vec.reserve(corners.size());\n  for(const Corner& c : corners)\n  {\n    if(c.score > threshold)\n    {\n      // we don't need to check for grid occupancy since we already do that during\n      // feature extraction.\n      if(!mask.empty() &&\n         mask.at<uint8_t>(static_cast<int>(c.y), static_cast<int>(c.x)) == 0)\n      {\n        continue;\n      }\n      keypoint_vec.emplace_back(Keypoint(c.x, c.y));\n      level_vec.emplace_back(c.level);\n      score_vec.emplace_back(c.score);\n      gradient_vec.emplace_back(GradientVector(std::cos(c.angle), std::sin(c.angle)));\n      grid.occupancy_[grid.getCellIndex(c.x, c.y)] = true;\n    }\n  }\n\n  // Sort according to scores (bigger score should be better)\n  std::vector<size_t> idx(score_vec.size());\n  std::iota(idx.begin(), idx.end(), 0u);\n  std::sort(idx.begin(), idx.end(), [&score_vec](size_t i1, size_t i2)\n            { return score_vec[i1] > score_vec[i2]; });\n\n  // copy temporary in eigen block\n  const size_t n_old = keypoints.cols();\n  const size_t n_new = std::min(max_n_features, keypoint_vec.size());\n  const size_t n_tot = n_old + n_new;\n\n  keypoints.conservativeResize(Eigen::NoChange, n_tot);\n  gradients.conservativeResize(Eigen::NoChange, n_tot);\n  scores.conservativeResize(n_tot);\n  levels.conservativeResize(n_tot);\n  types.resize(n_tot, type);\n\n  for(size_t i = 0; i < n_new; ++i)\n  {\n    const size_t j = idx[i];\n    keypoints.col(n_old+i) = keypoint_vec[j];\n    gradients.col(n_old+i) = gradient_vec[j];\n    scores(n_old+i) = score_vec[j];\n    levels(n_old+i) = level_vec[j];   \n  }\n}\n\n//------------------------------------------------------------------------------\nvoid fastDetector(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const size_t min_level,\n    const size_t max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid)\n{\n  CHECK_EQ(corners.size(), grid.occupancy_.size());\n  CHECK_LE(max_level, img_pyr.size()-1);\n\n  for(size_t level=min_level; level<=max_level; ++level)\n  {\n    const int scale = (1<<level);\n    std::vector<fast::fast_xy> fast_corners;\n#if __SSE2__\n    fast::fast_corner_detect_10_sse2(\n          (fast::fast_byte*) img_pyr[level].data, img_pyr[level].cols,\n          img_pyr[level].rows, img_pyr[level].step, threshold, fast_corners);\n#elif HAVE_FAST_NEON\n    fast::fast_corner_detect_9_neon(\n          (fast::fast_byte*) img_pyr[level].data, img_pyr[level].cols,\n          img_pyr[level].rows, img_pyr[level].step, threshold, fast_corners);\n#else\n    fast::fast_corner_detect_10(\n          (fast::fast_byte*) img_pyr[L].data, img_pyr[L].cols,\n          img_pyr[L].rows, img_pyr[L].step, threshold, fast_corners);\n#endif\n    std::vector<int> scores, nm_corners;\n    fast::fast_corner_score_10((fast::fast_byte*) img_pyr[level].data, img_pyr[level].step,\n                               fast_corners, threshold, scores);\n    fast::fast_nonmax_3x3(fast_corners, scores, nm_corners);\n\n    const int maxw = img_pyr[level].cols-border;\n    const int maxh = img_pyr[level].rows-border;\n    for(const int& i : nm_corners)\n    {\n      fast::fast_xy& xy = fast_corners.at(i);\n      if(xy.x < border || xy.y < border || xy.x >= maxw || xy.y >= maxh)\n        continue;\n      const size_t k = grid.getCellIndex(xy.x, xy.y, scale);\n      if(grid.occupancy_.at(k))\n        continue;\n      const float score = scores.at(i); //vk::shiTomasiScore(img_pyr[L], xy.x, xy.y);\n      if(score > corners.at(k).score)\n        corners.at(k) = Corner(xy.x*scale, xy.y*scale, score, level, 0.0f);\n    }\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid edgeletDetector_V1(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const int min_level,\n    const int max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid)\n{\n  CHECK_EQ(corners.size(), grid.occupancy_.size());\n\n  for(int level=min_level+1; level<=max_level; ++level) // note, we start one level higher, so we already have some smoothing\n  {\n    const int scale = (1<<level);\n\n    // compute image first derivative\n    cv::Mat dx, dy;\n    cv::Scharr(img_pyr[level], dx, CV_16S, 1, 0, 1, 0, cv::BORDER_DEFAULT);\n    cv::Scharr(img_pyr[level], dy, CV_16S, 0, 1, 1, 0, cv::BORDER_DEFAULT);\n\n    // compute angle and magnitude in angle direction\n    const int max_row = dx.rows-border;\n    const int max_col = dx.cols-border;\n    for(int y=border; y<max_row; ++y)\n    {\n      int16_t* p_dx = dx.ptr<int16_t>(y);\n      int16_t* p_dy = dy.ptr<int16_t>(y);\n      for(int x=border; x<max_col; ++x)\n      {\n        const int k = grid.getCellIndex(x, y, scale);\n        if(grid.occupancy_.at(k))\n          continue;\n        Corner& c = corners.at(k);\n        const double score = std::sqrt(p_dx[x]*p_dx[x]+p_dy[x]*p_dy[x]);\n        if(score > c.score)\n        {\n          c.x=x*scale;\n          c.y=y*scale;\n          c.level=level-1;\n          c.score=score;\n          c.angle=std::atan2(p_dy[x],p_dx[x]);\n        }\n      }\n    }\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid edgeletDetector_V2(\n    const ImgPyr& img_pyr,\n    const int threshold,\n    const int border,\n    const int min_level,\n    const int max_level,\n    Corners& corners,\n    OccupandyGrid2D& grid)\n{\n  CHECK_EQ(corners.size(), grid.occupancy_.size());\n\n  constexpr int level = 1;\n  constexpr int scale = (1<<level);\n  cv::Mat score(img_pyr[level].size(), CV_32FC1, cv::Scalar(0.0f));\n  cv::Mat angle(img_pyr[level].size(), CV_8UC1, cv::Scalar(255));\n\n  // compute image first derivative\n  cv::Mat img, dx, dy;\n  cv::GaussianBlur(img_pyr[level], img, cv::Size(3,3), 0);\n  cv::Scharr(img, dx, CV_16S, 1, 0, 1, 0, cv::BORDER_DEFAULT);\n  cv::Scharr(img, dy, CV_16S, 0, 1, 1, 0, cv::BORDER_DEFAULT);\n\n  // compute angle and magnitude in angle direction\n  const int max_row = dx.rows-border;\n  const int max_col = dx.cols-border;\n  for(int y = border; y < max_row; ++y)\n  {\n    int16_t* p_dx = dx.ptr<int16_t>(y);\n    int16_t* p_dy = dy.ptr<int16_t>(y);\n    for(int x = border; x < max_col; ++x)\n    {\n      angle.at<uint8_t>(y,x) = ((std::atan2(p_dy[x], p_dx[x]) + M_PI) / (2.0f * M_PI)) * 10;\n      const float mag = std::sqrt(p_dx[x]*p_dx[x]+p_dy[x]*p_dy[x]);\n      score.at<float>(y,x) = (mag > threshold) ? mag : 0.0f ;\n    }\n  }\n\n  // 8-neighbor nonmax suppression\n  const int stride=score.step;\n  for(int y=border; y<score.rows-border; ++y)\n  {\n    const float* p = &score.at<float>(y,border);\n    for(int x=border; x<score.cols-border; ++x, ++p)\n    {\n      const int k = grid.getCellIndex(x, y, scale);\n      if(grid.occupancy_.at(k))\n        continue;\n\n      const float* const center=p;\n      if(*center<threshold) continue;\n      if(*(center+1)>=*center) continue;\n      if(*(center-1)>*center) continue;\n      const float* const p1=(center+stride);\n      const float* const p2=(center-stride);\n      if(*p1>=*center) continue;\n      if(*p2>*center) continue;\n      if(*(p1+1)>=*center) continue;\n      if(*(p1-1)>*center) continue;\n      if(*(p2+1)>=*center) continue;\n      if(*(p2-1)>*center) continue;\n\n      Corner& c = corners.at(k);\n      if(*p > c.score)\n      {\n        c.x=x*scale;\n        c.y=y*scale;\n        c.level=level-1;\n        c.score=*p;\n        c.angle = getAngleAtPixelUsingHistogram(img_pyr[level], Eigen::Vector2i(x,y), 4);\n      }\n    }\n  }\n}\n\n\n//------------------------------------------------------------------------------\nbool getCornerAngle(\n    const ImgPyr& img_pyr,\n    const Eigen::Ref<const Keypoint>& px_level_0,\n    const size_t level,\n    double* angle)\n{\n  CHECK_NOTNULL(angle);\n  constexpr int kHalfPatchSize = 2;\n  constexpr int kPatchSize = 2*kHalfPatchSize;\n  constexpr int kHalfPatchSizePlusBorder = kHalfPatchSize + 1;\n  const cv::Mat& img = img_pyr.at(level);\n  const Eigen::Vector2i px = (px_level_0 / (1 << level)).cast<int>();\n\n  if(px(0) < kHalfPatchSizePlusBorder\n     || px(1) < kHalfPatchSizePlusBorder\n     || px(0) >= img.cols - kHalfPatchSizePlusBorder\n     || px(1) >= img.rows - kHalfPatchSizePlusBorder)\n  {\n    VLOG(100) << \"Can't determine corner angle. Patch too close to border. \"\n              << \"px = \" << px.transpose() << \", level = \" << level;\n    return false;\n  }\n\n  const int stride = img.step;\n  float dx = 0.0f, dy = 0.0f;\n  for(int y = 0; y < kPatchSize; ++y)\n  {\n    uint8_t* it = img.data + (px(1) + y - kHalfPatchSize) * stride + (px(0) - kHalfPatchSize);\n    for(int x = 0; x < kPatchSize; ++x, ++it)\n    {\n      dx += it[1] - it[-1];\n      dy += it[stride] - it[-stride];\n    }\n  }\n  *angle = std::atan2(dy, dx);\n  return true;\n}\n\n//------------------------------------------------------------------------------\nbool getShiTomasiScore(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    double* score)\n{\n  CHECK_NOTNULL(score);\n  CHECK(img.type() == CV_8UC1);\n  constexpr int kHalfPatchSize = 4;\n  constexpr int kPatchSize = 2 * kHalfPatchSize;\n  constexpr int kPatchArea = kPatchSize * kPatchSize;\n\n  const int x_min = px(0) - kHalfPatchSize;\n  const int x_max = px(0) + kHalfPatchSize;\n  const int y_min = px(1) - kHalfPatchSize;\n  const int y_max = px(1) + kHalfPatchSize;\n\n  if(x_min < 1 || x_max >= img.cols-1 || y_min < 1 || y_max >= img.rows-1)\n    return false;\n\n  float dXX = 0.0;\n  float dYY = 0.0;\n  float dXY = 0.0;\n  const int stride = img.step.p[0];\n  for( int y=y_min; y<y_max; ++y )\n  {\n    const uint8_t* ptr_left   = img.data + stride*y + x_min - 1;\n    const uint8_t* ptr_right  = img.data + stride*y + x_min + 1;\n    const uint8_t* ptr_top    = img.data + stride*(y-1) + x_min;\n    const uint8_t* ptr_bottom = img.data + stride*(y+1) + x_min;\n    for(int x = 0; x < kPatchSize; ++x, ++ptr_left, ++ptr_right, ++ptr_top, ++ptr_bottom)\n    {\n      float dx = *ptr_right - *ptr_left;\n      float dy = *ptr_bottom - *ptr_top;\n      dXX += dx*dx;\n      dYY += dy*dy;\n      dXY += dx*dy;\n    }\n  }\n\n  // Find and return smaller eigenvalue:\n  dXX = dXX / (2.0f * kPatchArea);\n  dYY = dYY / (2.0f * kPatchArea);\n  dXY = dXY / (2.0f * kPatchArea);\n  *score = 0.5f * (dXX + dYY - std::sqrt( (dXX - dYY) * (dXX - dYY) + 4 * dXY * dXY  ));\n  return true;\n}\n\n//------------------------------------------------------------------------------\nvoid setCornerAngles(const ImgPyr& img_pyr, Corners* corners)\n{\n  // compute dominant gradient direction at corner\n  const int stride = img_pyr[0].step;\n  for(Corners::iterator it=corners->begin(); it!=corners->end(); ++it)\n  {\n    uint8_t* p = (uint8_t*) img_pyr[0].data + it->y*stride + it->x;\n    float dx = 0.5f*(p[1]-p[-1]);\n    float dy = 0.5f*(p[stride]-p[-stride]);\n    it->angle = std::atan2(dy, dx);\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid setCornerLevel(const ImgPyr& mag_pyr, Corners* corners)\n{\n  const size_t max_level = mag_pyr.size();\n  for(Corners::iterator it=corners->begin(); it!=corners->end(); ++it)\n  {\n    float max_mag = mag_pyr[0].at<float>(it->y, it->x);\n    float max_lev = 0;\n    for(size_t level=1; level<max_level; ++level)\n    {\n      const int scale = 1.0f / (1<<level);\n      const int u = static_cast<int>(scale*it->x+0.5f);\n      const int v = static_cast<int>(scale*it->y+0.5f);\n      float mag = mag_pyr[level].at<float>(v,u);\n      if(mag > max_mag)\n      {\n        max_mag = mag;\n        max_lev = level;\n      }\n    }\n    it->level = max_lev;\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid computeDerivMaxMagnitude(\n    const cv::Mat& img_8u,\n    cv::Mat& mag_8u)\n{\n  mag_8u = cv::Mat::zeros(img_8u.size(), CV_8UC1);\n  const int stride=img_8u.step;\n  for(int y=1; y<img_8u.rows-1; ++y)\n  {\n    uint8_t* mag_ptr = (uint8_t*) mag_8u.data + y*stride + 1;\n    uint8_t* img_ptr = (uint8_t*) img_8u.data + y*stride + 1;\n    for(int x=1; x<img_8u.cols-1; ++x, ++mag_ptr, ++img_ptr)\n      *mag_ptr = std::max(abs(img_ptr[1]-img_ptr[-1]), abs(img_ptr[stride]-img_ptr[-stride]));\n    //*mag_ptr = abs(img_ptr[1]-img_ptr[-1]) + abs(img_ptr[stride]-img_ptr[-stride]);\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid computeDerivHuangMumford(\n    const cv::Mat& img_8u,\n    cv::Mat& mag_32f,\n    float alpha,\n    float q)\n{\n  cv::Size sz = img_8u.size();\n  const int img_stride=img_8u.step;\n  mag_32f = cv::Mat::zeros(sz, CV_32FC1);\n  //  cv::Mat dx(sz, CV_32FC1);\n  //  cv::Mat dy(sz, CV_32FC1);\n\n  for (int y=0; y<sz.height; ++y)\n  {\n    // get rows\n    const uint8_t* rimg = img_8u.ptr<const uint8_t>(y);\n    //    float* rgx = dx.ptr<float>(y);\n    //    float* rgy = dy.ptr<float>(y);\n    float* rmag = mag_32f.ptr<float>(y);\n\n    for (int x=0; x<sz.width; ++x)\n    {\n      float img_c = (float)rimg[x];\n      float img_xp = (x==sz.width-1) ? (float)rimg[x] : (float)rimg[x+1];\n      float img_yp = (y==sz.height-1) ? (float)rimg[x] : (float)rimg[x+img_stride];\n      // uchar -> float\n      img_c /= 255.0f;\n      img_xp /= 255.0f;\n      img_yp /= 255.0f;\n      float dx = std::max(1e-3f,\n                          std::exp(-alpha * std::pow(std::abs(img_xp - img_c), q)));\n      float dy = std::max(1e-3f,\n                          std::exp(-alpha * std::pow(std::abs(img_yp - img_c), q)));\n      //      rgx[x] = dx;\n      //      rgy[x] = dy;\n      rmag[x] = std::sqrt(dx*dx + dy*dy);\n    }\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid nonmax(\n    const cv::Mat& img_32f,\n    const float thresh,\n    Corners* corners)\n{\n  // 8-neighbor nonmax suppression\n  const int stride=img_32f.step;\n  for(int y=2; y<img_32f.rows-2; ++y)\n  {\n    const float* p = &img_32f.at<float>(y,2);\n    for(int x=2; x<img_32f.cols-2; ++x, ++p)\n    {\n      const float* const center=p;\n      if(*center<thresh) continue;\n      if(*(center+1)>=*center) continue;\n      if(*(center-1)>*center) continue;\n      const float* const p1=(center+stride);\n      const float* const p2=(center-stride);\n      if(*p1>=*center) continue;\n      if(*p2>*center) continue;\n      if(*(p1+1)>=*center) continue;\n      if(*(p1-1)>*center) continue;\n      if(*(p2+1)>=*center) continue;\n      if(*(p2-1)>*center) continue;\n      corners->push_back(Corner(x, y, *center, 0, 0.0f));\n    }\n  }\n}\n\n//------------------------------------------------------------------------------\nvoid displayGrid(\n    const OccupandyGrid2D& old_grid,\n    const Keypoints& keypoints,\n    const int img_width,\n    const int img_height)\n{\n  // copy detected features in feature_occupancy grid\n  OccupandyGrid2D new_grid(old_grid.cell_size, old_grid.n_cols, old_grid.n_rows);\n\n  for(int i=0; i<keypoints.cols(); ++i)\n  {\n    new_grid.occupancy_.at(\n          new_grid.getCellIndex(keypoints(0,i), keypoints(1,i))) = true;\n  }\n\n  // create image of grid with previously occupied cells in gray, new detected\n  // features in white and cells without features in black.\n  cv::Mat img(img_height, img_width, CV_8UC1);\n  for(int y=0; y<img_height; ++y)\n  {\n    uchar* img_ptr = img.ptr<uchar>(y);\n    for(int x=0; x<img_width; ++x)\n    {\n      if(old_grid.occupancy_.at(old_grid.getCellIndex(x,y)))\n        img_ptr[x] = 125;\n      else if(new_grid.occupancy_.at(new_grid.getCellIndex(x,y)))\n        img_ptr[x] = 255;\n      else\n        img_ptr[x] = 0;\n    }\n  }\n\n  cv::imshow(\"detector\", img);\n  cv::waitKey(1);\n}\n\n\nvoid nonlinearDiffusion(const cv::Mat& img_8u,\n                        cv::Mat& img_8u_diffused,\n                        const double timestep,\n                        const double final_time)\n{\n  const int num_iter = final_time / timestep;\n\n  cv::Mat Lt;\n  img_8u.convertTo(Lt, CV_32FC1, 1.0f/255.0);\n  cv::Mat kernel_deriv_x  = (cv::Mat_<float>(1,3) << -0.5, 0.0, 0.5);\n  cv::Mat kernel_deriv_xx = (cv::Mat_<float>(1,3) << 1.0, -2.0, 1.0);\n  cv::Mat kernel_deriv_xy = (cv::Mat_<float>(3,3) << 0.25, 0.00,-0.25,\n                                                     0.00, 0.00, 0.00,\n                                                    -0.25, 0.00, 0.25);\n  // Apply filter\n  cv::Point anchor = cv::Point(-1,-1);\n  cv::Mat Lx, Ly;\n  cv::Mat Lxx, Lxy, Lyy;\n  for(int iter = 0; iter < num_iter; ++iter)\n  {\n    // Compute image derivatives\n    cv::filter2D(Lt, Lx, CV_32FC1, kernel_deriv_x, anchor, 0, cv::BORDER_REPLICATE);\n    cv::filter2D(Lt, Ly, CV_32FC1, kernel_deriv_x.t(), anchor, 0, cv::BORDER_REPLICATE);\n    cv::filter2D(Lt, Lxx, CV_32FC1, kernel_deriv_xx, anchor, 0, cv::BORDER_REPLICATE);\n    cv::filter2D(Lt, Lyy, CV_32FC1, kernel_deriv_xx.t(), anchor, 0, cv::BORDER_REPLICATE);\n    cv::filter2D(Lt, Lxy, CV_32FC1, kernel_deriv_xy, anchor, 0, cv::BORDER_REPLICATE);\n\n    // Update equation\n    // Explicit scheme for Geometric Heat Equation (GHE)\n    cv::Mat Lx_Squared = Lx.mul(Lx);\n    cv::Mat Ly_Squared = Ly.mul(Ly);\n\n    cv::Mat numerator = Ly_Squared.mul(Lxx) - 2 * Lx.mul(Ly.mul(Lxy)) + Lx_Squared.mul(Lyy);\n    cv::Mat denom = 1e-6 + Lx_Squared + Ly_Squared;\n\n    Lt = Lt + timestep * numerator / denom;\n  }\n\n  img_8u_diffused = Lt;\n  Lt.convertTo(img_8u_diffused, CV_8UC1, 255.0);\n}\n\n//------------------------------------------------------------------------------\nvoid detectCannyEdges(\n    const cv::Mat& src_gray,\n    cv::Mat& dest,\n    int low_threshold,\n    int ratio,\n    int smoothing_kernel_size)\n{\n  smoothing_kernel_size = 21;\n\n  // Reduce noise\n  //cv::blur(src_gray, dest, cv::Size(smoothing_kernel_size, smoothing_kernel_size));\n  //cv::GaussianBlur(src_gray, dest, cv::Size(smoothing_kernel_size, smoothing_kernel_size), 0);\n  nonlinearDiffusion(src_gray, dest, 0.25, 5);\n\n  cv::imshow(\"diffused image\", dest);\n  cv::waitKey(10);\n\n  // Canny detector\n  cv::Canny(dest, dest, low_threshold, low_threshold*ratio);\n}\n\n//------------------------------------------------------------------------------\nvoid detectSobelEdges(\n    const cv::Mat& src_gray,\n    cv::Mat& dest,\n    int low_threshold,\n    int kernel_size)\n{\n  int scale = 1;\n  int delta = 0;\n  int ddepth = CV_16S;\n  cv::Mat blurred_input, grad_x, grad_y;\n  cv::Mat abs_grad_x, abs_grad_y;\n\n  cv::blur( src_gray, blurred_input, cv::Size(kernel_size,kernel_size) );\n  cv::Sobel( blurred_input, grad_x, ddepth, 1, 0, 3, scale, delta, cv::BORDER_DEFAULT );\n  cv::convertScaleAbs( grad_x, abs_grad_x );\n  cv::Sobel( blurred_input, grad_y, ddepth, 0, 1, 3, scale, delta, cv::BORDER_DEFAULT );\n  cv::convertScaleAbs( grad_y, abs_grad_y );\n\n  // Total Gradient (approximate)\n  cv::addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dest );\n\n  cv::threshold(dest, dest, low_threshold,\n      255, cv::THRESH_BINARY);\n}\n\n//------------------------------------------------------------------------------\nvoid drawFeatures(\n    const Frame& frame,\n    const size_t level,\n    const bool only_matched_features,\n    cv::Mat* img_rgb)\n{\n  CHECK_NOTNULL(img_rgb);\n  CHECK_GT(frame.img_pyr_.size(), level);\n\n  const int scale = (1<<level);\n  const int size = (level == 1) ? 2 : 0;\n  *img_rgb = cv::Mat(frame.img_pyr_[level].size(), CV_8UC3);\n  cv::cvtColor(frame.img_pyr_[level], *img_rgb, cv::COLOR_GRAY2RGB);\n  if(level == 0)\n  {\n    for(size_t i = 0; i < frame.num_features_; ++i)\n    {\n      if(frame.landmark_vec_[i] == nullptr\n         && frame.seed_ref_vec_[i].keyframe == nullptr\n         && only_matched_features)\n        continue;\n\n      const auto& px = frame.px_vec_.col(i);\n      const auto& g = frame.grad_vec_.col(i);\n      switch(frame.type_vec_[i])\n      {\n        case FeatureType::kEdgelet:\n          cv::line(*img_rgb,\n                   cv::Point2f(px(0)+3*g(1), px(1)-3*g(0)),\n                   cv::Point2f(px(0)-3*g(1), px(1)+3*g(0)),\n                   cv::Scalar(255,0,255), 2);\n          break;\n        case FeatureType::kEdgeletSeed:\n        case FeatureType::kEdgeletSeedConverged:\n          cv::line(*img_rgb,\n                   cv::Point2f(px(0)+3*g(1), px(1)-3*g(0)),\n                   cv::Point2f(px(0)-3*g(1), px(1)+3*g(0)),\n                   cv::Scalar(0,0,255), 2);\n          break;\n        case FeatureType::kCornerSeed:\n        case FeatureType::kCornerSeedConverged:\n          cv::circle(*img_rgb, cv::Point2f(px(0), px(1)), 5, cv::Scalar(0,255,0), 1);\n          break;\n        default:\n          cv::rectangle(*img_rgb,\n                        cv::Point2f(px(0)-2, px(1)-2),\n                        cv::Point2f(px(0)+2, px(1)+2),\n                        cv::Scalar(0,255,0), -1);\n      }\n    }\n  }\n  else\n  {\n    for(size_t i = 0; i < frame.num_features_; ++i)\n    {\n      if(frame.isTrackedLandmark(i))\n      {\n        const auto& px = frame.px_vec_.col(i);\n        cv::rectangle(*img_rgb,\n                      cv::Point2f(px(0)/scale-size, px(1)/scale-size),\n                      cv::Point2f(px(0)/scale+size, px(1)/scale+size),\n                      cv::Scalar(0,255,0), -1);\n      }\n      else if(isSeed(frame.type_vec_[i]))\n      {\n        const auto& px = frame.px_vec_.col(i);\n        cv::rectangle(*img_rgb,\n                      cv::Point2f(px(0)/scale-size, px(1)/scale-size),\n                      cv::Point2f(px(0)/scale+size, px(1)/scale+size),\n                      cv::Scalar(255,0,255), -1);\n      }\n    }\n  }\n}\n\ndouble getAngleAtPixelUsingHistogram(\n    const cv::Mat& img, const Eigen::Vector2i& px, const size_t halfpatch_size)\n{\n  angle_hist::AngleHistogram hist;\n  hist.fill(0.0);\n  angle_hist::angleHistogram(img, px(0), px(1), halfpatch_size, hist);\n  angle_hist::smoothOrientationHistogram(hist);\n  return angle_hist::getDominantAngle(hist);\n}\n\nnamespace angle_hist {\n\nvoid angleHistogram(\n    const cv::Mat& img, int x, int y, int halfpatch_size, AngleHistogram& hist)\n{\n  constexpr double pi2 = 2.0 * M_PI;\n  for(int dy = -halfpatch_size; dy <= halfpatch_size; ++dy)\n  {\n    for(int dx = -halfpatch_size; dx <= halfpatch_size; ++dx)\n    {\n      double mag, angle;\n      if(gradientAndMagnitudeAtPixel(img, x + dx, y + dy, &mag, &angle))\n      {\n        size_t bin = std::round( n_bins * ( angle + M_PI ) / pi2 );\n        bin = (bin < n_bins) ? bin : 0u;\n        hist[bin] += mag;\n      }\n    }\n  }\n}\n\nbool gradientAndMagnitudeAtPixel(\n    const cv::Mat& img, int x, int y, double* mag, double* angle)\n{\n  if(y > 0 && y < img.rows-1 && x > 0  &&  x < img.cols-1 )\n  {\n    double dx = img.at<uint8_t>(y, x+1) - img.at<uint8_t>(y, x-1);\n    double dy = img.at<uint8_t>(y+1, x) - img.at<uint8_t>(y-1, x);\n    *mag = std::sqrt( dx*dx + dy*dy );\n    *angle = std::atan2( dy, dx );\n    return true;\n  }\n  return false;\n}\n\nvoid smoothOrientationHistogram(AngleHistogram& hist)\n{\n  double prev = hist[n_bins-1], h0 = hist[0];\n  for(size_t i = 0; i < n_bins; ++i)\n  {\n    double tmp = hist[i];\n    hist[i] = 0.25 * prev + 0.5 * hist[i] + 0.25 * ( (i+1 == n_bins) ? h0 : hist[i+1]);\n    prev = tmp;\n  }\n}\n\ndouble getDominantAngle(const AngleHistogram& hist)\n{\n  double max_angle;\n  int max_bin;\n\n  max_angle = hist[0];\n  max_bin = 0;\n  for(size_t i = 1; i < n_bins; i++ )\n  {\n    if(hist[i] > max_angle)\n    {\n      max_angle = hist[i];\n      max_bin = i;\n    }\n  }\n  return max_bin * 2.0 * M_PI / n_bins;\n}\n\n} // angle_hist\n} // namespace feature_detection_utils\n} // namespace svo\n\n"
  },
  {
    "path": "svo_direct/src/matcher.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/matcher.h>\n\n#include <cstdlib>\n#include <random>\n#include <chrono>\n\n#include <vikit/vision.h>\n#include <vikit/math_utils.h>\n#include <kindr/minimal/angle-axis.h>\n\n#include <svo/direct/patch_warp.h>\n#include <svo/direct/patch_score.h>\n#include <svo/direct/patch_utils.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/feature_wrapper.h>\n#include <svo/direct/feature_alignment.h>\n#include <svo/common/camera.h>\n#include <svo/common/logging.h>\n\nnamespace svo {\n\nMatcher::MatchResult Matcher::findMatchDirect(\n    const Frame& ref_frame,\n    const Frame& cur_frame,\n    const FeatureWrapper& ref_ftr,\n    const FloatType& ref_depth,\n    Keypoint& px_cur)\n{\n  Eigen::Vector2i pxi = ref_ftr.px.cast<int>()/(1<<ref_ftr.level);\n  int boundary = kHalfPatchSize+2;\n  if(pxi[0] < boundary\n     || pxi[1] < boundary\n     || pxi[0] >= static_cast<int>(ref_frame.cam()->imageWidth()/(1<<ref_ftr.level))-boundary\n     || pxi[1] >= static_cast<int>(ref_frame.cam()->imageHeight()/(1<<ref_ftr.level))-boundary)\n    return MatchResult::kFailVisibility;\n\n  // warp affine\n  warp::getWarpMatrixAffine(\n      ref_frame.cam_, cur_frame.cam_, ref_ftr.px, ref_ftr.f, ref_depth,\n      cur_frame.T_cam_world() * ref_frame.T_world_cam(), ref_ftr.level, &A_cur_ref_);\n  search_level_ = warp::getBestSearchLevel(A_cur_ref_, ref_frame.img_pyr_.size()-1);\n/*\n  if(pt.normal_set_)\n  {\n    warp::getWarpMatrixAffineHomography(\n        *ref_ftr.frame->cam_,\n        *cur_frame.cam_,\n        ref_ftr.px,\n        ref_ftr.f,\n        ref_ftr.frame->T_f_w_.rotation_matrix()*pt.normal_,\n        (pt.pos_-ref_ftr.frame->pos()).norm(),\n        cur_frame.T_f_w_*ref_ftr.frame->T_f_w_.inverse(),\n        ref_ftr.level,\n        A_cur_ref_);\n  }\n  else\n*/\n  if(options_.use_affine_warp_)\n  {\n    if(!warp::warpAffine(A_cur_ref_, ref_frame.img_pyr_[ref_ftr.level], ref_ftr.px,\n                         ref_ftr.level, search_level_, kHalfPatchSize+1, patch_with_border_))\n      return MatchResult::kFailWarp;\n  }\n  else\n  {\n    // pixelwise warp:\n    // TODO(zzc): currently using the search level from affine, good enough?\n    if(!warp::warpPixelwise(cur_frame, ref_frame, ref_ftr,\n                           ref_ftr.level, search_level_, kHalfPatchSize+1, patch_with_border_))\n      return MatchResult::kFailWarp;\n\n  }\n  patch_utils::createPatchFromPatchWithBorder(\n        patch_with_border_, kPatchSize, patch_);\n\n  // px_cur should be set\n  Keypoint px_scaled(px_cur/(1<<search_level_));\n\n  //bool success = false;\n  if(isEdgelet(ref_ftr.type))\n  {\n    GradientVector dir_cur(A_cur_ref_ * ref_ftr.grad);\n    dir_cur.normalize();\n    if(feature_alignment::align1D(\n         cur_frame.img_pyr_[search_level_], dir_cur, patch_with_border_,\n         patch_, options_.align_max_iter,\n         options_.affine_est_offset_, options_.affine_est_gain_,\n         &px_scaled, &h_inv_))\n    {\n      px_cur = px_scaled * (1<<search_level_);\n      // set member variables with results (used in reprojector)\n      px_cur_ = px_cur;\n      cur_frame.cam()->backProject3(px_cur_, &f_cur_);\n      f_cur_.normalize();\n      return MatchResult::kSuccess;\n    }\n  }\n  else\n  {\n    std::vector<Eigen::Vector2f>* last_fail_steps = nullptr;\n    bool res = feature_alignment::align2D(\n          cur_frame.img_pyr_[search_level_], patch_with_border_, patch_,\n          options_.align_max_iter,\n          options_.affine_est_offset_, options_.affine_est_gain_,\n          px_scaled, false, last_fail_steps);\n    if(res)\n    {\n      px_cur = px_scaled * (1<<search_level_);\n      // set member variables with results (used in reprojector)\n      px_cur_ = px_cur;\n      cur_frame.cam()->backProject3(px_cur_, &f_cur_);\n      f_cur_.normalize();\n      return MatchResult::kSuccess;\n    }\n    else\n      VLOG(300) << \"NOT CONVERGED: search level \" << search_level_;\n  }\n  return MatchResult::kFailAlignment;\n}\n\nMatcher::MatchResult Matcher::findEpipolarMatchDirect(\n    const Frame& ref_frame,\n    const Frame& cur_frame,\n    const FeatureWrapper& ref_ftr,\n    const double d_estimate_inv,\n    const double d_min_inv,\n    const double d_max_inv,\n    double& depth)\n{\n  Transformation T_cur_ref = cur_frame.T_f_w_ * ref_frame.T_f_w_.inverse();\n  return findEpipolarMatchDirect(ref_frame, cur_frame, T_cur_ref, ref_ftr,\n                                 d_estimate_inv, d_min_inv, d_max_inv, depth);\n}\n\nMatcher::MatchResult Matcher::findEpipolarMatchDirect(\n    const Frame& ref_frame,\n    const Frame& cur_frame,\n    const Transformation& T_cur_ref,\n    const FeatureWrapper& ref_ftr,\n    const double d_estimate_inv,\n    const double d_min_inv,\n    const double d_max_inv,\n    double& depth)\n{\n  int zmssd_best = PatchScore::threshold();\n\n  // Compute start and end of epipolar line in old_kf for match search, on image plane\n  const BearingVector A = T_cur_ref.getRotation().rotate(ref_ftr.f) + T_cur_ref.getPosition()*d_min_inv;\n  const BearingVector B = T_cur_ref.getRotation().rotate(ref_ftr.f) + T_cur_ref.getPosition()*d_max_inv;\n  Eigen::Vector2d px_A, px_B;\n  cur_frame.cam()->project3(A, &px_A);\n  cur_frame.cam()->project3(B, &px_B);\n  epi_image_ = px_A - px_B;\n\n  // Compute affine warp matrix\n  warp::getWarpMatrixAffine(\n      ref_frame.cam_, cur_frame.cam_, ref_ftr.px, ref_ftr.f,\n      1.0/std::max(0.000001, d_estimate_inv), T_cur_ref, ref_ftr.level, &A_cur_ref_);\n\n  // feature pre-selection\n  reject_ = false;\n  if(isEdgelet(ref_ftr.type) && options_.epi_search_edgelet_filtering)\n  {\n    const Eigen::Vector2d grad_cur = (A_cur_ref_ * ref_ftr.grad).normalized();\n    const double cosangle = fabs(grad_cur.dot(epi_image_.normalized()));\n    if(cosangle < options_.epi_search_edgelet_max_angle)\n    {\n      reject_ = true;\n      return MatchResult::kFailAngle;\n    }\n  }\n\n  // prepare for match\n  //    - find best search level\n  //    - warp the reference patch\n  search_level_ = warp::getBestSearchLevel(A_cur_ref_, ref_frame.img_pyr_.size()-1);\n  // length and direction on SEARCH LEVEL\n  epi_length_pyramid_ = epi_image_.norm() / (1<<search_level_);\n  GradientVector epi_dir_image = epi_image_.normalized();\n  if(!warp::warpAffine(A_cur_ref_, ref_frame.img_pyr_[ref_ftr.level], ref_ftr.px,\n                       ref_ftr.level, search_level_, kHalfPatchSize+1, patch_with_border_))\n    return MatchResult::kFailWarp;\n  patch_utils::createPatchFromPatchWithBorder(\n        patch_with_border_, kPatchSize, patch_);\n\n  // Case 1: direct search locally if the epipolar line is too short\n  if(epi_length_pyramid_ < 2.0)\n  {\n    px_cur_ = (px_A+px_B)/2.0;\n    MatchResult res = findLocalMatch(cur_frame, epi_dir_image, search_level_, px_cur_);\n    if(res != MatchResult::kSuccess)\n      return res;\n    cur_frame.cam()->backProject3(px_cur_, &f_cur_);\n    f_cur_.normalize();\n    return matcher_utils::depthFromTriangulation(T_cur_ref, ref_ftr.f, f_cur_, &depth);\n  }\n\n  // Case 2: search along the epipolar line for the best match\n  PatchScore patch_score(patch_); // precompute for reference patch\n  BearingVector C = T_cur_ref.getRotation().rotate(ref_ftr.f) + T_cur_ref.getPosition()*d_estimate_inv;\n  scanEpipolarLine(cur_frame, A, B, C, patch_score, search_level_, &px_cur_, &zmssd_best);\n\n  // check if the best match is good enough\n  if(zmssd_best < PatchScore::threshold())\n  {\n    if(options_.subpix_refinement)\n    {\n      MatchResult res = findLocalMatch(cur_frame, epi_dir_image, search_level_, px_cur_);\n      if(res != MatchResult::kSuccess)\n        return res;\n    }\n\n    cur_frame.cam()->backProject3(px_cur_, &f_cur_);\n    f_cur_.normalize();\n    return matcher_utils::depthFromTriangulation(T_cur_ref, ref_ftr.f, f_cur_, &depth);\n  }\n  else\n    return MatchResult::kFailScore;\n}\n\nstd::string Matcher::getResultString(const Matcher::MatchResult& result)\n{\n  std::string result_str = \"success\";\n  switch(result)\n  {\n    case MatchResult::kFailScore: result_str = \"fail score\"; break;\n    case MatchResult::kFailTriangulation: result_str = \"fail triangulation\"; break;\n    case MatchResult::kFailVisibility: result_str = \"fail visibility\"; break;\n    case MatchResult::kFailWarp: result_str = \"fail warp\"; break;\n    case MatchResult::kFailAlignment: result_str = \"fail alignment\"; break;\n    case MatchResult::kFailRange: result_str = \"fail range\"; break;\n    case MatchResult::kFailAngle: result_str = \"fail angle\"; break;\n    case MatchResult::kFailCloseView: result_str = \"fail close view\"; break;\n    case MatchResult::kFailLock: result_str = \"fail lock\"; break;\n    default: result_str = \"unknown\";\n  }\n  return result_str;\n}\n\nMatcher::MatchResult Matcher::findLocalMatch(\n    const Frame& frame,\n    const Eigen::Ref<GradientVector>& direction,\n    const int patch_level,\n    Keypoint& px_cur)\n{\n  Keypoint px_scaled(px_cur/(1<<patch_level));\n  bool res;\n  if(options_.align_1d)\n    res = feature_alignment::align1D(\n          frame.img_pyr_[patch_level], direction,\n          patch_with_border_, patch_,\n          options_.align_max_iter,\n          options_.affine_est_offset_, options_.affine_est_gain_,\n          &px_scaled, &h_inv_);\n  else\n    res = feature_alignment::align2D(\n        frame.img_pyr_[patch_level], patch_with_border_, patch_,\n        options_.align_max_iter,\n        options_.affine_est_offset_, options_.affine_est_gain_,\n        px_scaled);\n\n  if(!res)\n    return MatchResult::kFailAlignment;\n\n  px_cur = px_scaled*(1<<patch_level);\n  return MatchResult::kSuccess;\n}\n\n\nbool Matcher::updateZMSSD(\n    const Frame& frame,\n    const Eigen::Vector2i& pxi,\n    const int patch_level,\n    const PatchScore& patch_score,\n    int* zmssd_best)\n{\n    // TODO interpolation would probably be a good idea\n    uint8_t* cur_patch_ptr = frame.img_pyr_[patch_level].data\n                             + (pxi[1]-kHalfPatchSize)*frame.img_pyr_[patch_level].step\n                             + (pxi[0]-kHalfPatchSize);\n    int zmssd = patch_score.computeScore(cur_patch_ptr, frame.img_pyr_[patch_level].step);\n\n    if(zmssd < *zmssd_best)\n    {\n      *zmssd_best = zmssd;\n      return true;\n    }\n    else\n      return false;\n}\n\nbool Matcher::isPatchWithinImage(\n    const Frame& frame,\n    const Eigen::Vector2i& pxi,\n    const int patch_level)\n{\n  return !(pxi[0] < kPatchSize || pxi[1] < kPatchSize\n      || pxi[0] >= (static_cast<int>(frame.cam()->imageWidth()/(1<<patch_level))-kPatchSize)\n      || pxi[1] >= (static_cast<int>(frame.cam()->imageHeight()/(1<<patch_level))-kPatchSize));\n}\n\nvoid Matcher::scanEpipolarLine(\n    const Frame& frame,\n    const Eigen::Vector3d& A,\n    const Eigen::Vector3d& B,\n    const Eigen::Vector3d& C,\n    const PatchScore& patch_score,\n    const int patch_level,\n    Keypoint* image_best,\n    int* zmssd_best)\n{\n  if(options_.scan_on_unit_sphere)\n    scanEpipolarUnitSphere(frame, A, B, C, patch_score, patch_level, image_best, zmssd_best);\n  else\n    scanEpipolarUnitPlane(frame, A, B, C, patch_score, patch_level, image_best, zmssd_best);\n}\n\nvoid Matcher::scanEpipolarUnitPlane(\n    const Frame& frame,\n    const Eigen::Vector3d& A,\n    const Eigen::Vector3d& B,\n    const Eigen::Vector3d& C,\n    const PatchScore& patch_score,\n    const int patch_level,\n    Keypoint* image_best,\n    int* zmssd_best)\n{\n  // if there're too many steps, we only search for a limited range around the center\n  //    while keeping the step size small enough to check each pixel on the image plane\n  size_t n_steps = epi_length_pyramid_/0.7; // one step per pixel\n  Eigen::Vector2d step = (vk::project2(A) - vk::project2(B))/n_steps;\n  if(n_steps > options_.max_epi_search_steps)\n  {\n    /* TODO\n    printf(\"WARNING: skip epipolar search: %d evaluations, px_lenght=%f, d_min=%f, d_max=%f.\\n\",\n           n_steps, epi_length_, d_min_inv, d_max_inv);\n    */\n    n_steps = options_.max_epi_search_steps;\n  }\n  // now we sample along the epipolar line\n  Eigen::Vector2d uv_C = vk::project2(C);\n  Eigen::Vector2d uv = uv_C;\n  Eigen::Vector2d uv_best = uv;\n  bool forward = true;\n  Eigen::Vector2i last_checked_pxi(0,0);\n\n  for(size_t i=0; i<n_steps; ++i, uv+=step)\n  {\n    Eigen::Vector2d px;\n    frame.cam()->project3(vk::unproject2d(uv), &px);\n    Eigen::Vector2i pxi(px[0]/(1<<patch_level)+0.5,\n                 px[1]/(1<<patch_level)+0.5); // +0.5 to round to closest int\n\n    if(pxi == last_checked_pxi)\n      continue;\n    last_checked_pxi = pxi;\n\n    // check if the patch is full within the new frame\n    if(!isPatchWithinImage(frame, pxi, patch_level))\n    {\n      // change search direction if pixel is out of field of view\n      if(forward)\n      {\n        // reverse search direction\n        i=n_steps*0.5;\n        step = -step;\n        uv = uv_C;\n        forward=false;\n        continue;\n      }\n      else\n        break;\n    }\n\n    if(updateZMSSD(frame, pxi, patch_level, patch_score, zmssd_best))\n      uv_best = uv;\n\n    if(forward && i > n_steps*0.5)\n    {\n      // reverse search direction\n      step = -step;\n      uv = uv_C;\n      forward=false;\n    }\n  }\n\n  // convert uv_best to image coordinates\n  Eigen::Vector2d projected;\n  frame.cam()->project3(vk::unproject2d(uv_best), &projected);\n  *image_best = projected.cast<svo::FloatType>();\n}\n\nvoid Matcher::scanEpipolarUnitSphere(\n    const Frame& frame,\n    const Eigen::Vector3d& A,\n    const Eigen::Vector3d& B,\n    const Eigen::Vector3d& C,\n    const PatchScore& patch_score,\n    const int patch_level,\n    Keypoint* image_best,\n    int* zmssd_best)\n{\n  size_t n_steps = epi_length_pyramid_ / 0.7; // TODO(zzc): better way of doing this?\n  n_steps = n_steps>options_.max_epi_search_steps? options_.max_epi_search_steps:n_steps;\n  size_t half_steps = n_steps / 2;\n\n  // calculate the step in angle\n  Eigen::Vector3d f_A = A.normalized();\n  Eigen::Vector3d f_B = B.normalized();\n  double step = std::acos(f_A.dot(f_B))/ n_steps;\n\n  // calculate the rotation axis: positive angle -> toward A\n  kindr::minimal::AngleAxis rotation_B_to_A;\n  rotation_B_to_A.setAxis((f_B.cross(f_A)).normalized());\n\n  // search around center\n  Eigen::Vector3d f_C = C.normalized();\n  Eigen::Vector3d f = f_C;\n  Eigen::Vector3d f_best = f_C;\n  Eigen::Vector2i last_checked_pxi(0, 0);\n  for(size_t i=0; i<n_steps; i++)\n  {\n    // TODO(zzc): more compact\n    // rotation angle w.r.t. f_C\n    double angle = 0.0;\n    if(i < half_steps) // f_A <-- f_C\n      angle = i*step;\n    else\n      angle = (i-half_steps) * (-step); // f_C --> f_B\n    rotation_B_to_A.setAngle(angle);\n\n    // current sample on unit sphere\n    f = rotation_B_to_A.rotate(f_C);\n\n    // back project to image plane\n    Eigen::Vector2d px;\n    frame.cam()->project3(f, &px);\n    Eigen::Vector2i pxi(px[0]/(1<<patch_level)+0.5,\n                 px[1]/(1<<patch_level)+0.5); // +0.5 to round to closest int\n    if(pxi == last_checked_pxi)\n      continue;\n    last_checked_pxi = pxi;\n\n    // is within image?\n    // TODO(zzc): FIX use visibility check in camera model\n    if(!isPatchWithinImage(frame, pxi, patch_level))\n    {\n      if(i<half_steps) // f_A <-- f_C to f_C --> f_B\n      {\n        i = half_steps;\n        continue;\n      }\n      else             // end of search\n        break;\n    }\n\n    // update ZMSSD\n    if(updateZMSSD(frame, pxi, patch_level, patch_score, zmssd_best))\n      f_best = f;\n  }\n\n  //backproject to image plane\n  Eigen::Vector2d projected;\n  frame.cam()->project3(f_best, &projected);\n  *image_best = projected.cast<svo::FloatType>();\n}\n\nnamespace matcher_utils {\n\nMatcher::MatchResult depthFromTriangulation(\n    const Transformation& T_search_ref,\n    const Eigen::Vector3d& f_ref,\n    const Eigen::Vector3d& f_cur,\n    double* depth)\n{\n  Eigen::Matrix<double,3,2> A; A << T_search_ref.getRotation().rotate(f_ref), f_cur;\n  const Eigen::Matrix2d AtA = A.transpose()*A;\n  if(AtA.determinant() < 0.000001)\n    return Matcher::MatchResult::kFailTriangulation;\n  const Eigen::Vector2d depth2 = - AtA.inverse()*A.transpose()*T_search_ref.getPosition();\n  (*depth) = std::fabs(depth2[0]);\n  return Matcher::MatchResult::kSuccess;\n}\n\n\n\n\n\n} // namespace matcher_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_direct/src/patch_warp.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/direct/patch_warp.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/feature_wrapper.h>\n#include <svo/common/camera.h>\n#include <glog/logging.h>\n\nnamespace svo {\nnamespace warp {\n\n// TODO(cfo) take inverse depth!\nvoid getWarpMatrixAffine(\n    const CameraPtr& cam_ref,\n    const CameraPtr& cam_cur,\n    const Eigen::Ref<Keypoint>& px_ref,\n    const Eigen::Ref<BearingVector>& f_ref,\n    const double depth_ref,\n    const Transformation& T_cur_ref,\n    const int level_ref,\n    AffineTransformation2* A_cur_ref)\n{\n  CHECK_NOTNULL(A_cur_ref);\n\n  // Compute affine warp matrix A_ref_cur\n  const int kHalfPatchSize = 5;\n  const Position xyz_ref = f_ref * depth_ref;\n  Position xyz_du_ref, xyz_dv_ref;\n  // NOTE: project3 has no guarantee that the returned vector is unit length\n  // - for pinhole: z component is 1 (unit plane)\n  // - for omnicam: norm is 1 (unit sphere)\n  cam_ref->backProject3(px_ref + Eigen::Vector2d(kHalfPatchSize,0) * (1<<level_ref), &xyz_du_ref);\n  cam_ref->backProject3(px_ref + Eigen::Vector2d(0,kHalfPatchSize) * (1<<level_ref), &xyz_dv_ref);\n  if(cam_ref->getType() == Camera::Type::kPinhole)\n  {\n    xyz_du_ref *= xyz_ref[2];\n    xyz_dv_ref *= xyz_ref[2];\n  }\n  else\n  {\n    xyz_du_ref.normalize();\n    xyz_dv_ref.normalize();\n    xyz_du_ref *= depth_ref;\n    xyz_dv_ref *= depth_ref;\n  }\n\n  Keypoint px_cur, px_du_cur, px_dv_cur;\n  cam_cur->project3(T_cur_ref * xyz_ref, &px_cur);\n  cam_cur->project3(T_cur_ref * xyz_du_ref, &px_du_cur);\n  cam_cur->project3(T_cur_ref * xyz_dv_ref, &px_dv_cur);\n  A_cur_ref->col(0) = (px_du_cur - px_cur) / kHalfPatchSize;\n  A_cur_ref->col(1) = (px_dv_cur - px_cur) / kHalfPatchSize;\n}\n\nvoid getWarpMatrixAffineHomography(\n    const CameraPtr& cam_ref,\n    const CameraPtr& cam_cur,\n    const Keypoint& px_ref,\n    const BearingVector& f_ref,\n    const BearingVector& normal_ref,\n    const double depth_ref,\n    const Transformation T_cur_ref,\n    const int level_ref,\n    AffineTransformation2& A_cur_ref)\n{\n  // normal = frame_ref_->T_f_w_.rotation_matrix()*point->normal_;\n  // create homography matrix\n  const Position t = T_cur_ref.inverse().getPosition();\n  const BearingVector xyz_ref(f_ref*depth_ref);\n  const Eigen::Matrix3d H_cur_ref =\n      T_cur_ref.getRotationMatrix()*\n      (normal_ref.dot(xyz_ref)*Eigen::Matrix3d::Identity() - t*normal_ref.transpose());\n\n  // Compute affine warp matrix A_ref_cur using homography projection\n  const int kHalfPatchSize = 5;\n  const BearingVector f_cur(H_cur_ref * f_ref);\n  BearingVector f_du_ref, f_dv_ref;\n  cam_ref->backProject3(px_ref + Eigen::Vector2d(kHalfPatchSize, 0) * (1<<level_ref), &f_du_ref);\n  cam_ref->backProject3(px_ref + Eigen::Vector2d(0, kHalfPatchSize) * (1<<level_ref), &f_dv_ref);\n  const BearingVector f_du_cur = H_cur_ref * f_du_ref;\n  const BearingVector f_dv_cur = H_cur_ref * f_dv_ref;\n  Keypoint px_cur, px_du_cur, px_dv_cur;\n  cam_cur->project3(f_cur, &px_cur);\n  cam_cur->project3(f_du_cur, &px_du_cur);\n  cam_cur->project3(f_dv_cur, &px_dv_cur);\n  A_cur_ref.col(0) = (px_du_cur - px_cur) / kHalfPatchSize;\n  A_cur_ref.col(1) = (px_dv_cur - px_cur) / kHalfPatchSize;\n}\n\nint getBestSearchLevel(\n    const AffineTransformation2& A_cur_ref,\n    const int max_level)\n{\n  // Compute patch level in other image\n  int search_level = 0;\n  double D = A_cur_ref.determinant();\n  while(D > 3.0 && search_level < max_level)\n  {\n    search_level += 1;\n    D *= 0.25;\n  }\n  return search_level;\n}\n\nbool warpAffine(\n    const AffineTransformation2& A_cur_ref,\n    const cv::Mat& img_ref,\n    const Eigen::Ref<Keypoint>& px_ref,\n    const int level_ref,\n    const int search_level,\n    const int halfpatch_size,\n    uint8_t* patch)\n{\n  Eigen::Matrix2f A_ref_cur = A_cur_ref.inverse().cast<float>()*(1<<search_level);\n  if(std::isnan(A_ref_cur(0,0)))\n  {\n    LOG(WARNING) << \"Affine warp is NaN, probably camera has no translation\";\n    return false;\n  }\n\n  // Perform the warp on a larger patch.\n  uint8_t* patch_ptr = patch;\n  const Eigen::Vector2f px_ref_pyr = px_ref.cast<float>() / (1<<level_ref);\n  const int stride = img_ref.step.p[0];\n  for (int y=-halfpatch_size; y<halfpatch_size; ++y)\n  {\n    for (int x=-halfpatch_size; x<halfpatch_size; ++x, ++patch_ptr)\n    {\n      const Eigen::Vector2f px_patch(x, y);\n      const Eigen::Vector2f px(A_ref_cur*px_patch + px_ref_pyr);\n      const int xi = std::floor(px[0]);\n      const int yi = std::floor(px[1]);\n      if (xi<0 || yi<0 || xi+1>=img_ref.cols || yi+1>=img_ref.rows)\n        return false;\n      else\n      {\n        const float subpix_x = px[0]-xi;\n        const float subpix_y = px[1]-yi;\n        const float w00 = (1.0f-subpix_x)*(1.0f-subpix_y);\n        const float w01 = (1.0f-subpix_x)*subpix_y;\n        const float w10 = subpix_x*(1.0f-subpix_y);\n        const float w11 = 1.0f - w00 - w01 - w10;\n        const uint8_t* const ptr = img_ref.data + yi*stride + xi;\n        *patch_ptr = static_cast<uint8_t>(w00*ptr[0] + w01*ptr[stride] + w10*ptr[1] + w11*ptr[stride+1]);\n      }\n    }\n  }\n  return true;\n}\n\nbool warpPixelwise(\n    const Frame& cur_frame,\n    const Frame& ref_frame,\n    const FeatureWrapper& ref_ftr,\n    const int level_ref,\n    const int level_cur,\n    const int halfpatch_size,\n    uint8_t* patch)\n{\n  double depth_ref = (ref_frame.pos() - ref_ftr.landmark->pos()).norm();\n  double depth_cur = (cur_frame.pos() - ref_ftr.landmark->pos()).norm();\n\n  // backproject to 3D points in reference frame\n  Eigen::Vector3d xyz_ref;\n  ref_frame.cam()->backProject3(ref_ftr.px, &xyz_ref);\n  xyz_ref = xyz_ref.normalized() * depth_ref;\n\n  // project to current frame and convert to search level\n  Eigen::Vector3d xyz_cur = cur_frame.T_cam_world()*(ref_frame.T_cam_world().inverse())*xyz_ref;\n  Eigen::Vector2d px_cur;\n  cur_frame.cam()->project3(xyz_cur, &px_cur);\n  Eigen::Vector2d px_cur_search = px_cur / (1<<level_cur);\n\n  // for each pixel in the patch(on search level):\n  // - convert to image level\n  // - backproject to 3D points\n  // - project to ref frame and find pixel value in ref level\n  uint8_t* patch_ptr = patch;\n  const cv::Mat& img_ref = ref_frame.img_pyr_[level_ref];\n  const int stride = img_ref.step.p[0];\n\n  for(int y=-halfpatch_size; y<halfpatch_size; ++y)\n  {\n    for(int x=-halfpatch_size; x<halfpatch_size; ++x, ++patch_ptr)\n    {\n      const Eigen::Vector2d ele_patch(x, y);\n      Eigen::Vector2d ele_search = ele_patch + px_cur_search;\n      Eigen::Vector3d ele_xyz_cur;\n      cur_frame.cam()->backProject3(ele_search*(1<<level_cur), &ele_xyz_cur);\n      ele_xyz_cur = ele_xyz_cur.normalized() * depth_cur;\n      Eigen::Vector3d ele_xyz_ref = ref_frame.T_cam_world() * (cur_frame.T_cam_world().inverse()) * ele_xyz_cur;\n      Eigen::Vector2d ele_ref;\n      ref_frame.cam()->project3(ele_xyz_ref, &ele_ref);\n      ele_ref = ele_ref / (1<<level_ref);\n\n      const int xi = std::floor(ele_ref[0]);\n      const int yi = std::floor(ele_ref[1]);\n      if (xi<0 || yi<0 || xi+1>=img_ref.cols || yi+1>=img_ref.rows)\n      {\n        VLOG(200) << \"ref image: col-\" << img_ref.cols\n                  << \", row-\" << img_ref.rows;\n        VLOG(200) << \"xi: \" << xi << \", \" << \"yi: \" << yi;\n        return false;\n      }\n      else\n      {\n        const float subpix_x = ele_ref[0]-xi;\n        const float subpix_y = ele_ref[1]-yi;\n        const float w00 = (1.0f-subpix_x)*(1.0f-subpix_y);\n        const float w01 = (1.0f-subpix_x)*subpix_y;\n        const float w10 = subpix_x*(1.0f-subpix_y);\n        const float w11 = 1.0f - w00 - w01 - w10;\n        const uint8_t* const ptr = img_ref.data + yi*stride + xi;\n        *patch_ptr = static_cast<uint8_t>(w00*ptr[0] + w01*ptr[stride] + w10*ptr[1] + w11*ptr[stride+1]);\n      }\n    }\n  }\n\n  return true;\n}\n\nvoid createPatchNoWarp(\n    const cv::Mat& img,\n    const Eigen::Vector2i& px,\n    const int halfpatch_size,\n    uint8_t* patch)\n{\n  CHECK_NOTNULL(patch);\n  CHECK(px(0) >= halfpatch_size\n        && px(1) >= halfpatch_size\n        && px(0) < img.cols - halfpatch_size\n        && px(1) < img.rows - halfpatch_size);\n\n  const int patch_size = 2 * halfpatch_size;\n  uint8_t* patch_ptr = patch;\n  const int step = img.step.p[0];\n  for (int y = 0; y < patch_size; ++y)\n  {\n    uint8_t* img_ptr =\n        (uint8_t*) img.data\n        + (px[1] - halfpatch_size + y) * step\n        + (px[0] - halfpatch_size);\n    for (int x = 0; x < patch_size; ++x, ++patch_ptr, ++img_ptr)\n    {\n      *patch_ptr = *img_ptr;\n    }\n  }\n}\n\nvoid createPatchNoWarpInterpolated(\n    const cv::Mat& img,\n    const Eigen::Ref<Keypoint>& px,\n    const int halfpatch_size,\n    uint8_t* patch)\n{\n  CHECK_NOTNULL(patch);\n\n  // TODO(cfo): This could be easily implemented using SIMD instructions.\n\n  const int step = img.step.p[0];\n  const float u = px(0);\n  const float v = px(1);\n  const int u_r = std::floor(u);\n  const int v_r = std::floor(v);\n  CHECK(u_r >= halfpatch_size\n        && v_r >= halfpatch_size\n        && u_r < img.cols - halfpatch_size\n        && v_r < img.rows - halfpatch_size);\n\n  // compute interpolation weights\n  const float subpix_x = u - u_r;\n  const float subpix_y = v - v_r;\n  const float wTL = (1.0-subpix_x) * (1.0-subpix_y);\n  const float wTR = subpix_x * (1.0-subpix_y);\n  const float wBL = (1.0-subpix_x)*subpix_y;\n  const float wBR = subpix_x * subpix_y;\n\n  const int patch_size = 2 * halfpatch_size;\n  uint8_t* patch_ptr = patch;\n  for (int y = 0; y < patch_size; ++y)\n  {\n    uint8_t* img_ptr =\n        (uint8_t*) img.data\n        + (v_r - halfpatch_size + y) * step\n        + (u_r - halfpatch_size);\n    for (int x = 0; x < patch_size; ++x, ++patch_ptr, ++img_ptr)\n    {\n      *patch_ptr =\n          wTL*img_ptr[0] + wTR*img_ptr[1] + wBL*img_ptr[step] + wBR*img_ptr[step+1];;\n    }\n  }\n}\n\n} // namespace warp\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/CMakeLists.txt",
    "content": "project(svo_img_align)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple)\ncatkin_simple()\n\ninclude(SvoSetup)\n\nset(HEADERS_CPU\n  include/svo/img_align/sparse_img_align_base.h\n  include/svo/img_align/sparse_img_align.h\n  )\n\nset(SOURCES_CPU\n  src/sparse_img_align_base.cpp\n  src/sparse_img_align.cpp\n  )\n\nset(HEADERS_GPU\n  include/svo/img_align/gpu_types_cuda.h\n  include/svo/img_align/frame_gpu.h\n  include/svo/img_align/sparse_img_align_gpu.h\n  include/svo/img_align/sparse_img_align_device_utils.cuh\n  )\n\nset(SOURCES_GPU\n  src/frame_gpu.cpp\n  src/sparse_img_align_gpu.cpp\n  src/sparse_img_align_device_utils.cu\n  )\n\nset(CUDA_FOUND false)\nif(${cuda_catkin_FOUND})\n find_cuda()\n if ((NOT ${CUDA_FOUND}) OR (${CUDA_VERSION_MAJOR} LESS 7))\n   set(CUDA_FOUND false)\n endif()\nendif()\n\nif (${CUDA_FOUND})\n cs_cuda_add_library(${PROJECT_NAME} ${SOURCES_CPU} ${SOURCES_GPU} ${HEADERS_CPU} ${HEADERS_GPU})\nelse()\n cs_add_library(${PROJECT_NAME} ${SOURCES_CPU} ${HEADERS_CPU})\nendif()\ntarget_link_libraries(${PROJECT_NAME} ${LINK_LIBS})\n\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/frame_gpu.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <mutex>\n#include <unordered_map>\n#include <opencv2/core/core.hpp>\n#include <vikit/math_utils.h>\n#include <imp/cu_imgproc/image_pyramid.hpp>\n#include <imp/cu_core/cu_image_gpu.cuh>\n#include <imp/cu_core/cu_matrix.cuh>\n#include <imp/cu_core/cu_pinhole_camera.cuh>\n#include <svo/common/frame.h>\n#include <svo/common/types.h>\n#include <svo/common/transformation.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/feature_wrapper.h>\n#include <svo/common/seed_wrapper.h>\n#include <svo/img_align/sparse_img_align_device_utils.cuh> //!< for FloatTypeGpu\n\nnamespace svo {\n\n/**\n * @brief The FrameGpu class adds GPU data members to the frame base class.\n */\nclass FrameGpu : public Frame\n{\npublic:\n  typedef std::shared_ptr<FrameGpu> Ptr;\n\n  std::vector<imp::cu::ImageGpu8uC1::Ptr> cu_img_pyramid_copy_; //!< Image Pyramid\n  // TODO: USE imp::ImagePyramid\n  //std::vector<imp::ImagePyramid8uC1::Ptr> cu_ref_pyramids_device_;\n  imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr cu_T_imu_cam_;\n  imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr cu_T_cam_imu_;\n  imp::cu::PinholeCamera::Ptr cu_camera_;\n\n  /// Default Constructor\n  FrameGpu(const CameraPtr& cam,\n      const cv::Mat& img,\n      const uint64_t timestamp_ns,\n      const size_t n_pyr_levels);\n\n  /// Constructor without image. Just for testing!\n  FrameGpu(\n      const int id,\n      const uint64_t timestamp_ns,\n      const CameraPtr& cam,\n      const Transformation& T_world_cam);\n\n  /// Empty constructor. Just for testing!\n  FrameGpu() {}\n\n  /// Destructor\n  virtual ~FrameGpu();\n\n  // no copy\n  FrameGpu(const FrameGpu&) = delete;\n  FrameGpu& operator=(const FrameGpu&) = delete;\n\n  /// Initialize new frame and create image pyramid.\n  void initGpuData(imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr& cu_T_imu_cam,\n                   imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr& cu_T_cam_imu,\n                   imp::cu::PinholeCamera::Ptr& cu_camera);\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/gpu_types_cuda.h",
    "content": "#pragma once\n\n#include <imp/core/pixel.hpp>\n\nnamespace svo {\n\n#define USE_SINGLE_PRECISION\n\n#ifdef USE_SINGLE_PRECISION\ntypedef float FloatTypeGpu;\n#else\ntypedef double FloatTypeGpu;\n#endif\n\n#ifdef USE_SINGLE_PRECISION\ntypedef imp::Pixel32fC1 FloatPixelGpu;\ntypedef float2 Float2TypeGpu;\ntypedef imp::Pixel32fC2 Float2PixelGpu;\ntypedef float3 Float3TypeGpu;\ntypedef imp::Pixel32fC3 Float3PixelGpu;\ntypedef std::uint32_t UIntTypeGpu;\ntypedef imp::Pixel32uC1 UIntPixelGpu;\ntypedef unsigned char BoolTypeGpu;\ntypedef imp::Pixel8uC1 BoolPixelGpu;\n#else\n// use double precision\n// TODO: Define Pixel64 in imp\ntypedef imp::Pixel64fC1 FloatPixelGpu;\ntypedef double2 Float2TypeGpu;\ntypedef imp::Pixel64fC2 Float2PixelGpu;\ntypedef double3 Float3TypeGpu;\ntypedef imp::Pixel64fC3 Float3PixelGpu;\ntypedef std::uint32_t UIntTypeGpu;\ntypedef imp::Pixel32uC1 UIntPixelGpu;\ntypedef unsigned char BoolTypeGpu;\ntypedef imp::Pixel8uC1 BoolPixelGpu;\n#endif\n\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/sparse_img_align.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/img_align/sparse_img_align_base.h>\n\n#include <vikit/solver/robust_cost.h>\n#include <vikit/performance_monitor.h>\n\n#include <svo/common/types.h>\n#include <svo/common/frame.h>\n\nnamespace svo {\n\ntypedef Eigen::Matrix<FloatType, 2, Eigen::Dynamic, Eigen::ColMajor> UvCache;\ntypedef Eigen::Matrix<FloatType, 3, Eigen::Dynamic, Eigen::ColMajor> XyzRefCache;\ntypedef Eigen::Matrix<FloatType, 6, Eigen::Dynamic, Eigen::ColMajor> JacobianProjCache;\ntypedef Eigen::Matrix<FloatType, 8, Eigen::Dynamic, Eigen::ColMajor> JacobianCache;\ntypedef Eigen::Matrix<FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> ResidualCache;\ntypedef Eigen::Matrix<bool, Eigen::Dynamic, 1, Eigen::ColMajor> VisibilityMask;\ntypedef Eigen::Matrix<FloatType, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> RefPatchCache;\n\n/// Optimize the pose of the frame by minimizing the photometric error of feature patches.\nclass SparseImgAlign : public SparseImgAlignBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<SparseImgAlign> Ptr;\n\npublic:\n  SparseImgAlign(\n      SolverOptions optimization_options,\n      SparseImgAlignOptions options);\n\n  void setPatchSizeSideEffects()\n  {\n    // no side effects\n  }\n\n  size_t run(const FrameBundle::Ptr& ref_frames,\n             const FrameBundle::Ptr& cur_frames);\n\nprivate:\n  // caches:\n  bool have_cache_ = false;\n  std::vector< std::vector<size_t> > fts_vec_;\n  UvCache uv_cache_; //<! containts feature coordinates in reference image (size 2 x #Patches)\n  XyzRefCache xyz_ref_cache_; //!< contains 3d feature location in IMU frame (size 3 x #Patches)\n  JacobianProjCache jacobian_proj_cache_; //!< containts 2x6 Jacobians (d proj(X))/(d xi) (size 2 x 6 x #Patches)\n  JacobianCache jacobian_cache_; //<! contains 1x8 jacobians (pose and illumination model) (size 8 x AreaPatch*#Patches)\n  ResidualCache residual_cache_; //<! residuals (size AreaPatch x #Patches)\n  VisibilityMask visibility_mask_;//<! is Patch visible in current image? (size 1 x #Patches)\n  RefPatchCache ref_patch_cache_; //<! residuals (size AreaPatch x #Patches)\n\nprotected:\n  /// Warp the (cur)rent image such that it aligns with the (ref)erence image\n  double evaluateError(\n      const SparseImgAlignState &state,\n      HessianMatrix* H,\n      GradientVector* g);\n\n  void update(\n      const SparseImgAlignState& old_model,\n      const UpdateVector& dx,\n      SparseImgAlignState& new_model);\n\n  void applyPrior(const SparseImgAlignState& current_model);\n\n  virtual void finishIteration();\n};\n\nnamespace sparse_img_align_utils {\n\nvoid extractFeaturesSubset(\n    const Frame& ref_frame,\n    const int max_level,\n    const int patch_size_wb,             // patch size + border (usually border = 2 for gradiant)\n    std::vector<size_t>& fts);\n\n// Fills UvCache (needed for extraction of refpatch extraction at every pyramid level),\n// XyzRefCache (needed at every optimization step for reprojection) and\n// JacobianProjCache (needed at every pyramid level)\nvoid precomputeBaseCaches(\n    const Frame& ref_frame,\n    const std::vector<size_t>& fts,\n    const bool use_pinhole_distortion,\n    size_t& feature_counter,\n    UvCache& uv_cache,\n    XyzRefCache& xyz_ref_cache,\n    JacobianProjCache& jacobian_proj_cache);\n\n// Fills JacobianCache and RefPatchCache at every level and sets have_cache_ to true\nvoid precomputeJacobiansAndRefPatches(\n    const FramePtr& ref_frame,\n    const UvCache& uv_cache,\n    const JacobianProjCache& jacobian_proj_cache,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    bool estimate_alpha, bool estimate_beta,\n    size_t& feature_counter,\n    JacobianCache& jacobian_cache,\n    RefPatchCache& ref_patch_cache);\n\n// Fills ResidualCache and VisibilityMask\nvoid computeResidualsOfFrame(\n    const FramePtr& cur_frame,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    const Transformation& T_cur_ref,\n    const float alpha,\n    const float beta,\n    const RefPatchCache& ref_patch_cache,\n    const XyzRefCache& xyz_ref_cache,\n    size_t& feature_counter,\n    std::vector<Vector2d>* match_px,\n    ResidualCache& residual_cache,\n    VisibilityMask& visibility_mask\n    );\n\n// Compute Hessian and gradient\nFloatType computeHessianAndGradient(\n    const JacobianCache& jacobian_cache,\n    const ResidualCache& residual_cache,\n    const VisibilityMask& visibility_mask,\n    const float weight_scale,\n    const vk::solver::WeightFunctionPtr& weight_function,\n    SparseImgAlign::HessianMatrix* H,\n    SparseImgAlign::GradientVector* g);\n\n\n// Experimental. Computes residuals and Hessian at the same time. No significant speedup was observed.\nfloat computeResidualHessianGradient(\n    const FramePtr& cur_frame,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    const Transformation& T_cur_ref,\n    const float alpha,\n    const float beta,\n    const RefPatchCache& ref_patch_cache,\n    const XyzRefCache& xyz_ref_cache,\n    const JacobianCache& jacobian_cache,\n    const float weight_scale,\n    const vk::solver::WeightFunctionPtr& weight_function,\n    SparseImgAlign::HessianMatrix* H,\n    SparseImgAlign::GradientVector* g,\n    size_t& feature_counter\n    );\n} // namespace sparse_img_align_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/sparse_img_align_base.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <vikit/solver/mini_least_squares_solver.h>\n#include <vikit/solver/robust_cost.h>\n#include <vikit/performance_monitor.h>\n\n#include <svo/common/types.h>\n#include <svo/common/frame.h>\n\nnamespace svo {\n\n//using namespace Eigen;\nusing Eigen::Vector2i;\nusing Eigen::Vector2f;\nusing Eigen::Vector2d;\nusing Eigen::Vector3d;\nusing Eigen::Matrix2f;\nusing Eigen::Matrix2d;\nusing Eigen::Matrix3d;\nusing Eigen::Matrix;\n\ntypedef Eigen::Matrix<double, 8, 8> Matrix8d;\ntypedef Eigen::Matrix<double, 8, 1> Vector8d;\ntypedef Eigen::Matrix<FloatType,2,1> Vector2ft;\ntypedef Eigen::Matrix<FloatType,3,1> Vector3ft;\ntypedef Eigen::Matrix<FloatType,8,1> Vector8ft;\n\n/// Sparse Image Alignment Options\nstruct SparseImgAlignOptions\n{\n  int max_level = 4;\n  int min_level = 1;\n  bool estimate_illumination_gain = false;\n  bool estimate_illumination_offset = false;\n  bool use_distortion_jacobian = false;\n  bool robustification = false;\n  double weight_scale = 10;\n};\n\n/// State to be estimated\nstruct SparseImgAlignState\n{\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  Transformation T_icur_iref;     ///< Relative transformation between last and current frame\n  double alpha = 0.0;  ///< Affine illumination model multiplicative parameter\n  double beta = 0.0;   ///< Affine illumination model additive parameter\n  // TODO: if we have multiple frames, we should have alpha&beta for every frame individually\n};\n\n/// Optimize the pose of the frame by minimizing the photometric error of feature patches.\nclass SparseImgAlignBase : public vk::solver::MiniLeastSquaresSolver<8, SparseImgAlignState, SparseImgAlignBase>\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<SparseImgAlignBase> Ptr;\n  typedef vk::solver::MiniLeastSquaresSolverOptions SolverOptions;\n\n  SparseImgAlignBase(\n      SolverOptions optimization_options,\n      SparseImgAlignOptions options);\n\n  virtual size_t run(const FrameBundle::Ptr& ref_frames,\n             const FrameBundle::Ptr& cur_frames) = 0;\n\n  static SolverOptions getDefaultSolverOptions();\n\n  void setWeightedPrior(\n      const Transformation& T_cur_ref_prior,\n      const double alpha_prior,\n      const double beta_prior,\n      const double lambda_rot,\n      const double lambda_trans,\n      const double lambda_alpha,\n      const double lambda_beta);\n\n  template<class derived>\n  void setPatchSize(size_t patch_size)\n  {\n    patch_size_ = patch_size;\n    border_size_ = 1;\n    patch_size_with_border_ = patch_size_ + 2*border_size_;\n    patch_area_ = patch_size_*patch_size_;\n    static_cast<derived*>(this)->setPatchSizeSideEffects();\n  }\n\n  /// The derived class has to specify the necessary modifications (e.g. memory allocation)\n  /// in case the patchsize is changed.\n  virtual void setPatchSizeSideEffects() = 0;\n\n  /// Set number of features used for the alignment. If a number is <= 0 all features are used\n  /// Specifying a number gives you the control about the performance of the alignment.\n  /// Having an alignment running over 600 or 100 features doesn't make that much a difference\n  inline void setMaxNumFeaturesToAlign(int num)\n  {\n    max_num_features_ = num;\n  }\n\n  /// Set inital value for illumination estimation multiplicative parameter\n  inline void setAlphaInitialValue(double alpha_init)\n  {\n    alpha_init_ = alpha_init;\n  }\n\n  /// Set inital value for illumination estimation additive parameter\n  inline void setBetaInitialValue(double beta_init)\n  {\n    beta_init_ = beta_init;\n  }\n\n  /// Set compensation\n  inline void setCompensation(const bool do_compensation)\n  {\n    options_.estimate_illumination_gain = do_compensation;\n    options_.estimate_illumination_offset = do_compensation;\n  }\n\n  /// Warp the (cur)rent image such that it aligns with the (ref)erence image\n  virtual double evaluateError(\n      const SparseImgAlignState &state,\n      HessianMatrix* H,\n      GradientVector* g) = 0;\n\n  void update(\n      const SparseImgAlignState& old_model,\n      const UpdateVector& dx,\n      SparseImgAlignState& new_model);\n\n  void applyPrior(const SparseImgAlignState& current_model);\n\n  virtual void finishIteration() {}\n\n  int patch_size_;\n  int border_size_;\n  int patch_size_with_border_;\n  int patch_area_;\n  static constexpr int kJacobianSize = 8;\n  static constexpr int kHessianTriagN = 36; // Nr elements of the upper triangular part of the Hessian\n\nprotected:\n  SparseImgAlignOptions options_;\n  FrameBundle::Ptr ref_frames_; //!< reference frame, has depth for gradient pixels.\n  FrameBundle::Ptr cur_frames_; //!< only the image is known!\n  Transformation T_iref_world_; //!< Pose of reference frame's IMU in world coordinates\n  int level_; //!< current pyramid level on which the optimization runs.\n  double prior_lambda_rot_;\n  double prior_lambda_trans_;\n  double prior_lambda_alpha_;\n  double prior_lambda_beta_;\n  int max_num_features_ = -1; //!< number of features used for alignment (if -1, all are used)\n  double alpha_init_ = 0.0;\n  double beta_init_ = 0.0;\n  vk::solver::WeightFunctionPtr weight_function_;\n  double weight_scale_;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/sparse_img_align_device_utils.cuh",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <cstdlib> // size_t\n\n#include <Eigen/Dense>\n\n#include <imp/cu_core/cu_linearmemory.cuh> // LinearMemory\n#include <imp/cu_core/cu_matrix.cuh>\n#include <imp/cu_core/cu_pinhole_camera.cuh>\n#include <imp/cu_core/cu_texture2d.cuh>\n#include <imp/cu_imgproc/image_pyramid.hpp>\n#include <imp/cu_core/cu_image_gpu.cuh>\n\n#include <svo/img_align/gpu_types_cuda.h>\n#include <svo/img_align/sparse_img_align_base.h>\n\nnamespace svo {\n\ntypedef imp::cu::LinearMemory<FloatPixelGpu> CuLinearMemoryFloat;\ntypedef imp::cu::LinearMemory<Float2PixelGpu> CuLinearMemoryFloat2;\ntypedef imp::cu::LinearMemory<Float3PixelGpu> CuLinearMemoryFloat3;\ntypedef imp::cu::LinearMemory<UIntPixelGpu> CuLinearMemoryUInt;\ntypedef imp::cu::LinearMemory<BoolPixelGpu> CuLinearMemoryBool;\ntypedef imp::LinearMemory<FloatPixelGpu> LinearMemoryFloat;\ntypedef imp::LinearMemory<Float2PixelGpu> LinearMemoryFloat2;\ntypedef imp::LinearMemory<Float3PixelGpu> LinearMemoryFloat3;\ntypedef imp::LinearMemory<UIntPixelGpu> LinearMemoryUInt;\n\n/**\n * @brief The GpuCacheHandler class handels the dynamic memory allocation.\n * In order to reduce the number of memory reallocations, memory is only reallocated\n * if the current memory is not sufficiently large.\n */\nclass GpuCacheHandler\n{\npublic:\n  GpuCacheHandler();\n  ~GpuCacheHandler() = default;\n  GpuCacheHandler(const size_t patch_area);\n\n  void setPatchArea(const size_t patch_area);\n  void reserveFeatureCapacity(const size_t capacity);\n  void reserveReductionCacheCapacity(const size_t capacity);\n  inline void copyReductionCacheDeviceToHost();\n\n  inline CuLinearMemoryFloat2& uv() const {return *uv_cache_;}\n  inline CuLinearMemoryFloat3& xyzRef() const {return *xyz_ref_cache_;}\n  inline CuLinearMemoryFloat& jacProj() const {return *jacobian_proj_cache_;}\n  inline CuLinearMemoryFloat& jacobian() const {return *jacobian_cache_;}\n  inline CuLinearMemoryFloat& residual() const {return *residual_cache_;}\n  inline CuLinearMemoryBool& visibility() const {return *visibility_mask_;}\n  inline CuLinearMemoryFloat& refPatch() const {return *ref_patch_cache_;}\n  inline CuLinearMemoryFloat& hessianDevice() const {return *hessian_reduction_cache_;}\n  inline CuLinearMemoryFloat& gradientDevice() const {return *gradient_reduction_cache_;}\n  inline CuLinearMemoryFloat& chi2Device() const {return *chi2_reduction_cache_;}\n  inline CuLinearMemoryUInt& nrVisibleDevice() const {return *nr_visible_cache_;}\n  inline CuLinearMemoryFloat& disparity() const {return *disparity_cache_;}\n  inline LinearMemoryFloat& hessianHost() const {return *hessian_reduction_cache_host_;}\n  inline LinearMemoryFloat& gradientHost() const {return *gradient_reduction_cache_host_;}\n  inline LinearMemoryFloat& chi2Host() const {return *chi2_reduction_cache_host_;}\n  inline LinearMemoryUInt& nrVisibleHost() const {return *nr_visible_cache_host_;}\n\n\nprivate:\n  typedef CuLinearMemoryFloat2 UvCache;\n  typedef CuLinearMemoryFloat3 XyzRefCache;\n  typedef CuLinearMemoryFloat JacobianProjCache;\n  typedef CuLinearMemoryFloat JacobianCache;\n  typedef CuLinearMemoryFloat ResidualCache;\n  typedef CuLinearMemoryBool VisibilityMask;\n  typedef CuLinearMemoryFloat RefPatchCache;\n  typedef CuLinearMemoryFloat HessianReductionCache;\n  typedef CuLinearMemoryFloat GradientReductionCache;\n  typedef CuLinearMemoryFloat Chi2ReductionCache;\n  typedef CuLinearMemoryUInt NrVisibleCache;\n  typedef CuLinearMemoryFloat DistparitiyCache;\n  typedef LinearMemoryFloat HessianReductionCacheHost;\n  typedef LinearMemoryFloat GradientReductionCacheHost;\n  typedef LinearMemoryFloat Chi2ReductionCacheHost;\n  typedef LinearMemoryUInt NrVisibleCacheHost;\n\n  template <typename T> using UPtr  = std::unique_ptr<T>;\n\npublic:\n  static constexpr size_t kJacStride = SparseImgAlignBase::kJacobianSize;\n  static constexpr size_t kHessianTriagStride = SparseImgAlignBase::kHessianTriagN;\n  static constexpr size_t kJacProjStride = 12;\n  static constexpr size_t kMaxStorageSurplus = 1000;\n\nprivate:\n  size_t patch_area_;\n  size_t feature_capacity_;\n  size_t reduction_cache_capacity_;\n\n  UPtr<UvCache> uv_cache_;\n  UPtr<XyzRefCache> xyz_ref_cache_;\n  UPtr<JacobianProjCache> jacobian_proj_cache_;\n  UPtr<JacobianCache> jacobian_cache_;\n  UPtr<ResidualCache> residual_cache_;\n  UPtr<VisibilityMask> visibility_mask_;\n  UPtr<RefPatchCache> ref_patch_cache_;\n  UPtr<HessianReductionCache> hessian_reduction_cache_;\n  UPtr<GradientReductionCache> gradient_reduction_cache_;\n  UPtr<Chi2ReductionCache> chi2_reduction_cache_;\n  UPtr<NrVisibleCache> nr_visible_cache_;\n  UPtr<DistparitiyCache> disparity_cache_;\n  UPtr<HessianReductionCacheHost> hessian_reduction_cache_host_;\n  UPtr<GradientReductionCacheHost> gradient_reduction_cache_host_;\n  UPtr<Chi2ReductionCacheHost> chi2_reduction_cache_host_;\n  UPtr<NrVisibleCacheHost> nr_visible_cache_host_;\n};\n\n/**\n * @brief The GPUProperties class queries the GPU device properties upon\n * instantiation.\n */\nclass GPUProperties\n{\npublic:\n  GPUProperties()\n  {\n    int device;\n    cudaError cu_err = cudaGetDevice(&device);\n    if (cu_err != cudaSuccess)\n      throw std::runtime_error(\"Unable to load GPU device\");\n\n    cu_err = cudaGetDeviceProperties(&prop_, device);\n    if (cu_err != cudaSuccess)\n      throw std::runtime_error(\"Unable to load GPU device properties\");\n  }\n\n  ~GPUProperties() = default;\n\npublic:\n\n  inline int maxGridSizeX() const {return prop_.maxGridSize[0];}\n  inline int maxThreadsPerBlock() const {return prop_.maxThreadsPerBlock;}\n\nprivate:\n  cudaDeviceProp prop_;\n};\n\nnamespace sparse_img_align_device_utils {\n\nvoid precomputeBaseCaches(\n    std::vector<Float2TypeGpu>& uv_cache,\n    std::vector<Float3TypeGpu>&  xyz_ref_cache,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr>& cu_T_imu_cam_bundle,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr>& cu_T_cam_imu_bundle,\n    const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n    const size_t& nbr_fts_to_track,\n    GpuCacheHandler& gpu_cache);\n\nvoid precomputeJacobiansAndRefPatches(\n    const std::vector<imp::ImagePyramid8uC1::Ptr>& ref_pyramid,\n    const int level,\n    const int patch_size,\n    const bool estimate_alpha,\n    const bool estimate_beta,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    GpuCacheHandler& gpu_cache);\n\nvoid precomputeJacobiansAndRefPatches(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr> >& ref_pyramid,\n    const int level,\n    const int patch_size,\n    const bool estimate_alpha,\n    const bool estimate_beta,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    GpuCacheHandler& gpu_cache);\n\nvoid computeResidualsOfFrame(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr>>& cur_pyramid,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>>& cu_T_cur_ref_bundle,\n    const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    const int level,\n    const int patch_size,\n    const bool estimate_alpha,\n    const bool estimate_beta,\n    GpuCacheHandler& gpu_cache);\n\nvoid computeNumBlocksAndThreadsReduction(\n    const size_t nr_features, const size_t patch_area,\n    const GPUProperties& gpu_props,\n    int &num_blocks, int &num_threads);\n\nFloatTypeGpu computeHessianAndGradient(\n    SparseImgAlignBase::HessianMatrix* H,\n    SparseImgAlignBase::GradientVector* g,\n    const size_t nr_elements, const size_t patch_area,\n    GpuCacheHandler& gpu_cache,\n    const int num_blocks, const int num_threads);\n\n/**\n * @brief computeDisparity computes the median distparity (check .cu file for more details) for\n * all the sucessfully reprojected features between the current and the reference frames.\n * It must be called after the image alignment has converged because it uses the\n * visibility cache to check if a features are correctly reprojected.\n * Possible extensions:\n * - We could simply check the disparity for all features without checking if\n * they are reprojected into the field of view of the current image.\n * - Calculate the median on the GPU?\n */\nFloatTypeGpu computeDisparity(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr>>& cur_pyramid,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>>& cu_T_cur_ref_bundle,\n    const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    const size_t total_number_of_features,\n    GpuCacheHandler& gpu_cache);\n\n} // namespace sparse_img_align_host_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/include/svo/img_align/sparse_img_align_gpu.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#pragma once\n\n#include <svo/img_align/sparse_img_align_base.h>\n\n#include <vikit/solver/robust_cost.h>\n#include <vikit/performance_monitor.h>\n#include <imp/cu_imgproc/image_pyramid.hpp>\n#include <imp/cu_core/cu_image_gpu.cuh>\n#include <imp/cu_core/cu_matrix.cuh>\n#include <imp/cu_core/cu_pinhole_camera.cuh>\n#include <svo/common/frame.h>\n#include <svo/img_align/sparse_img_align_device_utils.cuh> //for CacheMemoryHandler\n\nnamespace svo {\n\ntypedef Eigen::Matrix<FloatTypeGpu,3,1> Vector3ftGpu;\n\nstruct HostCacheHandler\n{\n  std::vector<Float2TypeGpu> uv_cache;\n  std::vector<Float3TypeGpu> xyz_ref_cache;\n  std::vector<size_t> first_ftr_index;\n  std::vector<size_t> nbr_of_ftrs;\n  size_t total_nbr_of_ftrs;\n\n  void clear()\n  {\n    uv_cache.clear();\n    xyz_ref_cache.clear();\n    first_ftr_index.clear();\n    nbr_of_ftrs.clear();\n  }\n\n  void reserve(size_t feature_capacity)\n  {\n    uv_cache.reserve(feature_capacity);\n    xyz_ref_cache.reserve(feature_capacity);\n  }\n\n  inline size_t capacity() const\n  {\n    return uv_cache.capacity();\n  }\n\n  inline void push_uv(const float& u, const float& v)\n  {\n    uv_cache.push_back({static_cast<FloatTypeGpu>(u),static_cast<FloatTypeGpu>(v)});\n  }\n\n  inline void push_uv(const double& u, const double& v)\n  {\n    uv_cache.push_back({static_cast<FloatTypeGpu>(u),static_cast<FloatTypeGpu>(v)});\n  }\n\n  inline void push_xyz(const float& x, const float& y, const float& z)\n  {\n    xyz_ref_cache.push_back({static_cast<FloatTypeGpu>(x), static_cast<FloatTypeGpu>(y),\n                             static_cast<FloatTypeGpu>(z)});\n  }\n\n  inline void push_xyz(const double& x, const double& y, const double& z)\n  {\n    xyz_ref_cache.push_back({static_cast<FloatTypeGpu>(x), static_cast<FloatTypeGpu>(y),\n                             static_cast<FloatTypeGpu>(z)});\n  }\n};\n\n/// Optimize the pose of the frame by minimizing the photometric error of feature patches.\nclass SparseImgAlignGpu : public SparseImgAlignBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  typedef std::shared_ptr<SparseImgAlignGpu> Ptr;\n\npublic:\n  SparseImgAlignGpu(\n      SolverOptions optimization_options,\n      SparseImgAlignOptions options);\n\n  void setPatchSizeSideEffects()\n  {\n    gpu_cache_.setPatchArea(patch_area_);\n  }\n\n  size_t run(const FrameBundle::Ptr& ref_frames,\n             const FrameBundle::Ptr& cur_frames);\n\n  /**\n   * @brief getMedianDisparity returns the median disparty for all features between the current frame and the\n   * reference frame. The value is updated when calling sparse_img_align_device_utils::computeDisparity()\n   * (see .cpp file)\n   */\n  inline FloatTypeGpu getMedianDisparity() {return median_disparity_;}\n\nprivate:\n  GPUProperties gpu_props_;\n  int num_blocks_reduce_;\n  int num_threads_reduce_;\n  bool have_cache_ = false;\n  FloatTypeGpu median_disparity_;\n\n  // data storage\n  std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr> > cu_cur_imgs_pyramid_copy_;\n  std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr> > cu_ref_imgs_pyramid_copy_;\n  // TODO: USE imp::ImagePyramid\n  //std::vector<imp::ImagePyramid8uC1::Ptr> cu_ref_pyramids_device_;\n  //std::vector<imp::ImagePyramid8uC1::Ptr> cu_cur_pyramids_device_;\n  HostCacheHandler host_cache_;\n  GpuCacheHandler gpu_cache_;\n\n  std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr> cu_T_imu_cam_bundle_;\n  std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr> cu_T_cam_imu_bundle_;\n  std::vector<imp::cu::PinholeCamera::Ptr> cu_camera_bundle_;\n\n  std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>> cu_T_cur_ref_bundle_;\n\nprotected:\n  /// Warp the (cur)rent image such that it aligns with the (ref)erence image\n  double evaluateError(\n      const SparseImgAlignState &state,\n      HessianMatrix* H,\n      GradientVector* g);\n};\n\nnamespace sparse_img_align_host_utils {\n\nvoid extractFeaturesSubset(const Frame& ref_frame,\n                           const int max_level,\n                           const int patch_size_wb, // patch size + border (usually border=2 for gradient),\n                           size_t& nr_fts_extracted,\n                           HostCacheHandler& host_cache);\n\n} // namespace sparse_img_align_host_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_img_align</name>\n  <description>\n    SVO image align module used for direct image alignment\n  </description>\n  <version>0.0.1</version>\n  <license>tbd</license>\n\n  <author>Christian Forster</author>\n  <author>Manuel Werlberger</author>\n  <author>Michael Gassner</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>svo_cmake</depend>\n  <depend>svo_common</depend>\n  <depend>svo_direct</depend>\n  <depend>glog_catkin</depend>\n  <depend>eigen_catkin</depend>\n  <depend>cuda_catkin</depend>\n  <depend>vikit_solver</depend>\n  <depend>vikit_ros</depend>\n\n  <test_depend>gtest</test_depend>\n  <depend>eigen_checks</depend>\n</package>\n"
  },
  {
    "path": "svo_img_align/src/frame_gpu.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/img_align/frame_gpu.h>\n\n#include <algorithm>\n#include <stdexcept>\n#include <fast/fast.h>\n#include <vikit/math_utils.h>\n#include <vikit/vision.h>\n\n/// @todo move to camera.h ?\n#ifndef SVO_USE_VIKIT_CAMERA\n# include <aslam/cameras/camera-pinhole.h>\n# include <aslam/cameras/camera-unified-projection.h>\n# include <aslam/cameras/camera-omni.h>\n#endif\n#include <imp/bridge/opencv/cu_cv_bridge.hpp>\n\n#include <svo/common/logging.h>\n#include <svo/common/point.h>\n#include <svo/common/camera.h>\n\n\nnamespace svo {\n\n\nFrameGpu::FrameGpu(\n    const CameraPtr& cam,\n    const cv::Mat& img,\n    const uint64_t timestamp_ns,\n    size_t n_pyr_levels)\n  : Frame(cam, img, timestamp_ns, n_pyr_levels)\n{ }\n\nFrameGpu::FrameGpu(\n    const int id,\n    const uint64_t timestamp_ns,\n    const CameraPtr& cam,\n    const Transformation& T_world_cam)\n  : Frame(id, timestamp_ns, cam, T_world_cam)\n{ }\n\nFrameGpu::~FrameGpu()\n{ }\n\nvoid FrameGpu::initGpuData(imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr& cu_T_imu_cam,\n                           imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr& cu_T_cam_imu,\n                           imp::cu::PinholeCamera::Ptr& cu_camera)\n{\n  // Copy image pyramid to GPU\n  // TODO: USE imp::ImagePyramid\n  cu_img_pyramid_copy_.resize(img_pyr_.size());\n  for(int i = 0; i < static_cast<int>(img_pyr_.size()); ++i)\n  {\n    cu_img_pyramid_copy_.at(i) = std::make_shared<imp::cu::ImageGpu8uC1>(\n          imp::cu::ImageGpu8uC1(imp::ImageCv8uC1(img_pyr_.at(i))));\n\n  }\n\n  // Initialize transformations\n  cu_T_imu_cam_ = cu_T_imu_cam;\n  cu_T_cam_imu_ = cu_T_cam_imu;\n  cu_camera_ = cu_camera;\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/src/sparse_img_align.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/img_align/sparse_img_align.h>\n\n#include <algorithm>\n#include <random> // std::mt19937\n\n#include <opencv2/highgui/highgui.hpp>\n\n#include <vikit/vision.h>\n#include <vikit/math_utils.h>\n\n#include <svo/common/logging.h>\n#include <svo/common/point.h>\n#include <svo/common/camera.h>\n#include <svo/common/seed.h>\n\nnamespace svo {\n\nSparseImgAlign::SparseImgAlign(\n    SolverOptions optimization_options,\n    SparseImgAlignOptions options)\n  : SparseImgAlignBase(optimization_options,options)\n{\n  setPatchSize<SparseImgAlign>(4);\n}\n\nsize_t SparseImgAlign::run(\n    const FrameBundle::Ptr& ref_frames,\n    const FrameBundle::Ptr& cur_frames)\n{\n  CHECK(!ref_frames->empty());\n  CHECK_EQ(ref_frames->size(), cur_frames->size());\n\n  // Select all visible features and subsample if required.\n  fts_vec_.clear();\n  size_t n_fts_to_track = 0;\n  for(auto frame : ref_frames->frames_)\n  {\n    std::vector<size_t> fts;\n    sparse_img_align_utils::extractFeaturesSubset(\n          *frame, options_.max_level, patch_size_with_border_, fts);\n    n_fts_to_track += fts.size();\n    fts_vec_.push_back(fts);\n  }\n  SVO_DEBUG_STREAM(\"Img Align: Tracking \"<<n_fts_to_track<<\" features.\");\n  if(n_fts_to_track == 0)\n  {\n    SVO_ERROR_STREAM(\"SparseImgAlign: no features to track!\");\n    return 0;\n  }\n\n  // set member variables\n  ref_frames_ = ref_frames;\n  cur_frames_ = cur_frames;\n  T_iref_world_ = ref_frames->at(0)->T_imu_world();\n\n  // prepare caches\n  uv_cache_.resize(Eigen::NoChange, n_fts_to_track);\n  xyz_ref_cache_.resize(Eigen::NoChange, n_fts_to_track);\n  jacobian_proj_cache_.resize(Eigen::NoChange, n_fts_to_track*2);\n  jacobian_cache_.resize(Eigen::NoChange, n_fts_to_track*patch_area_);\n  residual_cache_.resize(patch_area_, n_fts_to_track);\n  visibility_mask_.resize(n_fts_to_track, Eigen::NoChange);\n  ref_patch_cache_.resize(patch_area_, n_fts_to_track);\n\n  // the variable to be optimized is the imu-pose of the current frame\n  Transformation T_icur_iref =\n      cur_frames_->at(0)->T_imu_world() * T_iref_world_.inverse();\n\n  SparseImgAlignState state;\n  state.T_icur_iref = T_icur_iref;\n  state.alpha = alpha_init_;\n  state.beta = beta_init_;\n\n  // precompute values common to all pyramid levels\n  size_t feature_counter = 0;\n  for(size_t i=0; i<ref_frames_->size(); ++i)\n  {\n    sparse_img_align_utils::precomputeBaseCaches(\n          *ref_frames_->at(i), fts_vec_.at(i),\n          options_.use_distortion_jacobian,\n          feature_counter, uv_cache_,\n          xyz_ref_cache_, jacobian_proj_cache_);\n  }\n\n  for(level_=options_.max_level; level_>=options_.min_level; --level_)\n  {\n    mu_ = 0.1;\n    have_cache_ = false; // at every level, recompute the jacobians\n    if(solver_options_.verbose)\n      printf(\"\\nPYRAMID LEVEL %i\\n---------------\\n\", level_);\n    optimize(state);\n  }\n\n  // finished, we save the pose in the frame\n  for(auto f : cur_frames->frames_)\n  {\n    f->T_f_w_ = f->T_cam_imu()*state.T_icur_iref*T_iref_world_;\n  }\n\n  // reset initial values of illumination estimation TODO: make reset function\n  alpha_init_ = 0.0;\n  beta_init_ = 0.0;\n\n  return n_fts_to_track;\n}\n\ndouble SparseImgAlign::evaluateError(\n    const SparseImgAlignState& state,\n    HessianMatrix* H,\n    GradientVector* g)\n{\n  if(!have_cache_) // is reset at every new level.\n  {\n    size_t feature_counter = 0;\n    for(size_t i=0; i<ref_frames_->size(); ++i)\n    {\n      sparse_img_align_utils::precomputeJacobiansAndRefPatches(\n            ref_frames_->at(i), uv_cache_,\n            jacobian_proj_cache_, level_, patch_size_,\n            fts_vec_.at(i).size(),\n            options_.estimate_illumination_gain,\n            options_.estimate_illumination_offset,\n            feature_counter,\n            jacobian_cache_, ref_patch_cache_);\n    }\n    have_cache_ = true;\n  }\n\n  size_t feature_counter = 0; // used to compute the cache index\n  for(size_t i=0; i<ref_frames_->size(); ++i)\n  {\n    const Transformation T_cur_ref =\n        cur_frames_->at(i)->T_cam_imu() * state.T_icur_iref\n        * ref_frames_->at(i)->T_imu_cam();\n    std::vector<Vector2d>* match_pxs = nullptr;\n    sparse_img_align_utils::computeResidualsOfFrame(\n          cur_frames_->at(i), level_,\n          patch_size_, fts_vec_.at(i).size(), T_cur_ref,\n          state.alpha, state.beta,\n          ref_patch_cache_, xyz_ref_cache_,\n          feature_counter, match_pxs, residual_cache_, visibility_mask_);\n  }\n\n  float chi2 = sparse_img_align_utils::computeHessianAndGradient(\n        jacobian_cache_, residual_cache_,\n        visibility_mask_, weight_scale_, weight_function_, H, g);\n  return chi2;\n}\n\nvoid  SparseImgAlign::finishIteration()\n{\n  if(false)\n  {\n    const size_t cam_index = 0;\n    cv::Mat residual_image(\n          cur_frames_->at(cam_index)->img_pyr_.at(level_).size(),\n          CV_32FC1, cv::Scalar(0.0));\n    const size_t nr_features = fts_vec_.at(cam_index).size();\n    const FloatType scale = 1.0f/(1<<level_);\n    const int patch_size_wb = patch_size_ + 2*border_size_; //patch size with border\n    const FloatType patch_center_wb = (patch_size_wb - 1)/2.0f;\n\n    for(size_t i = 0; i < nr_features; ++i)\n    {\n      if(!visibility_mask_(i))\n        continue;\n\n      // compute top left coordinate of patch to be interpolated\n      const FloatType u_tl = uv_cache_(0,i)*scale - patch_center_wb;\n      const FloatType v_tl = uv_cache_(1,i)*scale - patch_center_wb;\n\n      size_t pixel_counter = 0; // is used to compute the index of the cached residual\n      for(int y = 0; y < patch_size_; ++y)\n      {\n        for(int x = 0; x < patch_size_; ++x, ++pixel_counter)\n        {\n          residual_image.at<float>(v_tl+y, u_tl+x) =\n              (residual_cache_(pixel_counter, i) + 50)/255.0;\n        }\n      }\n    }\n\n    double minval, maxval;\n    cv::minMaxLoc(residual_image, &minval, &maxval);\n    residual_image = (residual_image - minval) / (maxval - minval);\n\n    std::vector<cv::Mat> residual_image_rgb_vec({cv::Mat(residual_image.size(), CV_32FC1, cv::Scalar(1.0)),\n                                                 residual_image,\n                                                 cv::Mat(residual_image.size(), CV_32FC1, cv::Scalar(0.0))});\n    cv::Mat residual_image_rgb;\n    cv::merge(residual_image_rgb_vec, residual_image_rgb);\n\n    cv::imshow(\"residual_image\", residual_image_rgb);\n    cv::waitKey(0);\n  }\n}\n\nnamespace sparse_img_align_utils\n{\n\nvoid extractFeaturesSubset(const Frame& ref_frame,\n                           const int max_level,\n                           const int patch_size_wb, // patch_size + border (usually 2 for gradient),\n                           std::vector<size_t>& fts)\n{\n  // TODO(cfo): add seeds\n//  if(fts.size() < 100)\n//  {\n//    std::unique_lock<decltype(ref_frame->seeds_mut_)> lock(ref_frame->seeds_mut_);\n//    size_t n = 0;\n//    for(const SeedPtr& seed : ref_frame->seeds_)\n//    {\n//      if(seed->is_converged_)\n//      {\n//        fts.push_back(seed->ftr_);\n//        ++n;\n//      }\n//    }\n//    SVO_DEBUG_STREAM(\"SparseImgAlign: add \" << n << \" additional seeds.\");\n//  }\n\n  // ignore any feature point, which does not project fully in the image\n  // checking on highest level is sufficient.\n  const FloatType scale = 1.0f/(1<<max_level);\n  const cv::Mat& ref_img = ref_frame.img_pyr_.at(max_level);\n  const int rows_minus_two = ref_img.rows - 2;\n  const int cols_minus_two = ref_img.cols - 2;\n  const FloatType patch_center_wb = (patch_size_wb - 1)/2.0f;\n\n  // check if reference with patch size is within image\n  fts.reserve(ref_frame.num_features_);\n  for(size_t i = 0; i < ref_frame.num_features_; ++i)\n  {\n    if(ref_frame.landmark_vec_[i] == nullptr &&\n       ref_frame.seed_ref_vec_[i].keyframe == nullptr)\n      continue;\n    const FloatType u_tl = ref_frame.px_vec_(0,i)*scale - patch_center_wb;\n    const FloatType v_tl = ref_frame.px_vec_(1,i)*scale - patch_center_wb;\n    const int u_tl_i = std::floor(u_tl);\n    const int v_tl_i = std::floor(v_tl);\n    if(!(u_tl_i < 0\n         || v_tl_i < 0\n         || u_tl_i + patch_size_wb >= cols_minus_two\n         || v_tl_i + patch_size_wb >= rows_minus_two))\n      fts.push_back(i);\n  }\n  SVO_DEBUG_STREAM(\"Img Align: Maximum Number of Features = \" << ref_frame.num_features_);\n}\n\nvoid precomputeBaseCaches(const Frame& ref_frame,\n                          const std::vector<size_t>& fts,\n                          const bool use_distortion_jac,\n                          size_t& feature_counter,\n                          UvCache& uv_cache,\n                          XyzRefCache &xyz_ref_cache,\n                          JacobianProjCache& jacobian_proj_cache)\n{\n  const double focal_length = ref_frame.getErrorMultiplier();\n  const Vector3d ref_pos = ref_frame.pos();\n  const Transformation& T_imu_cam = ref_frame.T_imu_cam();\n  const Transformation& T_cam_imu = ref_frame.T_cam_imu();\n\n  for(const size_t i : fts)\n  {\n    uv_cache.col(feature_counter) = ref_frame.px_vec_.col(i).cast<FloatType>();\n\n    // evaluate jacobian. cannot just take the 3d points coordinate because of\n    // the reprojection errors in the reference image!!!\n\n    FloatType depth = 0;\n    if(ref_frame.landmark_vec_[i])\n    {\n      depth = ((ref_frame.landmark_vec_[i]->pos_ - ref_pos).norm());\n    }\n    else\n    {\n      const SeedRef& seed_ref = ref_frame.seed_ref_vec_[i];\n      const Position pos = seed_ref.keyframe->T_world_cam()\n          * seed_ref.keyframe->getSeedPosInFrame(seed_ref.seed_id);\n      depth = (pos - ref_pos).norm();\n    }\n\n    const Vector3d xyz_ref(ref_frame.f_vec_.col(i)*depth);\n    xyz_ref_cache.col(feature_counter) = xyz_ref.cast<FloatType>();\n    const Vector3d xyz_in_imu( T_imu_cam * xyz_ref );\n\n    Matrix<double,2,6> frame_jac;\n    if(!use_distortion_jac &&\n       ref_frame.cam()->getType() == Camera::Type::kPinhole)\n    { // only allow ignoring jacobian for pinhole projection\n      Frame::jacobian_xyz2uv_imu(T_cam_imu, xyz_in_imu, frame_jac);\n      frame_jac *= focal_length;\n    }\n    else\n    {\n      Frame::jacobian_xyz2image_imu(*ref_frame.cam(), T_cam_imu, xyz_in_imu, frame_jac);\n      frame_jac *= (-1.0);\n    }\n\n    size_t col_index = 2*feature_counter;\n    jacobian_proj_cache.col(col_index) = frame_jac.row(0).cast<FloatType>();\n    jacobian_proj_cache.col(col_index + 1) = frame_jac.row(1).cast<FloatType>();\n    ++feature_counter;\n  }\n}\n\nvoid precomputeJacobiansAndRefPatches(\n    const FramePtr& ref_frame,\n    const UvCache& uv_cache,\n    const JacobianProjCache& jacobian_proj_cache,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    bool estimate_alpha,\n    bool estimate_beta,\n    size_t& feature_counter,\n    JacobianCache& jacobian_cache,\n    RefPatchCache& ref_patch_cache)\n{\n  const cv::Mat& ref_img = ref_frame->img_pyr_.at(level);\n  const int stride = ref_img.step; // must be real stride\n  const FloatType scale = 1.0f/(1<<level);\n  const int patch_area = patch_size*patch_size;\n  const int border = 1;\n  const int patch_size_wb = patch_size + 2*border; //patch size with border\n  const int patch_area_wb = patch_size_wb*patch_size_wb;\n  const FloatType patch_center_wb = (patch_size_wb - 1)/2.0f;\n\n  // interpolate patch + border (filled in row major format)\n  FloatType interp_patch_array [patch_area_wb];\n\n  for(size_t i = 0; i < nr_features; ++i, ++feature_counter)\n  {\n    // compute top left coordinate of patch to be interpolated\n    const FloatType u_tl = uv_cache(0,feature_counter)*scale - patch_center_wb;\n    const FloatType v_tl = uv_cache(1,feature_counter)*scale - patch_center_wb;\n\n    const int u_tl_i = std::floor(u_tl);\n    const int v_tl_i = std::floor(v_tl);\n\n    // compute bilateral interpolation weights for reference image\n    const FloatType subpix_u_tl = u_tl - u_tl_i;\n    const FloatType subpix_v_tl = v_tl - v_tl_i;\n    const FloatType wtl = (1.0 - subpix_u_tl) * (1.0 - subpix_v_tl);\n    const FloatType wtr = subpix_u_tl * (1.0 - subpix_v_tl);\n    const FloatType wbl = (1.0 - subpix_u_tl) * subpix_v_tl;\n    const FloatType wbr = subpix_u_tl * subpix_v_tl;\n    const int jacobian_proj_col = 2*feature_counter;\n\n    // interpolate patch with border\n    size_t pixel_counter = 0;\n    for(int y = 0; y < patch_size_wb; ++y)\n    {\n      // reference image pointer (openCv stores data in row major format)\n      uint8_t* r =\n          static_cast<uint8_t*>(ref_img.data)\n          + (v_tl_i + y)*stride\n          + u_tl_i;\n      for(int x = 0; x < patch_size_wb; ++x, ++r, ++pixel_counter)\n      {\n        // precompute interpolated reference patch color\n        interp_patch_array[pixel_counter] = wtl*r[0] + wtr*r[1] + wbl*r[stride] + wbr*r[stride+1];\n      }\n    }\n\n    // fill ref_patch_cache and jacobian_cache\n    pixel_counter = 0;\n    for(int y = 0; y < patch_size; ++y)\n    {\n      for(int x = 0; x < patch_size; ++x, ++pixel_counter)\n      {\n        int offset_center = (x + border) + patch_size_wb*(y + border);\n        ref_patch_cache(pixel_counter,feature_counter) = interp_patch_array[offset_center];\n\n        // we use the inverse compositional: thereby we can take the gradient\n        // always at the same position.\n        const FloatType dx = 0.5f*(interp_patch_array[offset_center + 1]\n            -interp_patch_array[offset_center - 1]);\n        const FloatType dy = 0.5f*(interp_patch_array[offset_center + patch_size_wb]\n            -interp_patch_array[offset_center - patch_size_wb]);\n\n        // cache the jacobian\n        int jacobian_col = feature_counter*patch_area + pixel_counter;\n        jacobian_cache.block<6,1>(0,jacobian_col) =\n            (dx*jacobian_proj_cache.col(jacobian_proj_col) + dy*jacobian_proj_cache.col(jacobian_proj_col + 1))*scale;\n        jacobian_cache(6,jacobian_col) = estimate_alpha ? -(interp_patch_array[offset_center]) : 0.0;\n        jacobian_cache(7,jacobian_col) = estimate_beta  ? -1.0 : 0.0;\n      }\n    }\n  }\n}\n\nvoid computeResidualsOfFrame(\n    const FramePtr& cur_frame,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    const Transformation& T_cur_ref,\n    const float alpha,\n    const float beta,\n    const RefPatchCache& ref_patch_cache,\n    const XyzRefCache& xyz_ref_cache,\n    size_t& feature_counter,\n    std::vector<Vector2d>* match_pxs,\n    ResidualCache& residual_cache,\n    VisibilityMask& visibility_mask)\n{\n  const cv::Mat& cur_img = cur_frame->img_pyr_.at(level);\n  const int stride = cur_img.step;\n  const FloatType scale = 1.0f/(1<<level);\n  const int patch_area = patch_size*patch_size;\n  const FloatType patch_center = (patch_size - 1)/2.0f;\n\n  FloatType total_intensity = 0.0;\n\n  for(size_t i = 0; i < nr_features; ++i, ++feature_counter)\n  {\n    Vector3ft xyz_ref = xyz_ref_cache.col(feature_counter);\n    const Vector3d xyz_cur(T_cur_ref * xyz_ref.cast<double>());\n    if(cur_frame->cam()->getType() ==\n         vk::cameras::CameraGeometryBase::Type::kPinhole &&\n       xyz_cur.z() < 0.0)\n    {\n      visibility_mask(feature_counter) = false;\n      continue;\n    }\n\n    Eigen::Vector2d uv_cur;\n    cur_frame->cam()->project3(xyz_cur, &uv_cur);\n    const Vector2ft uv_cur_pyr = uv_cur.cast<FloatType>() * scale;\n\n    // compute top left coordinate of patch to be interpolated\n    const FloatType u_tl = uv_cur_pyr[0] - patch_center;\n    const FloatType v_tl = uv_cur_pyr[1] - patch_center;\n\n    // check if projection is within the image\n    if(u_tl  < 0.0\n       || v_tl  < 0.0\n       || u_tl + patch_size + 2.0 >= cur_img.cols\n       || v_tl + patch_size + 2.0 >= cur_img.rows)\n    {\n      visibility_mask(feature_counter) = false;\n      continue;\n    }\n    else\n    {\n      visibility_mask(feature_counter) = true;\n    }\n\n    const int u_tl_i = std::floor(u_tl);\n    const int v_tl_i = std::floor(v_tl);\n\n    // compute bilateral interpolation weights for the current image\n    const FloatType subpix_u_tl = u_tl-u_tl_i;\n    const FloatType subpix_v_tl = v_tl-v_tl_i;\n    const FloatType wtl = (1.0-subpix_u_tl) * (1.0-subpix_v_tl);\n    const FloatType wtr = subpix_u_tl * (1.0-subpix_v_tl);\n    const FloatType wbl = (1.0-subpix_u_tl) * subpix_v_tl;\n    const FloatType wbr = subpix_u_tl * subpix_v_tl;\n\n    size_t pixel_counter = 0; // is used to compute the index of the cached residual\n    float total_res = 0.0;\n    for(int y = 0; y < patch_size; ++y)\n    {\n      uint8_t* cur_img_ptr =\n          static_cast<uint8_t*>(cur_img.data) + (v_tl_i + y) * stride + u_tl_i;\n\n      for(int x = 0; x < patch_size; ++x, ++pixel_counter, ++cur_img_ptr)\n      {\n        // compute residual, with bilinear interpolation\n        FloatType intensity_cur =\n            wtl*cur_img_ptr[0]\n            + wtr*cur_img_ptr[1]\n            + wbl*cur_img_ptr[stride]\n            + wbr*cur_img_ptr[stride+1];\n        FloatType res = static_cast<FloatType>(intensity_cur * (1.0+alpha) + beta)\n            - ref_patch_cache(pixel_counter, feature_counter);\n        residual_cache(pixel_counter,feature_counter) = res;\n\n        // for camera control:\n        total_res += intensity_cur - static_cast<float>(ref_patch_cache(pixel_counter,feature_counter));\n        total_intensity += intensity_cur;\n      }\n    }\n  }\n}\n\nFloatType computeHessianAndGradient(\n    const JacobianCache& jacobian_cache,\n    const ResidualCache& residual_cache,\n    const VisibilityMask& visibility_mask,\n    const float weight_scale,\n    const vk::solver::WeightFunctionPtr& weight_function,\n    SparseImgAlign::HessianMatrix* H,\n    SparseImgAlign::GradientVector* g)\n{\n  float chi2 = 0.0;\n  size_t n_meas = 0;\n  const size_t patch_area = residual_cache.rows();\n  const size_t mask_size = visibility_mask.size();\n\n  for(size_t i = 0; i < mask_size; ++i)\n  {\n    if(visibility_mask(i)==true)\n    {\n      size_t patch_offset = i*patch_area;\n      for(size_t j = 0; j < patch_area; ++j)\n      {\n        FloatType res = residual_cache(j,i);\n\n        // Robustification.\n        float weight = 1.0;\n        if(weight_function)\n          weight = weight_function->weight(res/weight_scale);\n\n        chi2 += res*res*weight;\n        ++n_meas;\n\n        // Compute Jacobian, weighted Hessian and weighted \"steepest descend images\" (times error).\n        const Vector8ft J_ft = jacobian_cache.col(patch_offset + j);\n        const Vector8d J_d = J_ft.cast<double>();\n        H->noalias() += J_d*J_d.transpose()*weight;\n        g->noalias() -= J_d*res*weight;\n      }\n    }\n  }\n\n  return chi2/n_meas;\n}\n\nfloat computeResidualHessianGradient(const FramePtr& cur_frame,\n    const size_t level,\n    const int patch_size,\n    const size_t nr_features,\n    const Transformation& T_cur_ref,\n    const float alpha,\n    const float beta,\n    const RefPatchCache& ref_patch_cache,\n    const XyzRefCache& xyz_ref_cache,\n    const JacobianCache& jacobian_cache,\n    const float weight_scale,\n    const vk::solver::WeightFunctionPtr& weight_function,\n    SparseImgAlign::HessianMatrix* H,\n    SparseImgAlign::GradientVector* g,\n    size_t& feature_counter\n    )\n{\n  const cv::Mat& cur_img = cur_frame->img_pyr_.at(level);\n  const int stride = cur_img.step;\n  const float scale = 1.0f/(1<<level);\n  const int patch_area = patch_size*patch_size;\n  const FloatType patch_center = (patch_size - 1)/2.0f;\n\n  float total_intensity = 0.0;\n  float chi2 = 0.0;\n  size_t n_meas = 0;\n\n  if(!(H && g))\n  {\n    return chi2;\n  }\n\n  for(size_t i = 0; i < nr_features; ++i, ++feature_counter)\n  {\n    Vector3ft xyz_ref = xyz_ref_cache.col(feature_counter);\n    const Vector3d xyz_cur(T_cur_ref * xyz_ref.cast<double>());\n    if(cur_frame->cam()->getType() ==\n         vk::cameras::CameraGeometryBase::Type::kPinhole &&\n       xyz_cur.z() < 0.0)\n    {\n      continue;\n    }\n    Eigen::Vector2d uv_cur;\n    cur_frame->cam()->project3(xyz_cur, &uv_cur);\n    const Vector2ft uv_cur_pyr = uv_cur.cast<FloatType>() * scale;\n\n    // compute top left coordinate of patch to be interpolated\n    const FloatType u_tl = uv_cur_pyr[0] - patch_center;\n    const FloatType v_tl = uv_cur_pyr[1] - patch_center;\n\n    // check if projection is within the image\n    if(u_tl < 0.0\n       || v_tl  < 0.0\n       || u_tl + patch_size + 2.0 >= cur_img.cols\n       || v_tl + patch_size + 2.0 >= cur_img.rows)\n    {\n      continue;\n    }\n    const int u_tl_i = std::floor(u_tl);\n    const int v_tl_i = std::floor(v_tl);\n\n    // compute bilateral interpolation weights for the current image\n    const FloatType subpix_u_tl = u_tl-u_tl_i;\n    const FloatType subpix_v_tl = v_tl-v_tl_i;\n    const FloatType wtl = (1.0-subpix_u_tl) * (1.0-subpix_v_tl);\n    const FloatType wtr = subpix_u_tl * (1.0-subpix_v_tl);\n    const FloatType wbl = (1.0-subpix_u_tl) * subpix_v_tl;\n    const FloatType wbr = subpix_u_tl * subpix_v_tl;\n\n    size_t pixel_counter = 0; // is used to compute the index of the cached residual\n    float total_res = 0.0;\n    size_t patch_offset = feature_counter*patch_area;\n    for(int y = 0; y < patch_size; ++y)\n    {\n      uint8_t* cur_img_ptr = (uint8_t*) cur_img.data + (v_tl_i + y) * stride + u_tl_i;\n\n      for(int x = 0; x < patch_size; ++x, ++pixel_counter, ++cur_img_ptr)\n      {\n        // compute residual, with bilinear interpolation\n        // TODO: check what if we just do nearest neighbour?\n        FloatType intensity_cur =\n            wtl*cur_img_ptr[0]\n            + wtr*cur_img_ptr[1]\n            + wbl*cur_img_ptr[stride]\n            + wbr*cur_img_ptr[stride+1];\n        FloatType res = static_cast<FloatType>(intensity_cur*(1.0+alpha) + beta)\n            - ref_patch_cache(pixel_counter,feature_counter);\n\n        // robustification\n        float weight = 1.0;\n        if(weight_function)\n          weight = weight_function->weight(res/weight_scale);\n\n        chi2 += res*res*weight;\n        ++n_meas;\n\n        // compute Jacobian, weighted Hessian and weighted \"steepest descend images\" (times error)\n        const Vector8ft J_ft = jacobian_cache.col(patch_offset + pixel_counter);\n        const Vector8d J_d = J_ft.cast<double>();\n        H->noalias() += J_d * J_d.transpose() * weight;\n        g->noalias() -= J_d * res * weight;\n\n        // for camera control:\n        total_res += intensity_cur - static_cast<float>(ref_patch_cache(pixel_counter,feature_counter));\n        total_intensity += intensity_cur;\n      }\n    }\n  }\n\n  return chi2/n_meas;\n}\n} // namespace sparse_img_align_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/src/sparse_img_align_base.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/img_align/sparse_img_align_base.h>\n\n#include <algorithm>\n#include <random> // std::mt19937\n\n#include <opencv2/highgui/highgui.hpp>\n\n#include <vikit/vision.h>\n#include <vikit/math_utils.h>\n\n#include <svo/common/logging.h>\n#include <svo/common/point.h>\n#include <svo/direct/depth_filter.h>\n\n\nnamespace svo {\n\nSparseImgAlignBase::SparseImgAlignBase(\n    SolverOptions optimization_options,\n    SparseImgAlignOptions options)\n  : vk::solver::MiniLeastSquaresSolver<8, SparseImgAlignState, SparseImgAlignBase>(optimization_options)\n  , options_(options)\n  , weight_function_(options_.robustification? (new vk::solver::TukeyWeightFunction):nullptr)\n  , weight_scale_(options_.weight_scale)\n{}\n\nSparseImgAlignBase::SolverOptions SparseImgAlignBase::getDefaultSolverOptions()\n{\n  SolverOptions options;\n  options.strategy = vk::solver::Strategy::GaussNewton;\n  options.max_iter = 10;\n  options.eps = 0.0005;\n  return options;\n}\n\nvoid SparseImgAlignBase::setWeightedPrior(\n    const Transformation& T_cur_ref_prior,\n    const double alpha_prior,\n    const double beta_prior,\n    const double lambda_rot,\n    const double lambda_trans,\n    const double lambda_alpha,\n    const double lambda_beta)\n{\n  prior_lambda_rot_ = lambda_rot;\n  prior_lambda_trans_ = lambda_trans;\n  prior_lambda_alpha_ = lambda_alpha;\n  prior_lambda_beta_ = lambda_beta;\n  SparseImgAlignState state;\n  state.T_icur_iref = T_cur_ref_prior;\n  state.alpha = alpha_prior;\n  state.beta = beta_prior;\n  setPrior(state, Matrix8d::Zero());\n}\n\nvoid SparseImgAlignBase::update(\n    const SparseImgAlignState& state_old,\n    const UpdateVector& dx,\n    SparseImgAlignState& state_new)\n{\n  state_new.T_icur_iref =  state_old.T_icur_iref * Transformation::exp(-dx.head<6>());\n  state_new.alpha = (state_old.alpha - dx(6))/(1.0+dx(6));\n  state_new.beta  = (state_old.beta  - dx(7))/(1.0+dx(6));\n\n  // we need to normalize from time to time otherwise rounding errors sum up\n  state_new.T_icur_iref.getRotation().toImplementation().normalize();\n}\n\nvoid SparseImgAlignBase::applyPrior(const SparseImgAlignState& state)\n{\n  if(iter_ == 0)\n  {\n    double H_max_diag_trans = 0;\n    for(size_t j=0; j<3; ++j)\n      H_max_diag_trans = std::max(H_max_diag_trans, std::fabs(H_(j,j)));\n    Matrix3d I_trans = Matrix3d::Identity()*prior_lambda_trans_*H_max_diag_trans;\n\n    double H_max_diag_rot = 0;\n    for(size_t j=3; j<6; ++j)\n      H_max_diag_rot = std::max(H_max_diag_rot, std::fabs(H_(j,j)));\n    Matrix3d I_rot = Matrix3d::Identity()*prior_lambda_rot_*H_max_diag_rot;\n\n    const double I_alpha = prior_lambda_alpha_*H_(6,6);\n    const double I_beta  = prior_lambda_beta_ *H_(7,7);\n\n    I_prior_ = Matrix8d::Zero();\n    I_prior_.block<3,3>(0,0) = I_trans;\n    I_prior_.block<3,3>(3,3) = I_rot;\n    I_prior_(6,6) = I_alpha;\n    I_prior_(7,7) = I_beta;\n  }\n\n  H_.noalias() += I_prior_;\n  g_.head<6>() += I_prior_.block<6,6>(0,0)*Transformation::log(prior_.T_icur_iref.inverse()*state.T_icur_iref);\n\n  // TODO: this is just a placeholder. derive correct solution\n  g_(6) += I_prior_(6,6)*(prior_.alpha - state.alpha);\n  g_(7) += I_prior_(7,7)*(prior_.beta  - state.beta);\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/src/sparse_img_align_device_utils.cu",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/img_align/sparse_img_align_device_utils.cuh>\n\n#include <imp/cu_core/cu_texture.cuh>\n#include <imp/cu_core/cu_utils.hpp>\n\n#include <svo/common/logging.h>\n#include <svo/img_align/sparse_img_align_base.h>\n\nnamespace svo {\n\nGpuCacheHandler::GpuCacheHandler():\n  patch_area_(0), feature_capacity_(0), reduction_cache_capacity_(0)\n{ }\n\n\nGpuCacheHandler::GpuCacheHandler(const size_t patch_area):\n  patch_area_(patch_area), feature_capacity_(0), reduction_cache_capacity_(0)\n{ }\n\nvoid GpuCacheHandler::setPatchArea(const size_t patch_area)\n{\n  patch_area_ = patch_area;\n}\n\nvoid GpuCacheHandler::reserveFeatureCapacity(const size_t capacity)\n{\n  CHECK_GT(patch_area_,0);\n  // Check if enough or to much memory is allocated.\n  if( (capacity > feature_capacity_) || (feature_capacity_ - capacity > kMaxStorageSurplus))\n  {\n    SVO_WARN_STREAM(\"Reallocate GPU memory. Changing capacity from \" << feature_capacity_ << \" to \"\n                    << capacity << \" features.\");\n    uv_cache_.reset(new UvCache(capacity));\n    xyz_ref_cache_.reset(new XyzRefCache(capacity));\n    jacobian_proj_cache_.reset(new JacobianProjCache(capacity*kJacProjStride));\n    jacobian_cache_.reset(new JacobianCache(capacity*kJacStride*patch_area_));\n    residual_cache_.reset(new ResidualCache(capacity*patch_area_));\n    visibility_mask_.reset(new VisibilityMask(capacity));\n    ref_patch_cache_.reset(new RefPatchCache(capacity*patch_area_));\n    disparity_cache_.reset(new DistparitiyCache(capacity));\n    feature_capacity_ = capacity;\n  }\n}\n\nvoid GpuCacheHandler::reserveReductionCacheCapacity(const size_t capacity)\n{\n  // Check if enough or to much memory is allocated.\n  if( (capacity > reduction_cache_capacity_) || (reduction_cache_capacity_ - capacity > kMaxStorageSurplus))\n  {\n    SVO_WARN_STREAM(\"Reallocate memory for reduction step from \" << reduction_cache_capacity_ << \" to \"\n                    << capacity << \" blocks.\");\n    hessian_reduction_cache_.reset(new HessianReductionCache(capacity*kHessianTriagStride));\n    gradient_reduction_cache_.reset(new GradientReductionCache(capacity*kJacStride));\n    chi2_reduction_cache_.reset(new GradientReductionCache(capacity));\n    nr_visible_cache_.reset(new NrVisibleCache(capacity));\n    hessian_reduction_cache_host_.reset(new HessianReductionCacheHost(capacity*kHessianTriagStride));\n    gradient_reduction_cache_host_.reset(new GradientReductionCacheHost(capacity*kJacStride));\n    chi2_reduction_cache_host_.reset(new GradientReductionCacheHost(capacity));\n    nr_visible_cache_host_.reset(new NrVisibleCacheHost(capacity));\n    reduction_cache_capacity_ = capacity;\n  }\n  else\n  {\n    // Set region of interest to the correct value to make\n    // copying from device to host possible.\n    if(nr_visible_cache_host_->roi().length() != capacity)\n    {\n      SVO_DEBUG_STREAM(\"Change region of interest of linear memory (before \"\n                       << nr_visible_cache_host_->roi().length() << \", after \"\n                       << capacity << \" elements)\");\n\n      hessian_reduction_cache_->setRoi(imp::Roi1u(0,capacity*kHessianTriagStride));\n      gradient_reduction_cache_->setRoi(imp::Roi1u(0,capacity*kJacStride));\n      chi2_reduction_cache_->setRoi(imp::Roi1u(0,capacity));\n      nr_visible_cache_->setRoi(imp::Roi1u(0,capacity));\n      hessian_reduction_cache_host_->setRoi(imp::Roi1u(0,capacity*kHessianTriagStride));\n      gradient_reduction_cache_host_->setRoi(imp::Roi1u(0,capacity*kJacStride));\n      chi2_reduction_cache_host_->setRoi(imp::Roi1u(0,capacity));\n      nr_visible_cache_host_->setRoi(imp::Roi1u(0,capacity));\n    }\n  }\n}\n\ninline void GpuCacheHandler::copyReductionCacheDeviceToHost()\n{\n  hessian_reduction_cache_->copyTo(*hessian_reduction_cache_host_);\n  gradient_reduction_cache_->copyTo(*gradient_reduction_cache_host_);\n  chi2_reduction_cache_->copyTo(*chi2_reduction_cache_host_);\n  nr_visible_cache_->copyTo(*nr_visible_cache_host_);\n}\n\nnamespace sparse_img_align_device_utils\n{\n\n__host__ __device__ __forceinline__\nvoid setGx(imp::cu::Matrix<FloatTypeGpu,3,6>& __restrict__ g_x,\n           const Float3TypeGpu& __restrict__ p_in_imu)\n{\n  g_x(0,0) = 1.0;\n  g_x(0,1) = 0.0;\n  g_x(0,2) = 0.0;\n  g_x(0,3) = 0.0;\n  g_x(0,4) = p_in_imu.z;\n  g_x(0,5) = -p_in_imu.y;\n  g_x(1,0) = 0.0;\n  g_x(1,1) = 1.0;\n  g_x(1,2) = 0.0;\n  g_x(1,3) = -p_in_imu.z;\n  g_x(1,4) = 0.0;\n  g_x(1,5) = p_in_imu.x;\n  g_x(2,0) = 0.0;\n  g_x(2,1) = 0.0;\n  g_x(2,2) = 1.0;\n  g_x(2,3) = p_in_imu.y;\n  g_x(2,4) = -p_in_imu.x;\n  g_x(2,5) = 0.0;\n}\n\n//Todo: This function should be a member function of the CPU camera\n__host__ __device__ __forceinline__\nvoid setPinholeJacobian(imp::cu::Matrix<FloatTypeGpu,2,3>& __restrict__ jac_cam,\n                        const Float3TypeGpu& __restrict__ p_in_cam,\n                        const FloatTypeGpu& __restrict__ focal_length)\n{\n  FloatTypeGpu ratio_p_x_z_cam = p_in_cam.x/p_in_cam.z;\n  FloatTypeGpu ratio_p_y_z_cam = p_in_cam.y/p_in_cam.z;\n  FloatTypeGpu ratio_fl_p_z_cam = focal_length/p_in_cam.z;\n\n  jac_cam(0,0) = ratio_fl_p_z_cam;\n  jac_cam(0,1) = 0.0;\n  jac_cam(0,2) = -ratio_fl_p_z_cam*ratio_p_x_z_cam;\n  jac_cam(1,0) = 0.0;\n  jac_cam(1,1) = ratio_fl_p_z_cam;\n  jac_cam(1,2) = -ratio_fl_p_z_cam*ratio_p_y_z_cam;\n}\n\n__global__ void k_baseCachesGeneric(const imp::cu::Matrix<FloatTypeGpu,3,4> T_imu_cam,\n                                    const imp::cu::Matrix<FloatTypeGpu,3,3> R_imu_cam,\n                                    const FloatTypeGpu focal_length,\n                                    const Float3TypeGpu* __restrict__  p_in_cam,\n                                    FloatTypeGpu* __restrict__ jac_proj_cache,\n                                    const unsigned int nr_features)\n{\n\n  const unsigned int i = blockIdx.x*blockDim.x+threadIdx.x;\n\n  if(i < nr_features)\n  {\n    const Float3TypeGpu p_in_imu = transform(T_imu_cam,p_in_cam[i]);\n    imp::cu::Matrix<FloatTypeGpu,3,6> g_x;\n    setGx(g_x,p_in_imu);\n\n    imp::cu::Matrix<FloatTypeGpu,2,3> jac_cam;\n    setPinholeJacobian(jac_cam,p_in_cam[i],focal_length);\n\n    imp::cu::Matrix<FloatTypeGpu,2,6> jac_proj = ((jac_cam*R_imu_cam)*g_x);\n\n    // wite to buffer\n    int offset = 2*6*i;\n#pragma unroll\n    for(int row = 0; row < 2;++row)\n    {\n#pragma unroll\n      for(int col = 0; col < 6; ++col)\n      {\n        // times (-1) because of our definition of the photometric error\n        jac_proj_cache[offset + col] = -1.0f*jac_proj(row,col);\n      }\n      offset +=6;\n    }\n  }\n}\n\n__global__ void k_baseCachesPinhole(const imp::cu::Matrix<FloatTypeGpu,3,4> T_imu_cam,\n                                    const imp::cu::Matrix<FloatTypeGpu,3,3> R_cam_imu,\n                                    const FloatTypeGpu focal_length,\n                                    const Float3TypeGpu* __restrict__  p_in_cam,\n                                    FloatTypeGpu* __restrict__ jac_proj_cache,\n                                    const unsigned int nr_features)\n{\n  const unsigned int i = blockIdx.x*blockDim.x+threadIdx.x;\n  if(i < nr_features)\n  {\n    Float3TypeGpu p_in_imu = transform(T_imu_cam,p_in_cam[i]);\n    FloatTypeGpu ratio_p_x_z_cam = p_in_cam[i].x/p_in_cam[i].z;\n    FloatTypeGpu ratio_p_y_z_cam = p_in_cam[i].y/p_in_cam[i].z;\n    // times (-1) because of our definition of the photometric error\n    FloatTypeGpu ratio_fl_p_z_cam = (-1.0)*focal_length/p_in_cam[i].z;\n\n    FloatTypeGpu r00 = ratio_fl_p_z_cam*(R_cam_imu(0,0) - R_cam_imu(2,0)*ratio_p_x_z_cam);\n    FloatTypeGpu r01 = ratio_fl_p_z_cam*(R_cam_imu(0,1) - R_cam_imu(2,1)*ratio_p_x_z_cam);\n    FloatTypeGpu r02 = ratio_fl_p_z_cam*(R_cam_imu(0,2) - R_cam_imu(2,2)*ratio_p_x_z_cam);\n    FloatTypeGpu r10 = ratio_fl_p_z_cam*(R_cam_imu(1,0) - R_cam_imu(2,0)*ratio_p_y_z_cam);\n    FloatTypeGpu r11 = ratio_fl_p_z_cam*(R_cam_imu(1,1) - R_cam_imu(2,1)*ratio_p_y_z_cam);\n    FloatTypeGpu r12 = ratio_fl_p_z_cam*(R_cam_imu(1,2) - R_cam_imu(2,2)*ratio_p_y_z_cam);\n\n    const int offset = 2*6*i;\n    jac_proj_cache[offset] = r00;\n    jac_proj_cache[offset + 1] = r01;\n    jac_proj_cache[offset + 2] = r02;\n    jac_proj_cache[offset + 3] = -p_in_imu.z*r01 + p_in_imu.y*r02;\n    jac_proj_cache[offset + 4] = p_in_imu.z*r00 - p_in_imu.x*r02;\n    jac_proj_cache[offset + 5] = -p_in_imu.y*r00 + p_in_imu.x*r01;\n    jac_proj_cache[offset + 6] = r10;\n    jac_proj_cache[offset + 7] = r11;\n    jac_proj_cache[offset + 8] = r12;\n    jac_proj_cache[offset + 9] = -p_in_imu.z*r11 + p_in_imu.y*r12;\n    jac_proj_cache[offset + 10] = p_in_imu.z*r10 - p_in_imu.x*r12;\n    jac_proj_cache[offset + 11] = -p_in_imu.y*r10 + p_in_imu.x*r11;\n  }\n}\n\nvoid precomputeBaseCaches(std::vector<Float2TypeGpu>& uv_cache,\n                          std::vector<Float3TypeGpu>&  xyz_ref_cache,\n                          const std::vector<size_t>& first_ftr_index,\n                          const std::vector<size_t>& nbr_of_ftrs,\n                          const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr>& cu_T_imu_cam_bundle,\n                          const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>::Ptr>& cu_T_cam_imu_bundle,\n                          const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n                          const size_t& nbr_fts_to_track,\n                          GpuCacheHandler& gpu_cache)\n{\n  // Prepare the GPU buffers.\n  gpu_cache.reserveFeatureCapacity(nbr_fts_to_track);\n\n  // Transfer data from CPU to GPU.\n  LinearMemoryFloat2 uv_linear(reinterpret_cast<Float2PixelGpu*>(uv_cache.data()),uv_cache.size(),true);\n  LinearMemoryFloat3 xyz_linear(reinterpret_cast<Float3PixelGpu*>(xyz_ref_cache.data()),xyz_ref_cache.size(),true);\n\n  gpu_cache.uv().setRoi(uv_linear.roi());\n  gpu_cache.uv().copyFrom(uv_linear);\n  gpu_cache.xyzRef().setRoi(xyz_linear.roi());\n  gpu_cache.xyzRef().copyFrom(xyz_linear);\n\n  // Fill base caches.\n  for(int i = 0; i< static_cast<int>(cu_camera_bundle.size()); ++i)\n  {\n    imp::cu::Fragmentation<32,1> frag(nbr_of_ftrs.at(i));\n    k_baseCachesPinhole\n        <<<\n          frag.dimGrid,frag.dimBlock\n        >>>(*cu_T_imu_cam_bundle.at(i),\n            cu_T_cam_imu_bundle.at(i)->block<3,3>(0,0),\n            cu_camera_bundle.at(i)->fx(),\n            &gpu_cache.xyzRef().cuData()[first_ftr_index.at(i)],\n        &gpu_cache.jacProj().cuData()[first_ftr_index.at(i)*GpuCacheHandler::kJacProjStride],\n        nbr_of_ftrs.at(i));\n  }\n  cudaDeviceSynchronize();\n}\n\n__global__ void k_jacobianAndRefPatches(imp::cu::Texture2D ref_tex,\n                                        const Float2TypeGpu* __restrict__  uv,\n                                        const FloatTypeGpu* __restrict__ jac_proj_cache,\n                                        const int patch_size,\n                                        const int level,\n                                        const unsigned int nrFeatures,\n                                        FloatTypeGpu* __restrict__ jacobian_cache,\n                                        FloatTypeGpu* __restrict__ ref_patch_cache)\n{\n  const unsigned int i = blockIdx.x*blockDim.x+threadIdx.x;\n\n  if(i < nrFeatures)\n  {\n    const FloatTypeGpu scale = 1.0f/(1<<level);\n    const FloatTypeGpu patch_area = patch_size*patch_size;\n    const FloatTypeGpu upper_left_coord_x = uv[i].x*scale - (patch_size - 1)/2.0f;\n    const FloatTypeGpu upper_left_coord_y = uv[i].y*scale - (patch_size - 1)/2.0f;\n    size_t ref_patch_index_offset = patch_area*i;\n    size_t jacobian_index_offset = patch_area*GpuCacheHandler::kJacStride*i;\n    size_t jac_proj_cache_index_offset = GpuCacheHandler::kJacProjStride*i;\n\n#pragma unroll 4\n    for(int row = 0; row < patch_size; ++row)\n    {\n#pragma unroll 4\n      for(int col = 0; col < patch_size; ++col, ++ref_patch_index_offset, jacobian_index_offset += 8)\n      {\n        FloatTypeGpu center_texel;\n        imp::cu::tex2DFetch(center_texel, ref_tex,upper_left_coord_x + col, upper_left_coord_y + row);\n        ref_patch_cache[ref_patch_index_offset] = 255.0f*center_texel;\n        FloatTypeGpu dx_left,dx_right,dy_up,dy_down;\n        imp::cu::tex2DFetch(dx_left, ref_tex,upper_left_coord_x + col - 1, upper_left_coord_y + row);\n        imp::cu::tex2DFetch(dx_right, ref_tex,upper_left_coord_x + col + 1, upper_left_coord_y + row);\n        imp::cu::tex2DFetch(dy_up, ref_tex,upper_left_coord_x + col, upper_left_coord_y + row - 1);\n        imp::cu::tex2DFetch(dy_down, ref_tex,upper_left_coord_x + col, upper_left_coord_y + row + 1);\n        const FloatTypeGpu dx = 0.5f*(dx_right - dx_left)*255.0f;\n        const FloatTypeGpu dy = 0.5f*(dy_down - dy_up)*255.0f;\n\n#pragma unroll\n        for(int i = 0; i < 6; ++i)\n        {\n          jacobian_cache[jacobian_index_offset + i] = (dx*(jac_proj_cache[jac_proj_cache_index_offset + i])\n              + dy*(jac_proj_cache[jac_proj_cache_index_offset + 6 + i]))*scale;\n        }\n\n        //jacobian_cache[jacobian_index_offset + 6] = -255*center_texel;\n        //jacobian_cache[jacobian_index_offset + 7] = -1;\n        jacobian_cache[jacobian_index_offset + 6] = 0.0;\n        jacobian_cache[jacobian_index_offset + 7] = 0.0;\n      }\n    }\n  }\n}\n\n// TODO: imp::ImagePyramid version (currently not working)\n//void precomputeJacobiansAndRefPatches(\n//    std::vector<imp::ImagePyramid8uC1::Ptr>& ref_pyramid,\n//    const int level,\n//    const int patch_size,\n//    const bool estimate_alpha,\n//    const bool estimate_beta,\n//    const std::vector<size_t>& first_ftr_index,\n//    const std::vector<size_t>& nbr_of_ftrs,\n//    GpuCacheHandler& gpu_cache)\n//{\n//  int patch_area = patch_size*patch_size;\n\n//  for(int ii = 0; ii < static_cast<int>(pyramid.size());++ii)\n//  {\n//    std::shared_ptr<imp::cu::Texture2D> ref_tex  =\n// std::dynamic_pointer_cast<imp::cu::ImageGpu8uC1>(ref_pyramid.at(ii)->at(level))\n//        ->genTexture(false,cudaFilterModeLinear,cudaAddressModeBorder,cudaReadModeNormalizedFloat);\n\n//    dim3 threads(32);\n//    dim3 blocks((nbr_of_ftrs.at(ii) + threads.x-1)/threads.x);\n//    std::cout << \" features \" << ii << \" = \" << nbr_of_ftrs.at(ii) << std::endl;\n//    k_jacobianAndRefPatches<<<blocks,threads>>>(*ref_tex.get(),\n//        reinterpret_cast<float2*>(&gpu_cache.uv().data()[first_ftr_index.at(ii)]),\n//        reinterpret_cast<float*>(&gpu_cache.jacProj().data()[first_ftr_index.at(ii)*12]),\n//        patch_size , level , nbr_of_ftrs.at(ii),\n//        reinterpret_cast<float*>(&gpu_cache.jacobian().data()[first_ftr_index.at(ii)*8*patch_area]),\n//        reinterpret_cast<float*>(&gpu_cache.refPatch().data()[first_ftr_index.at(ii)*patch_area]));\n\n//  }\n//  cudaDeviceSynchronize();\n//}\n\nvoid precomputeJacobiansAndRefPatches(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr> >& ref_pyramid,\n    const int level,\n    const int patch_size,\n    const bool estimate_alpha,\n    const bool estimate_beta,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    GpuCacheHandler& gpu_cache)\n{\n  int patch_area = patch_size*patch_size;\n\n  for(int i = 0; i < static_cast<int>(ref_pyramid.size());++i)\n  {\n    std::shared_ptr<imp::cu::Texture2D> ref_tex  =\n        std::dynamic_pointer_cast<imp::cu::ImageGpu8uC1>(ref_pyramid.at(i).at(level))\n        ->genTexture(false,cudaFilterModeLinear,cudaAddressModeBorder,cudaReadModeNormalizedFloat);\n\n    imp::cu::Fragmentation<32,1> frag(nbr_of_ftrs.at(i));\n    k_jacobianAndRefPatches\n        <<<\n          frag.dimGrid, frag.dimBlock\n        >>>(*ref_tex,&gpu_cache.uv().cuData()[first_ftr_index.at(i)],\n        &gpu_cache.jacProj().cuData()[first_ftr_index.at(i)*GpuCacheHandler::kJacProjStride],\n        patch_size , level , nbr_of_ftrs.at(i),\n        &gpu_cache.jacobian().cuData()[first_ftr_index.at(i)*GpuCacheHandler::kJacStride*patch_area],\n        &gpu_cache.refPatch().cuData()[first_ftr_index.at(i)*patch_area]);\n\n  }\n  cudaDeviceSynchronize();\n}\n\n__global__ void k_residuals(const imp::cu::Texture2D cur_tex,\n                            const int width,\n                            const int height,\n                            const imp::cu::Matrix<FloatTypeGpu,3,4> T_cur_ref,\n                            const imp::cu::PinholeCamera cam,\n                            const FloatTypeGpu* __restrict__ ref_patch_cache,\n                            const Float3TypeGpu* __restrict__  xyz_ref,\n                            FloatTypeGpu alpha_illumination,\n                            FloatTypeGpu beta_illumionation,\n                            const int patch_size,\n                            const int level,\n                            const unsigned int nrFeatures,\n                            BoolTypeGpu* __restrict__ visibility_cache,\n                            FloatTypeGpu* __restrict__ residual_cache)\n{\n  const unsigned int i = blockIdx.x*blockDim.x+threadIdx.x;\n\n  if(i < nrFeatures)\n  {\n    FloatTypeGpu scale = 1.0f/(1<<level);\n    const int patch_area = patch_size*patch_size;\n    Float2TypeGpu uv_cur = static_cast<Float2TypeGpu>(\n          cam.world2cam(static_cast<Float3TypeGpu>(transform(T_cur_ref,xyz_ref[i]))));\n    const FloatTypeGpu upper_left_coord_x = uv_cur.x*scale - (patch_size - 1)/2.0f;\n    const FloatTypeGpu upper_left_coord_y = uv_cur.y*scale - (patch_size - 1)/2.0f;\n\n    // Check if projection is within the image.\n    if(upper_left_coord_x  < 0.0f || upper_left_coord_y  < 0.0f\n       || upper_left_coord_x + patch_size >= width - 1 || upper_left_coord_y + patch_size >= height - 1)\n    {\n      visibility_cache[i] = 0;\n    }\n    else\n    {\n      visibility_cache[i] = 1;\n\n      int pixel = 0;\n#pragma unroll 4\n      for(int row = 0; row < patch_size; ++row)\n      {\n#pragma unroll 4\n        for(int col = 0; col < patch_size; ++col,++pixel)\n        {\n          FloatTypeGpu cur_Texel;\n          imp::cu::tex2DFetch(cur_Texel, cur_tex,upper_left_coord_x + col, upper_left_coord_y + row);\n          residual_cache[i*patch_area + pixel] = static_cast<FloatTypeGpu>(\n                255.0*cur_Texel*(1.0 + alpha_illumination) + beta_illumionation)\n              - ref_patch_cache[i*patch_area + pixel];\n        }\n      }\n    }\n  }\n}\n\nvoid computeResidualsOfFrame(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr>>& cur_pyramid,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>>& cu_T_cur_ref_bundle,\n    const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    const int level,\n    const int patch_size,\n    const bool estimate_alpha,\n    const bool estimate_beta,\n    GpuCacheHandler& gpu_cache)\n{\n  const size_t patch_area = patch_size*patch_size;\n  for(int i = 0; i < static_cast<int>(cur_pyramid.size());++i)\n  {\n    std::shared_ptr<imp::cu::Texture2D> cur_tex  = std::dynamic_pointer_cast<imp::cu::ImageGpu8uC1>(\n          cur_pyramid.at(i).at(level))\n        ->genTexture(false,cudaFilterModeLinear,cudaAddressModeBorder,cudaReadModeNormalizedFloat);\n    imp::cu::Fragmentation<32,1> frag(nbr_of_ftrs.at(i));\n    k_residuals\n        <<<\n          frag.dimGrid,frag.dimBlock\n        >>>(*cur_tex, cur_pyramid.at(i).at(level)->width(),\n            cur_pyramid.at(i).at(level)->height(),\n            cu_T_cur_ref_bundle.at(i),\n            *cu_camera_bundle.at(i),\n            &gpu_cache.refPatch().cuData()[first_ftr_index.at(i)*patch_area],\n        &gpu_cache.xyzRef().cuData()[first_ftr_index.at(i)],\n        estimate_alpha, estimate_beta, patch_size, level, nbr_of_ftrs.at(i),\n        &gpu_cache.visibility().cuData()[first_ftr_index.at(i)],\n        &gpu_cache.residual().cuData()[first_ftr_index.at(i)*patch_area]);\n\n  }\n  cudaDeviceSynchronize();\n}\n\ninline unsigned int nextPow2(unsigned int x)\n{\n  --x;\n  x |= x >> 1;\n  x |= x >> 2;\n  x |= x >> 4;\n  x |= x >> 8;\n  x |= x >> 16;\n  return ++x;\n}\n\nbool isPow2(unsigned int x)\n{\n  return ((x&(x-1))==0);\n}\n\ntemplate <size_t _n_elements>\n__host__ __device__ __forceinline__\nvoid setToZero(FloatTypeGpu*  mem)\n{\n#pragma unroll\n  for(int ind = 0; ind < _n_elements; ++ind)\n  {\n    mem[ind] = 0.0;\n  }\n}\n\ntemplate <size_t _matrix_size>\n__host__ __device__ __forceinline__\nvoid setVVTUpperTriag(FloatTypeGpu* __restrict__ upper_triag_row_maj,\n                      const FloatTypeGpu* __restrict__ vect,\n                      const FloatTypeGpu& __restrict__ weight = 1.0)\n{\n  int index = 0;\n#pragma unroll\n  for(int row = 0; row < _matrix_size; ++row)\n  {\n#pragma unroll\n    for(int col = row; col < _matrix_size; ++col,++index)\n    {\n      upper_triag_row_maj[index] = weight*vect[row]*vect[col];\n    }\n  }\n}\n\ntemplate <size_t _matrix_size>\n__host__ __device__ __forceinline__\nvoid addVVTUpperTriag(FloatTypeGpu* __restrict__ upper_triag_row_maj,\n                      const FloatTypeGpu* __restrict__ vect,\n                      const FloatTypeGpu& __restrict__ weight = 1.0)\n{\n  int index = 0;\n#pragma unroll\n  for(int row = 0; row < _matrix_size; ++row)\n  {\n#pragma unroll\n    for(int col = row; col < _matrix_size; ++col,++index)\n    {\n      upper_triag_row_maj[index] += weight*vect[row]*vect[col];\n    }\n  }\n}\n\ntemplate <size_t _vector_size>\n__host__ __device__ __forceinline__\nvoid addVector(FloatTypeGpu* __restrict__ sum_vect,\n               const FloatTypeGpu* __restrict__ addend_vect)\n{\n\n#pragma unroll\n  for(int ind = 0; ind < _vector_size; ++ind)\n  {\n    sum_vect[ind] += addend_vect[ind];\n  }\n}\n\ntemplate <size_t _vector_size>\n__host__ __device__ __forceinline__\nvoid addWeightedVector(FloatTypeGpu* __restrict__ sum_vect,\n                       const FloatTypeGpu* __restrict__ addend_vect,\n                       const FloatTypeGpu& __restrict__ weight = 1.0)\n{\n\n#pragma unroll\n  for(int ind = 0; ind < _vector_size; ++ind)\n  {\n    sum_vect[ind] += weight*addend_vect[ind];\n  }\n}\n\ntemplate <size_t _vector_size>\n__host__ __device__ __forceinline__\nvoid subWeightedVector(FloatTypeGpu* __restrict__ sum_vect,\n                       const FloatTypeGpu* __restrict__ addend_vect,\n                       const FloatTypeGpu& __restrict__ weight = 1.0)\n{\n\n#pragma unroll\n  for(int ind = 0; ind < _vector_size; ++ind)\n  {\n    sum_vect[ind] -= weight*addend_vect[ind];\n  }\n}\n\ntemplate <size_t _vector_size>\n__host__ __device__ __forceinline__\nvoid setWeightedVector(FloatTypeGpu* __restrict__ dest_vect,\n                       const FloatTypeGpu* __restrict__ src_vect,\n                       const FloatTypeGpu& __restrict__ weight = 1.0)\n{\n\n#pragma unroll\n  for(int ind = 0; ind < _vector_size; ++ind)\n  {\n    dest_vect[ind] = weight*src_vect[ind];\n  }\n}\n\ntemplate <size_t _vector_size>\n__host__ __device__ __forceinline__\nvoid copyVector(FloatTypeGpu* __restrict__ dest_vect,\n                const FloatTypeGpu* __restrict__ src_vect)\n{\n\n#pragma unroll\n  for(int ind = 0; ind < _vector_size; ++ind)\n  {\n    dest_vect[ind] = src_vect[ind];\n  }\n}\n\n// _block_size must be power of 2\ntemplate <unsigned int _block_size, bool n_is_pow2>\n__global__ void k_reduceHessianGradient(const FloatTypeGpu* __restrict__ jacobian_cache,\n                                        const FloatTypeGpu* __restrict__ residual_cache,\n                                        const BoolTypeGpu* __restrict__ visibility_cache,\n                                        FloatTypeGpu* __restrict__ gradient_cache,\n                                        FloatTypeGpu* __restrict__ hessian_cache,\n                                        UIntTypeGpu* __restrict__ nr_meas,\n                                        FloatTypeGpu* __restrict__ chi2,\n                                        const unsigned int n_elements,\n                                        const unsigned int patch_area)\n{\n  constexpr unsigned int kHessianTriagN = SparseImgAlignBase::kHessianTriagN;\n  constexpr unsigned int kJacobianSize = SparseImgAlignBase::kJacobianSize;\n\n  __shared__ FloatTypeGpu s_hessian_data[_block_size*kHessianTriagN];\n  __shared__ FloatTypeGpu s_gradient_data[_block_size*kJacobianSize];\n  __shared__ FloatTypeGpu s_chi2[_block_size];\n  __shared__ UIntTypeGpu s_chi2_nr_meas[_block_size];\n  FloatTypeGpu jacobian[kJacobianSize];\n  FloatTypeGpu gradient[kJacobianSize];\n  FloatTypeGpu hessian[kHessianTriagN];\n  FloatTypeGpu chi2_temp;\n  UIntTypeGpu chi2_nr_meas = 0;\n\n  const unsigned int tid = threadIdx.x;\n  unsigned int i = blockIdx.x*_block_size*2 + threadIdx.x;\n  const unsigned int gridSize = _block_size*2*gridDim.x;\n  const unsigned int hessian_index = tid*kHessianTriagN;\n  const unsigned int gradient_index = tid*kJacobianSize;\n\n  // We reduce multiple elements per thread.  The number is determined by the\n  // number of active thread blocks (via gridDim).  More blocks will result\n  // in a larger gridSize and therefore fewer elements per thread.\n  // We reading from global memory and write to shared memory.\n\n  // Get first element.\n  if((!n_is_pow2)&&(i >= n_elements))\n  {\n    setToZero<kJacobianSize>(gradient);\n    setToZero<kHessianTriagN>(hessian);\n    chi2_temp = 0.0;\n  }\n  else\n  {\n    const unsigned int visib_index = i/patch_area;\n    BoolTypeGpu visible = visibility_cache[visib_index];\n    if(visible == 1)\n    {\n      FloatTypeGpu residual = residual_cache[i];\n      // TODO: add weighting function\n      FloatTypeGpu weight = 1.0;// weight_function(residual/weight_scale);\n\n      copyVector<kJacobianSize>(jacobian,&jacobian_cache[i*kJacobianSize]);\n      setVVTUpperTriag<kJacobianSize>(hessian,jacobian,weight);\n      setWeightedVector<kJacobianSize>(gradient,jacobian, -weight*residual);\n      chi2_temp = residual*residual*weight;\n      ++chi2_nr_meas;\n    }\n    else\n    {\n      setToZero<kJacobianSize>(gradient);\n      setToZero<kHessianTriagN>(hessian);\n      chi2_temp = 0.0;\n    }\n\n    // Get second element.\n    // Ensure we don't read out of bounds -- this is optimized away for powerOf2 problem size.\n    if (n_is_pow2 || i + _block_size < n_elements)\n    {\n      i += _block_size;\n      const unsigned int visib_index = i/patch_area;\n      BoolTypeGpu visible = visibility_cache[visib_index];\n      if(visible == 1)\n      {\n        FloatTypeGpu residual = residual_cache[i];\n        //TODO: add weighting function\n        FloatTypeGpu weight = 1.0;//weight_function(residual/weight_scale);\n\n        copyVector<kJacobianSize>(jacobian,&jacobian_cache[i*kJacobianSize]);\n        addVVTUpperTriag<kJacobianSize>(hessian,jacobian,weight);\n        subWeightedVector<kJacobianSize>(gradient,jacobian, weight*residual);\n        chi2_temp += residual*residual*weight;\n        ++chi2_nr_meas;\n      }\n    }\n    i += (gridSize - _block_size);\n  }\n\n  // Add further elements if available.\n  while (i < n_elements)\n  {\n    const unsigned int visib_index = i/patch_area;\n    BoolTypeGpu visible = visibility_cache[visib_index];\n    if(visible == 1)\n    {\n      FloatTypeGpu residual = residual_cache[i];\n      //TODO: add weighting function\n      FloatTypeGpu weight = 1.0;// weight_function(residual/weight_scale);\n\n      copyVector<kJacobianSize>(jacobian,&jacobian_cache[i*kJacobianSize]);\n      addVVTUpperTriag<kJacobianSize>(hessian,jacobian,weight);\n      subWeightedVector<kJacobianSize>(gradient,jacobian, weight*residual);\n      chi2_temp += residual*residual*weight;\n      ++chi2_nr_meas;\n    }\n\n    // Add second element.\n    // Ensure we don't read out of bounds -- this is optimized away for powerOf2 sized arrays.\n    if (n_is_pow2 || i + _block_size < n_elements)\n    {\n      i += _block_size;\n      const unsigned int visib_index = i/patch_area;\n      BoolTypeGpu visible = visibility_cache[visib_index];\n      if(visible == 1)\n      {\n        FloatTypeGpu residual = residual_cache[i];\n        //TODO: add weighting function\n        FloatTypeGpu weight = 1.0;// visible*weight_function(residual/weight_scale);\n\n        copyVector<kJacobianSize>(jacobian,&jacobian_cache[i*kJacobianSize]);\n        addVVTUpperTriag<kJacobianSize>(hessian,jacobian,weight);\n        subWeightedVector<kJacobianSize>(gradient,jacobian, weight*residual);\n        chi2_temp += residual*residual*weight;\n        ++chi2_nr_meas;\n      }\n    }\n    i += (gridSize - _block_size);\n  }\n\n  // Each thread puts its local sum into shared memory.\n  copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n  copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n  s_chi2[tid] = chi2_temp;\n  s_chi2_nr_meas[tid] = chi2_nr_meas;\n  __syncthreads();\n\n  // Do reduction in shared mem.\n  if ((_block_size >= 512) && (tid < 256))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 256)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 256)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 256];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 256];\n\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >= 256) &&(tid < 128))\n  {\n    // add to local variable\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 128)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 128)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 128];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 128];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >= 128) && (tid <  64))\n  {\n    // add to local variable\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 64)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 64)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 64];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 64];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  // TODO: __shfl_down can be used for reduction when only a single warp (32 threads) is left.\n  // #if (__CUDA_ARCH__ >= 300 )\n  // Do reduction with __shfl_down ...\n  // #else\n  // Fully unroll reduction within a single warp. Theoretically __syncthreads() is not necessary anymore\n  // as all threads are in the same warp. But with __syncthreads() the performance seems to be slightly increased.\n  // The reason for this is not yet clear.\n\n  if ((_block_size >=  64) && (tid < 32))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 32)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 32)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 32];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 32];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >=  32) && (tid < 16))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 16)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 16)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 16];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 16];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >=  16) && (tid <  8))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 8)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 8)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 8];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 8];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >=   8) && (tid <  4))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 4)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 4)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 4];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 4];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >=   4) && (tid <  2))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 2)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 2)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 2];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 2];\n    // Store result to shared memory.\n    copyVector<kJacobianSize>(&s_gradient_data[gradient_index],gradient);\n    copyVector<kHessianTriagN>(&s_hessian_data[hessian_index],hessian);\n    s_chi2[tid] = chi2_temp;\n    s_chi2_nr_meas[tid] = chi2_nr_meas;\n  }\n\n  __syncthreads();\n\n  if ((_block_size >=   2) && ( tid <  1))\n  {\n    // Add to local variable.\n    addVector<kJacobianSize>(gradient,&s_gradient_data[(tid + 1)*kJacobianSize]);\n    addVector<kHessianTriagN>(hessian,&s_hessian_data[(tid + 1)*kHessianTriagN]);\n    chi2_temp += s_chi2[tid + 1];\n    chi2_nr_meas += s_chi2_nr_meas[tid + 1];\n  }\n\n  __syncthreads();\n\n  // Write result for this block to global memory.\n  if (tid == 0)\n  {\n    copyVector<kJacobianSize>(&gradient_cache[blockIdx.x*kJacobianSize],gradient);\n    copyVector<kHessianTriagN>(&hessian_cache[blockIdx.x*kHessianTriagN],hessian);\n    chi2[blockIdx.x] = chi2_temp;\n    nr_meas[blockIdx.x] = chi2_nr_meas;\n  }\n}\n\nvoid reduceHessianGradient(const size_t size,\n                           const size_t patch_area,\n                           const int threads,\n                           const int blocks,\n                           const FloatTypeGpu* __restrict__ jacobian_input_device,\n                           const BoolTypeGpu* __restrict__ visibility_input_device,\n                           const FloatTypeGpu* __restrict__ residual_input_device,\n                           FloatTypeGpu* __restrict__ gradient_output,\n                           FloatTypeGpu* __restrict__ hessian_output,\n                           UIntTypeGpu* __restrict__ nrMeas,\n                           FloatTypeGpu* __restrict__ chi2)\n{\n  dim3 dimBlock(threads, 1, 1);\n  dim3 dimGrid(blocks, 1, 1);\n\n  if (isPow2(size))\n  {\n    switch (threads)\n    {\n\n    case 512:\n      SVO_ERROR_STREAM(\" 512 threads exceed the 48kB of available shared memory per block!\");\n      //      k_jacobianReduceHessianGradient<512, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n      //                                                                          residual_input_device,\n      //                                                                          visibility_input_device,\n      //                                                                          gradient_output,\n      //                                                                          hessian_output,\n      //                                                                          size, patch_area);\n      break;\n\n    case 256:\n      k_reduceHessianGradient<256, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                  residual_input_device,\n                                                                  visibility_input_device,\n                                                                  gradient_output,\n                                                                  hessian_output,\n                                                                  nrMeas,\n                                                                  chi2,\n                                                                  size,\n                                                                  patch_area);\n      break;\n\n    case 128:\n      k_reduceHessianGradient<128, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                  residual_input_device,\n                                                                  visibility_input_device,\n                                                                  gradient_output,\n                                                                  hessian_output,\n                                                                  nrMeas,\n                                                                  chi2,\n                                                                  size,\n                                                                  patch_area);\n      break;\n\n    case 64:\n      k_reduceHessianGradient<64, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case 32:\n      k_reduceHessianGradient<32, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case 16:\n      k_reduceHessianGradient<16, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case  8:\n      k_reduceHessianGradient<8, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                residual_input_device,\n                                                                visibility_input_device,\n                                                                gradient_output,\n                                                                hessian_output,\n                                                                nrMeas,\n                                                                chi2,\n                                                                size,\n                                                                patch_area);\n      break;\n\n    case  4:\n      k_reduceHessianGradient<4, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                residual_input_device,\n                                                                visibility_input_device,\n                                                                gradient_output,\n                                                                hessian_output,\n                                                                nrMeas,\n                                                                chi2,\n                                                                size,\n                                                                patch_area);\n      break;\n\n    case  2:\n      k_reduceHessianGradient<2, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                residual_input_device,\n                                                                visibility_input_device,\n                                                                gradient_output,\n                                                                hessian_output,\n                                                                nrMeas,\n                                                                chi2,\n                                                                size,\n                                                                patch_area);\n      break;\n\n    case  1:\n      k_reduceHessianGradient<1, true><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                residual_input_device,\n                                                                visibility_input_device,\n                                                                gradient_output,\n                                                                hessian_output,\n                                                                nrMeas,\n                                                                chi2,\n                                                                size,\n                                                                patch_area);\n      break;\n    default:\n      SVO_ERROR_STREAM(\"The block size must be a power of 2 for the reduction step! Block size is \" << threads << \".\");\n      break;\n    }\n  }\n  else\n  {\n    switch (threads)\n    {\n    case 512:\n      SVO_ERROR_STREAM(\" 512 threads exceed the 48kB of available shared memory per block!\");\n      //      k_reduceHessianGradient<256, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n      //                                                                   residual_input_device,\n      //                                                                   visibility_input_device,\n      //                                                                   gradient_output,\n      //                                                                   hessian_output,\n      //                                                                   nrMeas,\n      //                                                                   chi2,\n      //                                                                   size,patch_area);\n      break;\n\n    case 256:\n      k_reduceHessianGradient<256, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                   residual_input_device,\n                                                                   visibility_input_device,\n                                                                   gradient_output,\n                                                                   hessian_output,\n                                                                   nrMeas,\n                                                                   chi2,\n                                                                   size,\n                                                                   patch_area);\n      break;\n\n    case 128:\n      k_reduceHessianGradient<128, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                   residual_input_device,\n                                                                   visibility_input_device,\n                                                                   gradient_output,\n                                                                   hessian_output,\n                                                                   nrMeas,\n                                                                   chi2,\n                                                                   size,\n                                                                   patch_area);\n      break;\n\n    case 64:\n      k_reduceHessianGradient<64, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                  residual_input_device,\n                                                                  visibility_input_device,\n                                                                  gradient_output,\n                                                                  hessian_output,\n                                                                  nrMeas,\n                                                                  chi2,\n                                                                  size,\n                                                                  patch_area);\n      break;\n\n    case 32:\n      k_reduceHessianGradient<32, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                  residual_input_device,\n                                                                  visibility_input_device,\n                                                                  gradient_output,\n                                                                  hessian_output,\n                                                                  nrMeas,\n                                                                  chi2,\n                                                                  size,\n                                                                  patch_area);\n      break;\n\n    case 16:\n      k_reduceHessianGradient<16, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                  residual_input_device,\n                                                                  visibility_input_device,\n                                                                  gradient_output,\n                                                                  hessian_output,\n                                                                  nrMeas,\n                                                                  chi2,\n                                                                  size,\n                                                                  patch_area);\n      break;\n\n    case  8:\n      k_reduceHessianGradient<8, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case  4:\n      k_reduceHessianGradient<4, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case  2:\n      k_reduceHessianGradient<2, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n\n    case  1:\n      k_reduceHessianGradient<1, false><<< dimGrid, dimBlock >>>(jacobian_input_device,\n                                                                 residual_input_device,\n                                                                 visibility_input_device,\n                                                                 gradient_output,\n                                                                 hessian_output,\n                                                                 nrMeas,\n                                                                 chi2,\n                                                                 size,\n                                                                 patch_area);\n      break;\n    default:\n      SVO_ERROR_STREAM(\"The block size must be a power of 2 for the reduction step! Block size is \" << threads << \".\");\n      break;\n    }\n  }\n}\n\nvoid getNumBlocksAndThreads(const size_t nr_elements,\n                            const int max_grid_size_device,\n                            const int max_block_size_device,\n                            const int max_blocks ,\n                            const int max_threads,\n                            const int elements_per_thread,\n                            int &blocks, int &threads)\n{\n  threads = (nr_elements < static_cast<size_t>(max_threads)*2) ? nextPow2((nr_elements + 1)/ 2) : max_threads;\n  blocks = (nr_elements + (threads * elements_per_thread - 1)) / (threads * elements_per_thread);\n\n  if ((float)threads*blocks > (float)max_grid_size_device * max_block_size_device)\n  {\n    throw std::runtime_error(\"Desired number of threads is too large.\");\n  }\n\n  if(blocks > max_blocks)\n  {\n    blocks = max_blocks;\n  }\n\n  //TODO: comment this block if max_block is for sure < max_grid_size_device\n  if (blocks > max_grid_size_device)\n  {\n    std::cout << \"Desired number of blocks is bigger then the maximum grid size of the target device.\"\n              << std::endl;\n    blocks /= 2;\n    threads *= 2;\n  }\n}\n\nvoid computeNumBlocksAndThreadsReduction(const size_t nr_features,\n                                         const size_t patch_area,\n                                         const GPUProperties& gpu_props,\n                                         int &num_blocks, int &num_threads)\n{\n  const int max_threads = 256;\n  const int max_blocks = 64;\n  const size_t nr_elements = nr_features*patch_area;\n\n  // To reduce data of size N, log(N) elements should be reduced per thread for best performance.\n  // (c.f. cuda reduction example)\n  const int nr_elements_per_thread = std::max(\n        static_cast<int>(std::floor(log2 (static_cast<double>(nr_elements)))),2);\n\n  getNumBlocksAndThreads(nr_elements, gpu_props.maxGridSizeX(), gpu_props.maxThreadsPerBlock(),\n                         max_blocks, max_threads, nr_elements_per_thread, num_blocks, num_threads);\n}\n\nvoid reduceHessianGradientCPU(const int num_blocks,\n                              const LinearMemoryFloat& __restrict__ gradient_input_host,\n                              const LinearMemoryFloat& __restrict__ hessian_input_host,\n                              const LinearMemoryUInt& __restrict__ nMeas_input_host,\n                              const LinearMemoryFloat& __restrict__ chi2_input_host,\n                              FloatTypeGpu gradient_out[],\n                              FloatTypeGpu hessian_out[],\n                              FloatTypeGpu& chi2)\n{\n  memset(hessian_out,0,SparseImgAlignBase::kHessianTriagN*sizeof(FloatTypeGpu));\n  memset(gradient_out,0,SparseImgAlignBase::kJacobianSize*sizeof(FloatTypeGpu));\n  chi2 = 0;\n  unsigned int n_meas = 0;\n\n#pragma unroll 5\n  for(unsigned int block = 0; block< static_cast<unsigned int>(num_blocks); ++block)\n  {\n#pragma unroll\n    for(unsigned int i = 0; i < SparseImgAlignBase::kHessianTriagN; ++i)\n    {\n      hessian_out[i] += hessian_input_host[block*SparseImgAlignBase::kHessianTriagN + i];\n    }\n#pragma unroll\n    for(unsigned int i = 0; i < SparseImgAlignBase::kJacobianSize; ++i)\n    {\n      gradient_out[i] += gradient_input_host[block*SparseImgAlignBase::kJacobianSize + i];\n    }\n\n    n_meas += nMeas_input_host[block];\n    chi2 += chi2_input_host[block];\n  }\n\n  chi2 = chi2/n_meas;\n}\n\nFloatTypeGpu computeHessianAndGradient(SparseImgAlignBase::HessianMatrix* H,\n                                       SparseImgAlignBase::GradientVector* g,\n                                       const size_t nr_elements,\n                                       const size_t patch_area,\n                                       GpuCacheHandler& gpu_cache,\n                                       const int num_blocks, const int num_threads)\n{\n  FloatTypeGpu hessian_triag[SparseImgAlignBase::kHessianTriagN];\n  FloatTypeGpu gradient[SparseImgAlignBase::kJacobianSize];\n\n\n  reduceHessianGradient(nr_elements, patch_area, num_threads, num_blocks,\n                        gpu_cache.jacobian().cuData(),\n                        gpu_cache.visibility().cuData(),\n                        gpu_cache.residual().cuData(),\n                        gpu_cache.gradientDevice().cuData(),\n                        gpu_cache.hessianDevice().cuData(),\n                        gpu_cache.nrVisibleDevice().cuData(),\n                        gpu_cache.chi2Device().cuData());\n  cudaDeviceSynchronize();\n\n  // Sum the results of each block on CPU.\n  FloatTypeGpu chi2;\n  gpu_cache.copyReductionCacheDeviceToHost();\n  reduceHessianGradientCPU(num_blocks,\n                           gpu_cache.gradientHost(),\n                           gpu_cache.hessianHost(),\n                           gpu_cache.nrVisibleHost(),\n                           gpu_cache.chi2Host(),\n                           gradient,\n                           hessian_triag,chi2);\n\n\n  // Copy result to H and g.\n#pragma unroll\n  for(unsigned int row = 0, index = 0; row < SparseImgAlignBase::kJacobianSize; ++row)\n  {\n#pragma unroll\n    for(unsigned int col = row; col < SparseImgAlignBase::kJacobianSize; ++col,++index)\n    {\n      (*H)(row,col) = (*H)(col,row) =  hessian_triag[index];\n    }\n  }\n\n#pragma unroll\n  for(unsigned int index = 0; index < SparseImgAlignBase::kJacobianSize; ++index)\n  {\n    (*g)(index,0) = gradient[index];\n  }\n\n  return chi2;\n}\n\n__global__ void k_disparities(const imp::cu::Matrix<FloatTypeGpu,3,4> T_cur_ref,\n                              const imp::cu::PinholeCamera cam,\n                              const Float3TypeGpu* __restrict__  xyz_ref,\n                              const BoolTypeGpu* __restrict__ visibility_cache,\n                              const Float2TypeGpu* __restrict__  uv,\n                              const unsigned int nrFeatures,\n                              const FloatTypeGpu not_visible_value,\n                              FloatTypeGpu* __restrict__  disparity)\n{\n  const unsigned int i = blockIdx.x*blockDim.x+threadIdx.x;\n\n  if(i < nrFeatures)\n  {\n    // Check if projection is within the image.\n    if(visibility_cache[i] == 1)\n    {\n      Float2TypeGpu uv_cur = static_cast<Float2TypeGpu>(\n            cam.world2cam(static_cast<Float3TypeGpu>(transform(T_cur_ref,xyz_ref[i]))));\n      Float2TypeGpu disparity_vec = make_float2(uv[i].x -  uv_cur.x, uv[i].y - uv_cur.y);\n      disparity[i] = sqrt(disparity_vec.x*disparity_vec.x + disparity_vec.y*disparity_vec.y);\n    }\n    else\n    {\n      disparity[i] = not_visible_value;\n    }\n  }\n}\n\ntemplate<class T>\nsize_t copyArrayNonNegative(T* __restrict__ dest, T* __restrict__ src,size_t number_elements)\n{\n  size_t number_elements_copied = 0;\n  for(size_t i = 0; i < number_elements; ++i)\n  {\n    if(src[i] > 0)\n    {\n      dest[number_elements_copied++] = src[i];\n    }\n  }\n  return number_elements_copied;\n}\n\nFloatTypeGpu computeDisparity(\n    const std::vector<std::vector<imp::cu::ImageGpu8uC1::Ptr>>& cur_pyramid,\n    const std::vector<imp::cu::Matrix<FloatTypeGpu,3,4>>& cu_T_cur_ref_bundle,\n    const std::vector<imp::cu::PinholeCamera::Ptr>& cu_camera_bundle,\n    const std::vector<size_t>& first_ftr_index,\n    const std::vector<size_t>& nbr_of_ftrs,\n    const size_t total_number_of_features,\n    GpuCacheHandler& gpu_cache)\n{\n  for(int i = 0; i < static_cast<int>(cur_pyramid.size());++i)\n  {\n    imp::cu::Fragmentation<32,1> frag(nbr_of_ftrs.at(i));\n\n    k_disparities\n        <<<\n          frag.dimGrid,frag.dimBlock\n        >>>(cu_T_cur_ref_bundle.at(i),\n            *cu_camera_bundle.at(i),\n            &gpu_cache.xyzRef().cuData()[first_ftr_index.at(i)],\n        &gpu_cache.visibility().cuData()[first_ftr_index.at(i)],\n        &gpu_cache.uv().cuData()[first_ftr_index.at(i)],\n        nbr_of_ftrs.at(i),\n        FLT_MAX,\n        &gpu_cache.disparity().cuData()[first_ftr_index.at(i)]);\n\n  }\n  cudaDeviceSynchronize();\n\n  // Transfer disparities from GPU to CPU\n  FloatTypeGpu* disparity_pointer;\n  disparity_pointer = (FloatTypeGpu*) malloc(total_number_of_features*sizeof(FloatTypeGpu));\n  cudaMemcpy(disparity_pointer,gpu_cache.disparity().cuData(),total_number_of_features*sizeof(FloatTypeGpu),cudaMemcpyDeviceToHost);\n\n  /// If the \"not_visible_value\" is set to FLT_MAX, the median value is allways overestimating\n  /// the true median value. We could also remove the values that are not reprojected by setting\n  /// \"not_visible_value\" in k_disparities to -1 and than run the following operations\n  //  {\n  //    FloatTypeGpu* disparity_pointer_no_neg;\n  //    disparity_pointer_no_neg = (FloatTypeGpu*) malloc(total_number_of_features*sizeof(FloatTypeGpu));\n  //    size_t successfull_reprojections = copyArrayNonNegative<FloatTypeGpu>(disparity_pointer_no_neg,disparity_pointer,total_number_of_features);\n\n  //    FloatTypeGpu* disparity_end = &disparity_pointer_no_neg[successfull_reprojections - 1];\n  //    FloatTypeGpu* middle_ptr = &disparity_pointer_no_neg[successfull_reprojections/2];\n  //    std::nth_element(disparity_pointer_no_neg, middle_ptr, disparity_end);\n\n  //    std::cout << \"Median with removal = \" << *middle_ptr << std::endl;\n  //    std::cout << \"Total \" << total_number_of_features << std::endl;\n  //    std::cout << \"successfull \" << successfull_reprojections << std::endl;\n  //    free(disparity_pointer_no_neg);\n  //  }\n\n  FloatTypeGpu* disparity_end = &disparity_pointer[total_number_of_features - 1];\n  FloatTypeGpu* middle_ptr = &disparity_pointer[total_number_of_features/2];\n  std::nth_element(disparity_pointer, middle_ptr, disparity_end);\n  free(disparity_pointer);\n\n  return *middle_ptr;\n}\n\n} // namespace sparse_img_align_device_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_img_align/src/sparse_img_align_gpu.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n//\n// This file is subject to the terms and conditions defined in the file\n// 'LICENSE', which is part of this source code package.\n\n#include <svo/img_align/sparse_img_align_gpu.h>\n\n#include <algorithm>\n\n#include <opencv2/highgui/highgui.hpp>\n\n#include <vikit/vision.h>\n#include <vikit/math_utils.h>\n#include <aslam/cameras/camera-pinhole.h>\n#include <imp/cu_core/cu_image_gpu.cuh>\n#include <imp/cu_core/cu_matrix.cuh>\n#include <imp/cu_core/cu_pinhole_camera.cuh>\n#include <imp/bridge/opencv/image_cv.hpp>\n//TODO: remove\n#include <imp/bridge/opencv/cu_cv_bridge.hpp>\n\n#include <svo/common/logging.h>\n#include <svo/common/point.h>\n#include <svo/direct/depth_filter.h>\n#include <svo/img_align/sparse_img_align_device_utils.cuh>\n#include <svo/img_align/frame_gpu.h>\n\nnamespace svo {\n\nSparseImgAlignGpu::SparseImgAlignGpu(\n    SolverOptions optimization_options,\n    SparseImgAlignOptions options)\n  : SparseImgAlignBase(optimization_options,options)\n{\n  setPatchSize<SparseImgAlignGpu>(4);\n}\n\nsize_t SparseImgAlignGpu::run(\n    const FrameBundle::Ptr& ref_frames,\n    const FrameBundle::Ptr& cur_frames)\n{\n  CHECK(!ref_frames->empty());\n  CHECK_EQ(ref_frames->size(),cur_frames->size());\n\n  // Set member variables\n  ref_frames_ = ref_frames;\n  cur_frames_ = cur_frames;\n  T_iref_world_ = ref_frames->at(0)->T_imu_world();\n\n  // Transform to GPU datatypes. TODO: This should be done only ones for transformation/camera data\n  int nbr_cameras = static_cast<int>(ref_frames->frames_.size());\n  cu_ref_imgs_pyramid_copy_.resize(nbr_cameras);\n  cu_cur_imgs_pyramid_copy_.resize(nbr_cameras);\n  cu_T_imu_cam_bundle_.resize(nbr_cameras);\n  cu_T_cam_imu_bundle_.resize(nbr_cameras);\n  cu_camera_bundle_.resize(nbr_cameras);\n\n  // check if Gpu frame and if gpu frame data is initialized\n  // TOTO (mg): modify sparse image align gpu function to take frame bundels.\n  if(dynamic_cast<FrameGpu*>(ref_frames->at(0).get()) == nullptr || !dynamic_cast<FrameGpu*>(ref_frames->at(0).get())->cu_camera_)\n  {\n\n    SVO_WARN_STREAM(\"Sparse image align: Input frame is not a GPU. Creating GPU data structures now.\");\n    // Input is not a GPU frame bundle. GPU datastructures need to be instantiated.\n    for(int i = 0; i < nbr_cameras; ++i)\n    {\n      cu_ref_imgs_pyramid_copy_.at(i).resize(options_.max_level + 1);\n      cu_cur_imgs_pyramid_copy_.at(i).resize(options_.max_level + 1);\n\n      for(int j = 0; j < static_cast<int>(cu_ref_imgs_pyramid_copy_.at(i).size()); ++j)\n      {\n        cu_ref_imgs_pyramid_copy_.at(i).at(j) = std::make_shared<imp::cu::ImageGpu8uC1>(\n              imp::cu::ImageGpu8uC1(imp::ImageCv8uC1(ref_frames_->frames_.at(i)->img_pyr_.at(j))));\n        cu_cur_imgs_pyramid_copy_.at(i).at(j) = std::make_shared<imp::cu::ImageGpu8uC1>(\n              imp::cu::ImageGpu8uC1(imp::ImageCv8uC1(cur_frames_->frames_.at(i)->img_pyr_.at(j))));\n      }\n\n      cu_T_imu_cam_bundle_.at(i) = std::make_shared<imp::cu::Matrix<FloatTypeGpu,3,4> >(\n            imp::cu::Matrix<FloatTypeGpu,3,4>(\n              ref_frames->frames_.at(i)->T_imu_cam().getTransformationMatrix().block<3,4>(0,0).cast<FloatTypeGpu>()));\n      cu_T_cam_imu_bundle_.at(i) = std::make_shared<imp::cu::Matrix<FloatTypeGpu,3,4> >(\n            imp::cu::Matrix<FloatTypeGpu,3,4>(\n              ref_frames->frames_.at(i)->T_cam_imu().getTransformationMatrix().block<3,4>(0,0).cast<FloatTypeGpu>()));\n\n      aslam::PinholeCamera* pinhole = dynamic_cast<aslam::PinholeCamera*>(ref_frames->frames_.at(i)->cam().get());\n\n      if((pinhole != nullptr) && (pinhole->getDistortion().getType() == aslam::Distortion::Type::kNoDistortion))\n      {\n        cu_camera_bundle_.at(i) = std::make_shared<imp::cu::PinholeCamera>(\n              imp::cu::PinholeCamera(pinhole->fu(),pinhole->fv(),pinhole->cu(),pinhole->cv()));\n      }\n      else\n      {\n        SVO_ERROR_STREAM(\"Camera model not supported yet for GPU version\");\n        return 0;\n      }\n    }\n\n  }\n  else\n  {\n    // Input is a GPU frame bundle. Simply copy the pointers to the GPU data.\n    for(int i = 0; i < nbr_cameras; ++i)\n    {\n      cu_ref_imgs_pyramid_copy_.at(i).resize(options_.max_level + 1);\n      cu_cur_imgs_pyramid_copy_.at(i).resize(options_.max_level + 1);\n\n      for(int j = 0; j < static_cast<int>(cu_ref_imgs_pyramid_copy_.at(i).size()); ++j)\n      {\n        cu_ref_imgs_pyramid_copy_.at(i).at(j) = std::static_pointer_cast<FrameGpu>(ref_frames_->at(i))->cu_img_pyramid_copy_.at(j);\n        cu_cur_imgs_pyramid_copy_.at(i).at(j) = std::static_pointer_cast<FrameGpu>(cur_frames_->at(i))->cu_img_pyramid_copy_.at(j);\n      }\n\n      cu_T_imu_cam_bundle_.at(i) = std::static_pointer_cast<FrameGpu>(ref_frames_->at(i))->cu_T_imu_cam_;\n      cu_T_cam_imu_bundle_.at(i) =  std::static_pointer_cast<FrameGpu>(ref_frames_->at(i))->cu_T_cam_imu_;\n      cu_camera_bundle_.at(i) = std::static_pointer_cast<FrameGpu>(ref_frames_->at(i))->cu_camera_;\n    }\n  }\n\n  // Clear caches on host. Capacity remains unchanged.\n  host_cache_.clear();\n\n  // Select all visible features and subsample if required.\n  size_t nbr_fts_to_track = 0;\n  size_t nbr_extracted = 0;\n  for(auto frame : ref_frames->frames_)\n  {\n    host_cache_.first_ftr_index.push_back(nbr_fts_to_track);\n    sparse_img_align_host_utils::extractFeaturesSubset(*frame,\n                                                       options_.max_level,\n                                                       patch_size_with_border_,\n                                                       nbr_extracted,\n                                                       host_cache_);\n    nbr_fts_to_track += nbr_extracted;\n    host_cache_.nbr_of_ftrs.push_back(nbr_extracted);\n  }\n  host_cache_.total_nbr_of_ftrs = nbr_fts_to_track;\n\n  // The variable to be optimized is the imu-pose of the current frame.\n  Transformation T_icur_iref =\n      cur_frames_->at(0)->T_imu_world() * T_iref_world_.inverse();\n\n  SparseImgAlignState state;\n  state.T_icur_iref = T_icur_iref;\n  state.alpha = alpha_init_;\n  state.beta = beta_init_;\n\n  // Precompute values common to all pyramid levels.\n  sparse_img_align_device_utils::precomputeBaseCaches(host_cache_.uv_cache,\n                                                      host_cache_.xyz_ref_cache,\n                                                      host_cache_.first_ftr_index,\n                                                      host_cache_.nbr_of_ftrs,\n                                                      cu_T_imu_cam_bundle_,\n                                                      cu_T_cam_imu_bundle_,\n                                                      cu_camera_bundle_,\n                                                      host_cache_.total_nbr_of_ftrs,\n                                                      gpu_cache_);\n\n  // To reserve sufficient memory for the reduction step we need to compute the number of blocks and threads\n  // for the reduction step.\n  sparse_img_align_device_utils::computeNumBlocksAndThreadsReduction(host_cache_.total_nbr_of_ftrs,\n                                                                     patch_area_,\n                                                                     gpu_props_,\n                                                                     num_blocks_reduce_, num_threads_reduce_);\n\n\n  gpu_cache_.reserveReductionCacheCapacity(static_cast<size_t>(num_blocks_reduce_));\n\n  for(level_=options_.max_level; level_>=options_.min_level; --level_)\n  {\n    mu_ = 0.1;\n    have_cache_ = false; // at every level, recompute the jacobians\n    if(solver_options_.verbose)\n      printf(\"\\nPYRAMID LEVEL %i\\n---------------\\n\", level_);\n    optimize(state);\n  }\n\n  /// Uncomment if you need the median disparity\n  //  median_disparity_ = sparse_img_align_device_utils::computeDisparity(\n  //        cu_cur_imgs_pyramid_copy_,\n  //        cu_T_cur_ref_bundle_,\n  //        cu_camera_bundle_,\n  //        host_cache_.first_ftr_index,\n  //        host_cache_.nbr_of_ftrs,\n  //        host_cache_.total_nbr_of_ftrs,\n  //        gpu_cache_);\n\n  // Finished, we save the pose in the frame.\n  for(auto f : cur_frames->frames_)\n  {\n    f->T_f_w_ = f->T_cam_imu()*state.T_icur_iref*T_iref_world_;\n  }\n\n  // Reset initial values of illumination estimation TODO: make reset function\n  alpha_init_ = 0.0;\n  beta_init_ = 0.0;\n\n  return host_cache_.total_nbr_of_ftrs;\n}\n\ndouble SparseImgAlignGpu::evaluateError(\n    const SparseImgAlignState& state,\n    HessianMatrix* H,\n    GradientVector* g)\n{\n\n  if(!have_cache_) // is reset at every new level.\n  {\n    //TODO check why gpu image pyramid does not work\n    //    sparse_img_align_device_utils::precomputeJacobiansAndRefPatches(\n    //          cu_ref_pyramids_device_,\n    //          level_,\n    //          kPatchSize_,\n    //          options_.estimate_illumination_gain,\n    //          options_.estimate_illumination_offset,\n    //          host_cache_.first_ftr_index,\n    //          host_cache_.nbr_of_ftrs,\n    //          gpu_cache_);\n\n    sparse_img_align_device_utils::precomputeJacobiansAndRefPatches(\n          cu_ref_imgs_pyramid_copy_,\n          level_,\n          patch_size_,\n          options_.estimate_illumination_gain,\n          options_.estimate_illumination_offset,\n          host_cache_.first_ftr_index,\n          host_cache_.nbr_of_ftrs,\n          gpu_cache_);\n\n    have_cache_ = true;\n  }\n\n  // Store T_cur_ref in GPU compatible format.\n  cu_T_cur_ref_bundle_.resize(cu_T_cam_imu_bundle_.size());\n  for(size_t i = 0; i < cu_T_cam_imu_bundle_.size();++i)\n  {\n    const Transformation T_cur_ref =\n        cur_frames_->at(i)->T_cam_imu() * state.T_icur_iref\n        * ref_frames_->at(i)->T_imu_cam();\n    cu_T_cur_ref_bundle_.at(i) =\n        imp::cu::Matrix<FloatTypeGpu,3,4>(\n          T_cur_ref.getTransformationMatrix().block<3,4>(0,0).cast<FloatTypeGpu>());\n  }\n\n  //TODO: Bring camera control back\n  sparse_img_align_device_utils::computeResidualsOfFrame(\n        cu_cur_imgs_pyramid_copy_, cu_T_cur_ref_bundle_,\n        cu_camera_bundle_,\n        host_cache_.first_ftr_index,\n        host_cache_.nbr_of_ftrs,\n        level_, patch_size_,\n        state.alpha, state.beta,\n        gpu_cache_);\n\n  FloatTypeGpu chi2 = sparse_img_align_device_utils::computeHessianAndGradient(\n        H, g,\n        host_cache_.total_nbr_of_ftrs*patch_area_,\n        patch_area_,\n        gpu_cache_,\n        num_blocks_reduce_,\n        num_threads_reduce_);\n\n  return chi2;\n}\n\nnamespace sparse_img_align_host_utils\n{\n\nvoid extractFeaturesSubset(const Frame& ref_frame,\n                           const int max_level,\n                           const int patch_size_wb, // patch_size + border (usually 2 for gradient),\n                           size_t& nr_fts_extracted,\n                           HostCacheHandler& host_cache)\n{\n  const FloatTypeGpu scale = 1.0f/(1<<max_level);\n  const Vector3ft ref_pos = ref_frame.pos();\n  const cv::Mat& ref_img = ref_frame.img_pyr_.at(max_level);\n  const int rows_minus_one = ref_img.rows - 1;\n  const int cols_minus_one = ref_img.cols - 1;\n  const FloatTypeGpu patch_center_wb = (patch_size_wb - 1)/2.0f;\n  nr_fts_extracted = 0;\n\n  for(size_t i = 0; i < ref_frame.num_features_; ++i)\n  {\n    if(ref_frame.landmark_vec_[i] == nullptr &&\n       ref_frame.seed_ref_vec_[i].keyframe == nullptr)\n    {\n      continue;\n    }\n\n    const FloatTypeGpu u_tl = ref_frame.px_vec_(0,i)*scale - patch_center_wb;\n    const FloatTypeGpu v_tl = ref_frame.px_vec_(1,i)*scale - patch_center_wb;\n    const int u_tl_i = std::floor(u_tl);\n    const int v_tl_i = std::floor(v_tl);\n    if(!(u_tl_i < 0 || v_tl_i < 0\n         || u_tl_i + patch_size_wb >= cols_minus_one || v_tl_i + patch_size_wb >= rows_minus_one))\n    {\n      host_cache.push_uv(static_cast<FloatTypeGpu>(ref_frame.px_vec_(0,i)),\n                         static_cast<FloatTypeGpu>(ref_frame.px_vec_(1,i)));\n\n      // evaluate jacobian. cannot just take the 3d points coordinate because of\n      // the reprojection errors in the reference image!!!\n      FloatTypeGpu depth = 0;\n      if(ref_frame.landmark_vec_[i])\n      {\n        depth = ((ref_frame.landmark_vec_[i]->pos_ - ref_pos).norm());\n      }\n      else if(ref_frame.seed_ref_vec_[i].keyframe)\n      {\n        const SeedRef& seed_ref = ref_frame.seed_ref_vec_[i];\n        const Position pos = seed_ref.keyframe->T_world_cam()\n            * (seed_ref.keyframe->f_vec_.col(seed_ref.seed_id)\n               * 1.0/seed_ref.keyframe->invmu_sigma2_a_b_vec_(0, seed_ref.seed_id));\n        depth = (pos - ref_pos).norm();\n      }\n\n      const Vector3ftGpu xyz_ref(ref_frame.f_vec_.col(i).cast<FloatTypeGpu>()*depth);\n      host_cache.push_xyz(xyz_ref(0),xyz_ref(1),xyz_ref(2));\n      nr_fts_extracted++;\n    }\n  }\n  SVO_DEBUG_STREAM(\"Img Align: Maximum Number of Features = \" << ref_frame.num_features_);\n}\n\n} // namespace sparse_img_align_host_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_msgs/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(svo_msgs)\n\n# search for everything we need to build the messages, dont forget the message_generation\nfind_package(catkin REQUIRED COMPONENTS\n  message_generation\n  geometry_msgs\n  sensor_msgs\n)\n\n# search for all msg files\nFILE(GLOB messages_to_build RELATIVE \"${CMAKE_CURRENT_SOURCE_DIR}/msg\"\n    \"${CMAKE_CURRENT_SOURCE_DIR}/msg/*.msg\")\n\n# notify catkin to look at the previously found msg files\nadd_message_files(\n  FILES\n  ${messages_to_build}\n)\n\n# build the header files from the msg files, and notify catkin about the dependencies\ngenerate_messages(\n  DEPENDENCIES\n  geometry_msgs\n  sensor_msgs\n)\n\n# export the dependencis of this package for who ever depends on us\ncatkin_package(\n  CATKIN_DEPENDS message_runtime geometry_msgs\n)\n\ninclude_directories(\n  ${catkin_INCLUDE_DIRS}\n)"
  },
  {
    "path": "svo_msgs/msg/DenseInput.msg",
    "content": "Header header\nuint32 frame_id\ngeometry_msgs/Pose pose\nsensor_msgs/Image image\nfloat32 min_depth\nfloat32 max_depth"
  },
  {
    "path": "svo_msgs/msg/DenseInputWithFeatures.msg",
    "content": "Header header\nuint32 frame_id\ngeometry_msgs/Pose pose\nsensor_msgs/Image image\nfloat32 min_depth\nfloat32 max_depth\nsvo_msgs/Feature[] features\n"
  },
  {
    "path": "svo_msgs/msg/Feature.msg",
    "content": "float32 x # x component of 3d point in camera frame\nfloat32 y # y component of 3d point in camera frame\nfloat32 z # z component of 3d point in camera frame "
  },
  {
    "path": "svo_msgs/msg/Info.msg",
    "content": "Header      header\nfloat32     processing_time\nint32[]     keyframes\nint32       num_matches\nint32       tracking_quality\nint32       stage"
  },
  {
    "path": "svo_msgs/msg/NbvTrajectory.msg",
    "content": "Header header\ngeometry_msgs/Pose[] trajectory"
  },
  {
    "path": "svo_msgs/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package>\n  <name>svo_msgs</name>\n  <version>0.0.0</version>\n  <description>Custom messages for svo</description>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n  <license>BSD</license>\n  <buildtool_depend>catkin</buildtool_depend>\n\n  <build_depend>message_generation</build_depend>\n  <build_depend>geometry_msgs</build_depend>\n  <build_depend>sensor_msgs</build_depend>\n  \n  <run_depend>message_runtime</run_depend>\n  <run_depend>geometry_msgs</run_depend>\n  <run_depend>sensor_msgs</run_depend>\n\n  <export></export>\n</package>"
  },
  {
    "path": "svo_ros/CMakeLists.txt",
    "content": "project(svo_ros)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\nfind_package(rostest REQUIRED)\ncatkin_simple()\nfind_package(OpenCV 3 REQUIRED)\n\ninclude(SvoSetup)\n\nset(USE_GTSAM false)\n\nset(HEADERS\n  include/svo_ros/svo_interface.h\n  include/svo_ros/svo_factory.h\n  include/svo_ros/visualizer.h\n  include/svo_ros/svo_nodelet.h\n  include/svo_ros/csv_dataset_reader.h\n)\n\nset(SOURCES\n  src/svo_interface.cpp\n  src/svo_factory.cpp\n  src/svo_node_base.cpp\n  src/visualizer.cpp\n  src/csv_dataset_reader.cpp\n)\n\nif(USE_GTSAM)\n    ADD_DEFINITIONS(-DSVO_USE_BACKEND)\n    list(APPEND HEADERS\n      include/svo_ros/backend_visualizer.h\n      include/svo_ros/backend_factory.h)\n    list(APPEND SOURCES\n      src/backend_visualizer.cpp\n      src/backend_factory.cpp)\nendif()\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\ntarget_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} ${svo_backend_LIBRARIES})\n\ncs_add_executable(svo_node src/svo_node.cpp)\ntarget_link_libraries(svo_node ${PROJECT_NAME})\n\ncs_add_library(svo_nodelet src/svo_nodelet.cpp)\ntarget_link_libraries(svo_nodelet ${PROJECT_NAME})\n\ncs_install()\ninstall(FILES svo_nodelet.xml\n  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}\n)\ncs_export()\n"
  },
  {
    "path": "svo_ros/include/svo_ros/backend_factory.h",
    "content": "#pragma once\n\n#include <memory>\n#include <ros/ros.h>\n\nnamespace svo {\n\n// forward declarations\nclass BackendInterface;\n\nnamespace backend_factory {\n\nstd::shared_ptr<BackendInterface> makeBackend(const ros::NodeHandle& pnh);\n\n} // namespace vin_factory\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/include/svo_ros/backend_visualizer.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#pragma once\n\n#include <string>\n#include <iostream>\n#include <fstream>\n#include <Eigen/Core>\n#include <ros/ros.h>\n#include <pcl_ros/point_cloud.h>\n#include <pcl/point_types.h>\n#include <svo/common/transformation.h>\n#include <svo/backend/smart_factors_fwd.h>\n\nnamespace swe {\n  class SweGtsamBookeeper;\n}\nnamespace svo {\n\n/// Publish visualisation messages to ROS.\nclass BackendVisualizer\n{\npublic:\n  typedef std::shared_ptr<BackendVisualizer> Ptr;\n  typedef pcl::PointXYZ PointType;\n  typedef pcl::PointCloud<PointType> PointCloud;\n\n  static const std::string kWorldFrame;\n\n  ros::NodeHandle pnh_;\n  size_t trace_id_;\n  std::string trace_dir_;\n  ros::Publisher pub_markers_;\n  ros::Publisher pub_pc_;\n  double vis_scale_;\n  std::ofstream ofs_states_;\n  std::ofstream ofs_covariance_;\n\n  BackendVisualizer(const std::string& trace_dir,\n                    const ros::NodeHandle& pnh);\n\n  ~BackendVisualizer() = default;\n\n  void visualizeFrames(const gtsam::Values& values);\n\n  void visualizePoints(const gtsam::Values& values);\n\n  void publishPointcloud(const gtsam::Values& values);\n\n  void visualizeSmartFactors(const SmartFactorMap& smart_factors);\n\n  void visualizeVelocity(const gtsam::Values& values);\n\n  void visualizePoseCovariance(\n      const Transformation& T_W_B,\n      const Eigen::Matrix<double, 6, 6>& covariance);\n\n  void tracePose(std::map<int, int64_t, std::less<int>> frameid_timestamp_map,\n                 const gtsam::Values& values);\n\n  void traceStates(const gtsam::Values& values);\n\n  void traceCovariance(\n      const Eigen::Matrix<double, 6, 6>& C,\n      const int64_t timestamp);\n};\n\n} // end namespace svo\n\n"
  },
  {
    "path": "svo_ros/include/svo_ros/csv_dataset_reader.h",
    "content": "#pragma once\n\n#include <memory>\n#include <string>\n#include <vector>\n#include <map>\n#include <glog/logging.h>\n#include <svo/common/types.h>\n#include <aslam/common/macros.h>\n#include <opencv2/highgui/highgui.hpp>\n\nnamespace svo {\nnamespace dataset {\n\nenum class MeasurementType {\n  kImu,\n  kCamera,\n  kFeatureTrack,\n};\n\nstruct MeasurementBase\n{\n  ASLAM_POINTER_TYPEDEFS(MeasurementBase);\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  MeasurementBase() = delete;\n  MeasurementBase(int64_t timestamp_nanoseconds, MeasurementType type)\n    : timestamp_nanoseconds(timestamp_nanoseconds)\n    , measurement_type(type)\n  {}\n  virtual ~MeasurementBase() = default;\n\n  const int64_t timestamp_nanoseconds;\n  const MeasurementType measurement_type;\n};\n\nstruct ImuMeasurement : public MeasurementBase\n{\n  ASLAM_POINTER_TYPEDEFS(ImuMeasurement);\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  ImuMeasurement() = delete;\n  ImuMeasurement(\n      int64_t timestamp_nanoseconds,\n      const Eigen::Matrix<double, 6, 1>& acc_gyro_measurement)\n    : MeasurementBase(timestamp_nanoseconds, MeasurementType::kImu)\n    , acc_gyro_measurement(acc_gyro_measurement)\n  {}\n  virtual ~ImuMeasurement() = default;\n\n  const Eigen::Matrix<double, 6, 1> acc_gyro_measurement;\n};\n\nstruct CameraMeasurement : public MeasurementBase\n{\n  ASLAM_POINTER_TYPEDEFS(CameraMeasurement);\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  CameraMeasurement() = delete;\n  CameraMeasurement(\n      int64_t timestamp_nanoseconds\n      , size_t camera_index\n      , const std::string& image_path_filename)\n    : MeasurementBase(timestamp_nanoseconds, MeasurementType::kCamera)\n    , camera_index(camera_index)\n    , image_path_filename(image_path_filename)\n  {}\n  virtual ~CameraMeasurement() = default;\n\n  cv::Mat getImage() const\n  {\n    cv::Mat image = cv::imread(image_path_filename, cv::IMREAD_GRAYSCALE);\n    CHECK_NOTNULL(image.data);\n    return image;\n  }\n\n  const size_t camera_index;\n  const std::string image_path_filename;\n};\n\nstruct FeatureTrackMeasurement : public MeasurementBase\n{\n  ASLAM_POINTER_TYPEDEFS(FeatureTrackMeasurement);\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  FeatureTrackMeasurement() = delete;\n  FeatureTrackMeasurement(\n      int64_t timestamp_nanoseconds,\n      size_t camera_index,\n      int track_id,\n      const Eigen::Vector2d& keypoint_measurement,\n      double keypoint_std_dev)\n    : MeasurementBase(timestamp_nanoseconds, MeasurementType::kFeatureTrack)\n    , camera_index(camera_index)\n    , track_id(track_id)\n    , keypoint_measurement(keypoint_measurement)\n    , keypoint_std_dev(keypoint_std_dev)\n  {}\n  virtual ~FeatureTrackMeasurement() = default;\n\n  const size_t camera_index;\n  const int track_id;\n  const Eigen::Vector2d keypoint_measurement;\n  const double keypoint_std_dev;\n};\n\n} // namespace dataset\n\nclass CsvDatasetReader\n{\npublic:\n  typedef std::pair<int64_t, std::shared_ptr<dataset::MeasurementBase>> StampMeasurementPair;\n  typedef std::multimap<int64_t, std::shared_ptr<dataset::MeasurementBase>> DataBuffer;\n\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  ASLAM_POINTER_TYPEDEFS(CsvDatasetReader);\n\n  CsvDatasetReader(\n      const std::string& csv_directory,\n      const std::vector<size_t> imu_indices,\n      const std::vector<size_t> camera_indices,\n      const std::vector<size_t> track_indices);\n\n  virtual ~CsvDatasetReader() = default;\n\n  // Make class iterable:\n  typedef DataBuffer::value_type value_type;\n  typedef DataBuffer::const_iterator const_iterator;\n  DataBuffer::const_iterator begin() const { return buffer_.begin(); }\n  DataBuffer::const_iterator end() const { return buffer_.end(); }\n\nprivate:\n\n  void loadImuData(\n      const std::string data_dir,\n      const int64_t playback_delay);\n\n  void loadCameraData(\n      const std::string& data_dir,\n      const size_t camera_index,\n      int64_t playback_delay);\n\n  void loadFeatureTracksData(\n      const std::string& data_dir,\n      const size_t camera_index,\n      int64_t playback_delay);\n\n  /// Buffer to chronologically sort the data.\n  DataBuffer buffer_;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/include/svo_ros/svo_factory.h",
    "content": "#pragma once\n\n#include <memory>\n#include <ros/ros.h>\n#include <svo/common/camera_fwd.h>\n\nnamespace svo {\n\n// forward declarations\nclass ImuHandler;\nclass LoopClosing;\nclass FrameHandlerMono;\nclass FrameHandlerStereo;\nclass FrameHandlerArray;\nclass FrameHandlerDenseMono;\n\nnamespace factory {\n\n/// Get IMU Handler.\nstd::shared_ptr<ImuHandler> getImuHandler(\n    const ros::NodeHandle& pnh);\n\n#ifdef SVO_LOOP_CLOSING\n/// Create loop closing module\nstd::unique_ptr<LoopClosing> getLoopClosingModule(\n    const ros::NodeHandle& pnh,\n    const CameraBundlePtr& cam=nullptr);\n#endif\n\n/// Factory for Mono-SVO.\nstd::shared_ptr<FrameHandlerMono> makeMono(\n    const ros::NodeHandle& pnh,\n    const CameraBundlePtr& cam = nullptr);\n\n/// Factory for Stereo-SVO.\nstd::shared_ptr<FrameHandlerStereo> makeStereo(\n    const ros::NodeHandle& pnh,\n    const CameraBundlePtr& cam = nullptr);\n\n/// Factory for Camera-Array-SVO.\nstd::shared_ptr<FrameHandlerArray> makeArray(\n    const ros::NodeHandle& pnh,\n    const CameraBundlePtr& cam = nullptr);\n\n/// Factory for Camera-Array-SVO\nstd::shared_ptr<FrameHandlerDenseMono> makeDenseMono(\n    const ros::NodeHandle& pnh);\n\n} // namespace factory\n} // namespace mono\n"
  },
  {
    "path": "svo_ros/include/svo_ros/svo_interface.h",
    "content": "#pragma once\n\n#include <thread>\n\n#include <ros/ros.h>\n#include <std_msgs/String.h>    // user-input\n#include <sensor_msgs/Image.h>\n#include <sensor_msgs/Imu.h>\n\n\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/transformation.h>\n\nnamespace svo {\n\n// forward declarations\nclass FrameHandlerBase;\nclass Visualizer;\nclass ImuHandler;\nclass BackendInterface;\nclass BackendVisualizer;\n\nenum class PipelineType {\n  kMono,\n  kStereo,\n  kArray\n};\n\n/// SVO Interface\nclass SvoInterface\n{\npublic:\n\n  // ROS subscription and publishing.\n  ros::NodeHandle nh_;\n  ros::NodeHandle pnh_;\n  PipelineType pipeline_type_;\n  ros::Subscriber sub_remote_key_;\n  std::string remote_input_;\n  std::unique_ptr<std::thread> imu_thread_;\n  std::unique_ptr<std::thread> image_thread_;\n\n  // SVO modules.\n  std::shared_ptr<FrameHandlerBase> svo_;\n  std::shared_ptr<Visualizer> visualizer_;\n  std::shared_ptr<ImuHandler> imu_handler_;\n  std::shared_ptr<BackendInterface> backend_interface_;\n  std::shared_ptr<BackendVisualizer> backend_visualizer_;\n\n  CameraBundlePtr ncam_;\n\n  // Parameters\n  bool set_initial_attitude_from_gravity_ = true;\n\n  // System state.\n  bool quit_ = false;\n  bool idle_ = false;\n  bool automatic_reinitialization_ = false;\n\n  SvoInterface(const PipelineType& pipeline_type,\n          const ros::NodeHandle& nh,\n          const ros::NodeHandle& private_nh);\n\n  virtual ~SvoInterface();\n\n  // Processing\n  void processImageBundle(\n      const std::vector<cv::Mat>& images,\n      int64_t timestamp_nanoseconds);\n\n  bool setImuPrior(const int64_t timestamp_nanoseconds);\n\n  void publishResults(\n      const std::vector<cv::Mat>& images,\n      const int64_t timestamp_nanoseconds);\n\n  // Subscription and callbacks\n  void monoCallback(const sensor_msgs::ImageConstPtr& msg);\n  void stereoCallback(\n      const sensor_msgs::ImageConstPtr& msg0,\n      const sensor_msgs::ImageConstPtr& msg1);\n  void imuCallback(const sensor_msgs::ImuConstPtr& imu_msg);\n  void inputKeyCallback(const std_msgs::StringConstPtr& key_input);\n\n\n  // These functions are called before and after monoCallback or stereoCallback.\n  // a derived class can implement some additional logic here.\n  virtual void imageCallbackPreprocessing(int64_t timestamp_nanoseconds) {}\n  virtual void imageCallbackPostprocessing() {}\n\n  void subscribeImu();\n  void subscribeImage();\n  void subscribeRemoteKey();\n\n  void imuLoop();\n  void monoLoop();\n  void stereoLoop();\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/include/svo_ros/svo_node_base.h",
    "content": "#pragma once\n\n#include \"svo_ros/svo_interface.h\"\n\nnamespace svo_ros {\n\nclass SvoNodeBase {\n public:\n  // Initializes glog, gflags and ROS.\n  static void initThirdParty(int argc, char **argv);\n\n  SvoNodeBase();\n\n  void run();\n\n private:\n  ros::NodeHandle node_handle_;\n  ros::NodeHandle private_node_handle_;\n  svo::PipelineType type_;\n\n public:\n   svo::SvoInterface svo_interface_;\n};\n\n}  // namespace svo_ros\n"
  },
  {
    "path": "svo_ros/include/svo_ros/svo_nodelet.h",
    "content": "#pragma once\n\n#include <memory>\n#include <nodelet/nodelet.h>\n\nnamespace svo {\n\n// forward declarations\nclass SvoInterface;\n\nclass SvoNodelet : public nodelet::Nodelet\n{\npublic:\n  SvoNodelet() = default;\n  virtual ~SvoNodelet();\n\n private:\n  virtual void onInit();\n\n  std::unique_ptr<SvoInterface> svo_interface_;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/include/svo_ros/visualizer.h",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#pragma once\n\n#include <utility> // std::pair\n#include <iostream>\n\n#include <boost/shared_ptr.hpp>\n\n// ros\n#include <ros/ros.h>\n#include <visualization_msgs/Marker.h>\n#include <visualization_msgs/MarkerArray.h>\n#include <sensor_msgs/Image.h>\n#include <sensor_msgs/CameraInfo.h>\n#include <nav_msgs/Odometry.h>\n#include <std_msgs/ColorRGBA.h>\n#include <tf/transform_broadcaster.h>\n#include <image_transport/image_transport.h>\n#include <pcl_ros/point_cloud.h>\n#include <pcl/point_types.h>\n#include <svo/global.h>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n// forward declarations\nclass FrameHandlerBase;\n\n/// Publish visualisation messages to ROS.\nclass Visualizer\n{\npublic:\n  typedef std::shared_ptr<Visualizer> Ptr;\n  typedef pcl::PointXYZI PointType;\n  typedef pcl::PointCloud<PointType> PointCloud;\n\n  const std::string kWorldFrame = \"world\";\n\n  ros::NodeHandle pnh_;\n  size_t trace_id_ = 0;\n  std::string trace_dir_;\n  size_t img_pub_level_;\n  size_t img_pub_nth_;\n  size_t dense_pub_nth_;\n  ros::Publisher pub_frames_;\n  ros::Publisher pub_points_;\n  ros::Publisher pub_imu_pose_;\n  ros::Publisher pub_info_;\n  ros::Publisher pub_markers_;\n  ros::Publisher pub_pc_;\n  PointCloud::Ptr pc_;\n  std::vector<ros::Publisher> pub_cam_poses_;\n  std::vector<ros::Publisher> pub_dense_;\n  std::vector<image_transport::Publisher> pub_images_;\n  ros::Publisher pub_loop_closure_;\n\n  tf::TransformBroadcaster br_;\n  bool publish_world_in_cam_frame_;\n  bool publish_map_every_frame_;\n  ros::Duration publish_points_display_time_;\n  bool publish_seeds_;\n  bool publish_seeds_uncertainty_;\n  bool trace_pointcloud_;\n  double vis_scale_;\n  std::ofstream ofs_states_;\n  std::ofstream ofs_pointcloud_;\n\n  Visualizer(const std::string& trace_dir,\n             const ros::NodeHandle& nh_private,\n             const size_t num_cameras);\n\n  ~Visualizer() = default;\n\n  void publishSvoInfo(\n      const svo::FrameHandlerBase* const svo,\n      const int64_t timestamp_nanoseconds);\n\n  void publishImages(\n      const std::vector<cv::Mat>& images,\n      const int64_t timestamp_nanoseconds);\n\n  void publishImagesWithFeatures(\n      const FrameBundlePtr& frame_bundle,\n      const int64_t timestamp);\n\n  void publishImuPose(\n      const Transformation& T_world_imu,\n      const Eigen::Matrix<double, 6, 6> Covariance,\n      const int64_t timestamp_nanoseconds);\n\n  void publishCameraPoses(\n      const FrameBundlePtr& frame_bundle,\n      const int64_t timestamp_nanoseconds);\n\n  void publishBundleFeatureTracks(\n      const FrameBundlePtr frames_ref,\n      const FrameBundlePtr frames_cur,\n      int64_t timestamp);\n\n  void publishFeatureTracks(\n      const Keypoints& px_ref,\n      const Keypoints& px_cur,\n      const std::vector<std::pair<size_t, size_t>>& matches_ref_cur,\n      const ImgPyr& img_pyr,\n      const Level& level,\n      const uint64_t timestamp,\n      const size_t frame_index);\n\n  void visualizeHexacopter(\n      const Transformation& T_frame_world,\n      const uint64_t timestamp);\n\n  void visualizeQuadrocopter(\n      const Transformation& T_frame_world,\n      const uint64_t timestamp);\n\n  void visualizeMarkers(\n      const FrameBundlePtr& frame_bundle,\n      const std::vector<FramePtr>& close_kfs,\n      const MapPtr& map);\n\n  void publishTrajectoryPoint(\n      const Eigen::Vector3d& pos_in_vision,\n      const uint64_t timestamp,\n      const int id);\n\n  void visualizeMarkersWithUncertainty(\n      const FramePtr& frame,\n      const std::vector<FramePtr>& close_kfs,\n      const MapPtr& map,\n      const float sigma_threshold);\n\n  void publishSeedsBinary(const MapPtr& map,const float sigma_threshold);\n\n  void publishSeeds(const MapPtr& map);\n\n  void publishSeedsAsPointcloud(\n      const Frame& frame,\n      bool only_converged_seeds,\n      bool reset_pc_before_publishing = true);\n\n  void publishVelocity(\n      const Eigen::Vector3d& velocity_imu,\n      const uint64_t timestamp);\n\n  void publishMapRegion(const std::vector<FramePtr>& frames);\n\n  void publishKeyframeWithPoints(\n      const FramePtr& frame,\n      const uint64_t timestamp,\n      const double marker_scale = 0.05);\n\n  void publishLoopClosure(\n      const FramePtr& query, const FramePtr& match,\n      const Transformation& T_match_query);\n\n  void exportToDense(const FrameBundlePtr& frame_bundle);\n\n  void publishSeedsUncertainty(const MapPtr &map);\n\n  void visualizeCoordinateFrames(const Transformation& T_world_cam);\n\n  void publishLoopClosureInfo(const std::vector<Eigen::Matrix<float, 1, 6 >,\n  Eigen::aligned_allocator<Eigen::Matrix<float, 1, 6> > >& loop_closure_data);\n};\n\n} // end namespace svo\n\n"
  },
  {
    "path": "svo_ros/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_ros</name>\n  <version>0.1.0</version>\n  <description>\n    Visual Odometry - ROS Nodes\n  </description>\n\n  <author>Christian Forster</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n  <license>GPLv3</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n  <buildtool_depend>rostest</buildtool_depend>\n\n  <depend>cmake_modules</depend> \n  <depend>cv_bridge</depend>\n  <depend>eigen_catkin</depend>\n  <depend>eigen_checks</depend>\n  <depend>image_transport</depend>\n  <depend>nodelet</depend>\n  <depend>roscpp</depend>\n  <depend>minkindr</depend>\n  <depend>nav_msgs</depend>\n  <depend>pcl_ros</depend>\n  <depend>rpg_calib</depend>  <!-- Integration test. -->\n  <depend>rpg_common</depend>\n  <depend>rpg_common_ros</depend>\n  <depend>rpg_datasets</depend>\n  <depend>sensor_msgs</depend>\n  <depend>std_msgs</depend>\n  <depend>svo</depend>\n  <depend>svo_cmake</depend>\n  <depend>svo_common</depend>\n  <depend>svo_msgs</depend>\n  <depend>svo_tracker</depend>\n  <depend>svo_backend</depend>\n  <depend>tf</depend>\n  <depend>vikit_common</depend>\n  <depend>vikit_ros</depend>\n  <depend>visualization_msgs</depend>\n  \n  <export>\n    <nodelet plugin=\"${prefix}/svo_nodelet.xml\"/>\n  </export>\n</package>\n"
  },
  {
    "path": "svo_ros/rqt.perspective",
    "content": "{\n  \"keys\": {}, \n  \"groups\": {\n    \"pluginmanager\": {\n      \"keys\": {\n        \"running-plugins\": {\n          \"type\": \"repr\", \n          \"repr\": \"{u'rqt_rviz/RViz': [1], u'rqt_reconfigure/Param': [1], u'rqt_image_view/ImageView': [1], u'svo_rqt/Svo': [1]}\"\n        }\n      }, \n      \"groups\": {\n        \"plugin__rqt_rviz__RViz__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"dock_widget__\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"True\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__rqt_robot_steering__RobotSteering__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"dock_widget__RobotSteeringUi\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'true'\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }, \n            \"plugin\": {\n              \"keys\": {\n                \"topic\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'/cmd_vel'\"\n                }, \n                \"vx_min\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'-1'\"\n                }, \n                \"vw_min\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'-3'\"\n                }, \n                \"vw_max\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'3'\"\n                }, \n                \"vx_max\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'1'\"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__rqt_reconfigure__Param__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"dock_widget___plugincontainer_top_widget\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"True\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }, \n            \"plugin\": {\n              \"keys\": {\n                \"splitter\": {\n                  \"type\": \"repr(QByteArray.hex)\", \n                  \"repr(QByteArray.hex)\": \"QtCore.QByteArray('000000ff0000000000000002000000c00000006401000000060100000001')\", \n                  \"pretty-print\": \"         d     \"\n                }, \n                \"_splitter\": {\n                  \"type\": \"repr(QByteArray.hex)\", \n                  \"repr(QByteArray.hex)\": \"QtCore.QByteArray('000000ff00000000000000020000013e0000006401000000090100000002')\", \n                  \"pretty-print\": \"       > d     \"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__rqt_image_view__ImageView__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"dock_widget__ImageViewWidget\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"True\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }, \n            \"plugin\": {\n              \"keys\": {\n                \"dynamic_range\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"False\"\n                }, \n                \"max_range\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"10.0\"\n                }, \n                \"topic\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'/svo/image'\"\n                }, \n                \"zoom1\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"False\"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__svo_rqt__Svo__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"dock_widget__SvoWidget\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"True\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }, \n            \"dock_widget__SvoUi\": {\n              \"keys\": {\n                \"dockable\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'true'\"\n                }, \n                \"parent\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"None\"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__rqt_shell__Shell__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"plugin\": {\n              \"keys\": {\n                \"shell_type\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'0'\"\n                }\n              }, \n              \"groups\": {}\n            }\n          }\n        }, \n        \"plugin__rqt_console__Console__1\": {\n          \"keys\": {}, \n          \"groups\": {\n            \"plugin\": {\n              \"keys\": {\n                \"show_highlighted_only\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'false'\"\n                }, \n                \"message_limit\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'20000'\"\n                }, \n                \"exclude_filters\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'severity'\"\n                }, \n                \"table_splitter\": {\n                  \"type\": \"repr(QByteArray.hex)\", \n                  \"repr(QByteArray.hex)\": \"QtCore.QByteArray('000000ff00000000000000020000004e000000ed01000000090100000002')\", \n                  \"pretty-print\": \"       N       \"\n                }, \n                \"highlight_filters\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'message'\"\n                }, \n                \"paused\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'false'\"\n                }, \n                \"settings_exist\": {\n                  \"type\": \"repr\", \n                  \"repr\": \"u'true'\"\n                }, \n                \"filter_splitter\": {\n                  \"type\": \"repr(QByteArray.hex)\", \n                  \"repr(QByteArray.hex)\": \"QtCore.QByteArray('000000ff0000000000000002000000720000007201000000090100000002')\", \n                  \"pretty-print\": \"       r r     \"\n                }\n              }, \n              \"groups\": {\n                \"exclude_filter_0\": {\n                  \"keys\": {\n                    \"enabled\": {\n                      \"type\": \"repr\", \n                      \"repr\": \"u'true'\"\n                    }, \n                    \"itemlist\": {\n                      \"type\": \"repr\", \n                      \"repr\": \"u''\"\n                    }\n                  }, \n                  \"groups\": {}\n                }, \n                \"highlight_filter_0\": {\n                  \"keys\": {\n                    \"regex\": {\n                      \"type\": \"repr\", \n                      \"repr\": \"u'false'\"\n                    }, \n                    \"text\": {\n                      \"type\": \"repr\", \n                      \"repr\": \"u''\"\n                    }, \n                    \"enabled\": {\n                      \"type\": \"repr\", \n                      \"repr\": \"u'true'\"\n                    }\n                  }, \n                  \"groups\": {}\n                }\n              }\n            }\n          }\n        }\n      }\n    }, \n    \"mainwindow\": {\n      \"keys\": {\n        \"geometry\": {\n          \"type\": \"repr(QByteArray.hex)\", \n          \"repr(QByteArray.hex)\": \"QtCore.QByteArray('01d9d0cb00010000000007a9fffffffc00001187000005a7000007b1000000180000117f0000059f000000000000')\", \n          \"pretty-print\": \"                       \"\n        }, \n        \"state\": {\n          \"type\": \"repr(QByteArray.hex)\", \n          \"repr(QByteArray.hex)\": \"QtCore.QByteArray('000000ff00000000fd0000000100000003000009cf00000559fc0100000005fb0000002c00730076006f005f007200710074005f005f00530076006f005f005f0031005f005f00530076006f005500690100000000000003890000000000000000fb0000006a007200710074005f0072006f0062006f0074005f007300740065006500720069006e0067005f005f0052006f0062006f0074005300740065006500720069006e0067005f005f0031005f005f0052006f0062006f0074005300740065006500720069006e00670055006901000000000000020b0000000000000000fc00000000000003530000022e00fffffffc0200000004fb0000003400730076006f005f007200710074005f005f00530076006f005f005f0031005f005f00530076006f0057006900640067006500740100000019000000a30000009900fffffffb0000004c007200710074005f0063006f006e0073006f006c0065005f005f0043006f006e0073006f006c0065005f005f0031005f005f0043006f006e0073006f006c006500570069006400670065007401000000c3000003b50000000000000000fb0000005a007200710074005f0069006d006100670065005f0076006900650077005f005f0049006d0061006700650056006900650077005f005f0031005f005f0049006d006100670065005600690065007700570069006400670065007401000000c2000002700000005100fffffffb0000006c007200710074005f007200650063006f006e006600690067007500720065005f005f0050006100720061006d005f005f0031005f005f005f0070006c007500670069006e0063006f006e007400610069006e00650072005f0074006f0070005f00770069006400670065007401000003380000023a0000010f00fffffffb00000026007200710074005f007200760069007a005f005f005200560069007a005f005f0031005f005f010000035900000676000000a700fffffffb00000040007200710074005f007300680065006c006c005f005f005300680065006c006c005f005f0031005f005f0058005400650072006d005700690064006700650074010000091c000000b30000000000000000000009cf0000000000000004000000040000000800000008fc00000001000000030000000100000036004d0069006e0069006d0069007a006500640044006f0063006b00570069006400670065007400730054006f006f006c0062006100720000000000ffffffff0000000000000000')\", \n          \"pretty-print\": \"                 ,svo_rqt__Svo__1__SvoUi          jrqt_robot_steering__RobotSteering__1__RobotSteeringUi            S .                                                                                                                                              p Q                                                            8 :                           Y v                                                                                                       \"\n        }\n      }, \n      \"groups\": {\n        \"toolbar_areas\": {\n          \"keys\": {\n            \"MinimizedDockWidgetsToolbar\": {\n              \"type\": \"repr\", \n              \"repr\": \"8\"\n            }\n          }, \n          \"groups\": {}\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "svo_ros/rviz_ba.rviz",
    "content": "Panels:\n  - Class: rviz/Displays\n    Help Height: 0\n    Name: Displays\n    Property Tree Widget:\n      Expanded:\n        - //svo/points1\n        - //svo/points1/Namespaces1\n      Splitter Ratio: 0.5\n    Tree Height: 469\n  - Class: rviz/Selection\n    Name: Selection\n  - Class: rviz/Tool Properties\n    Expanded:\n      - /2D Pose Estimate1\n      - /2D Nav Goal1\n      - /Publish Point1\n    Name: Tool Properties\n    Splitter Ratio: 0.588679016\n  - Class: rviz/Views\n    Expanded:\n      - /Current View1\n    Name: Views\n    Splitter Ratio: 0.5\n  - Class: rviz/Time\n    Experimental: false\n    Name: Time\n    SyncMode: 0\n    SyncSource: /svo/image/0\nVisualization Manager:\n  Class: \"\"\n  Displays:\n    - Alpha: 0.5\n      Cell Size: 1\n      Class: rviz/Grid\n      Color: 160; 160; 164\n      Enabled: true\n      Line Style:\n        Line Width: 0.0299999993\n        Value: Lines\n      Name: Grid\n      Normal Cell Count: 0\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Plane: XY\n      Plane Cell Count: 10\n      Reference Frame: <Fixed Frame>\n      Value: true\n    - Class: rviz/TF\n      Enabled: true\n      Frame Timeout: 15\n      Frames:\n        All Enabled: true\n        cam_pos:\n          Value: true\n        world:\n          Value: true\n      Marker Scale: 1\n      Name: TF\n      Show Arrows: true\n      Show Axes: true\n      Show Names: true\n      Tree:\n        cam_pos:\n          world:\n            {}\n      Update Interval: 0\n      Value: true\n    - Class: rviz/Marker\n      Enabled: false\n      Marker Topic: /svo/keyframes\n      Name: /svo/keyframes\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: false\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /svo/points\n      Name: /svo/points\n      Namespaces:\n        pts: false\n        seeds: false\n        trajectory: true\n      Queue Size: 100\n      Value: true\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: /svo/image/0\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Unreliable: false\n      Value: true\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /svo/ba_frames\n      Name: backend_frames\n      Namespaces:\n        frames: true\n        keyframes: true\n        points: true\n        traj: true\n      Queue Size: 100\n      Value: true\n  Enabled: true\n  Global Options:\n    Background Color: 255; 255; 255\n    Fixed Frame: world\n    Frame Rate: 30\n  Name: root\n  Tools:\n    - Class: rviz/Interact\n      Hide Inactive Objects: true\n    - Class: rviz/MoveCamera\n    - Class: rviz/Select\n    - Class: rviz/FocusCamera\n    - Class: rviz/Measure\n    - Class: rviz/SetInitialPose\n      Topic: /initialpose\n    - Class: rviz/SetGoal\n      Topic: /move_base_simple/goal\n    - Class: rviz/PublishPoint\n      Single click: true\n      Topic: /clicked_point\n  Value: true\n  Views:\n    Current:\n      Class: rviz/Orbit\n      Distance: 11.8655243\n      Enable Stereo Rendering:\n        Stereo Eye Separation: 0.0599999987\n        Stereo Focal Distance: 1\n        Swap Stereo Eyes: false\n        Value: false\n      Focal Point:\n        X: 2.01617765\n        Y: 0.886354446\n        Z: 2.2185638\n      Focal Shape Fixed Size: true\n      Focal Shape Size: 0.0500000007\n      Invert Z Axis: false\n      Name: Current View\n      Near Clip Distance: 0.00999999978\n      Pitch: 0.234796241\n      Target Frame: <Fixed Frame>\n      Value: Orbit (rviz)\n      Yaw: 5.08857346\n    Saved: ~\nWindow Geometry:\n  /svo/image/0:\n    collapsed: false\n  Displays:\n    collapsed: false\n  Height: 1383\n  Hide Left Dock: false\n  Hide Right Dock: false\n  QMainWindow State: 000000ff00000000fd00000004000000000000028500000502fc020000000cfb0000001200530065006c0065006300740069006f006e00000000280000009b0000006300fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000420000021d000000de00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018002f00730076006f002f0069006d006100670065002f00300100000265000002df0000001800fffffffb0000001a002f00720065006d006f00640065002f0064006500700074006800000002f1000001110000000000000000fb0000000a0049006d006100670065010000024e000003cc0000000000000000fb0000000a0049006d0061006700650100000433000001e70000000000000000000000010000010f00000502fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000004200000502000000b900fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000003ce0000003efc0100000002fb0000000800540069006d00650000000000000003ce0000028800fffffffb0000000800540069006d00650100000000000004500000000000000000000006600000050200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000\n  Selection:\n    collapsed: false\n  Time:\n    collapsed: false\n  Tool Properties:\n    collapsed: false\n  Views:\n    collapsed: false\n  Width: 2560\n  X: 0\n  Y: 27\n"
  },
  {
    "path": "svo_ros/rviz_config.rviz",
    "content": "Panels:\n  - Class: rviz/Displays\n    Help Height: 0\n    Name: Displays\n    Property Tree Widget:\n      Expanded:\n        - //svo/points1/Namespaces1\n        - //svo/loop_closures1\n      Splitter Ratio: 0.5\n    Tree Height: 350\n  - Class: rviz/Selection\n    Name: Selection\n  - Class: rviz/Tool Properties\n    Expanded:\n      - /2D Pose Estimate1\n      - /2D Nav Goal1\n      - /Publish Point1\n    Name: Tool Properties\n    Splitter Ratio: 0.588679\n  - Class: rviz/Views\n    Expanded:\n      - /Current View1\n    Name: Views\n    Splitter Ratio: 0.5\n  - Class: rviz/Time\n    Experimental: false\n    Name: Time\n    SyncMode: 0\n    SyncSource: /svo/image/0\nVisualization Manager:\n  Class: \"\"\n  Displays:\n    - Alpha: 0.5\n      Cell Size: 1\n      Class: rviz/Grid\n      Color: 160; 160; 164\n      Enabled: true\n      Line Style:\n        Line Width: 0.03\n        Value: Lines\n      Name: Grid\n      Normal Cell Count: 0\n      Offset:\n        X: 0\n        Y: 0\n        Z: 0\n      Plane: XY\n      Plane Cell Count: 10\n      Reference Frame: <Fixed Frame>\n      Value: true\n    - Class: rviz/TF\n      Enabled: true\n      Frame Timeout: 15\n      Frames:\n        All Enabled: true\n        cam_pos:\n          Value: true\n        world:\n          Value: true\n      Marker Scale: 1\n      Name: TF\n      Show Arrows: true\n      Show Axes: true\n      Show Names: true\n      Tree:\n        world:\n          {}\n      Update Interval: 0\n      Value: true\n    - Class: rviz/Marker\n      Enabled: false\n      Marker Topic: /svo/keyframes\n      Name: /svo/keyframes\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: false\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /svo/points\n      Name: /svo/points\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: true\n    - Class: rviz/Image\n      Enabled: false\n      Image Topic: /remode/depth\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: /remode/depth\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Value: false\n    - Alpha: 1\n      Autocompute Intensity Bounds: true\n      Autocompute Value Bounds:\n        Max Value: 10\n        Min Value: -10\n        Value: true\n      Axis: Z\n      Channel Name: intensity\n      Class: rviz/PointCloud2\n      Color: 170; 0; 0\n      Color Transformer: FlatColor\n      Decay Time: 0\n      Enabled: false\n      Invert Rainbow: false\n      Max Color: 255; 255; 255\n      Max Intensity: 255\n      Min Color: 0; 0; 0\n      Min Intensity: 25\n      Name: /remode/pointcloud\n      Position Transformer: XYZ\n      Queue Size: 10\n      Selectable: true\n      Size (Pixels): 3\n      Size (m): 0.005\n      Style: Flat Squares\n      Topic: /remode/pointcloud\n      Use Fixed Frame: true\n      Use rainbow: false\n      Value: false\n    - Class: rviz/Image\n      Enabled: true\n      Image Topic: /svo/image/0\n      Max Value: 1\n      Median window: 5\n      Min Value: 0\n      Name: /svo/image/0\n      Normalize Range: true\n      Queue Size: 2\n      Transport Hint: raw\n      Value: true\n    - Class: rviz/Marker\n      Enabled: true\n      Marker Topic: /svo/loop_closures\n      Name: /svo/loop_closures\n      Namespaces:\n        {}\n      Queue Size: 100\n      Value: true\n  Enabled: true\n  Global Options:\n    Background Color: 255; 255; 255\n    Fixed Frame: world\n    Frame Rate: 30\n  Name: root\n  Tools:\n    - Class: rviz/Interact\n      Hide Inactive Objects: true\n    - Class: rviz/MoveCamera\n    - Class: rviz/Select\n    - Class: rviz/FocusCamera\n    - Class: rviz/Measure\n    - Class: rviz/SetInitialPose\n      Topic: /initialpose\n    - Class: rviz/SetGoal\n      Topic: /move_base_simple/goal\n    - Class: rviz/PublishPoint\n      Single click: true\n      Topic: /clicked_point\n  Value: true\n  Views:\n    Current:\n      Class: rviz/Orbit\n      Distance: 7.0305\n      Enable Stereo Rendering:\n        Stereo Eye Separation: 0.06\n        Stereo Focal Distance: 1\n        Swap Stereo Eyes: false\n        Value: false\n      Focal Point:\n        X: 0.583405\n        Y: 0.297882\n        Z: -0.138986\n      Name: Current View\n      Near Clip Distance: 0.01\n      Pitch: 0.414796\n      Target Frame: <Fixed Frame>\n      Value: Orbit (rviz)\n      Yaw: 4.51357\n    Saved: ~\nWindow Geometry:\n  /remode/depth:\n    collapsed: false\n  /svo/image/0:\n    collapsed: false\n  Displays:\n    collapsed: false\n  Height: 1056\n  Hide Left Dock: false\n  Hide Right Dock: false\n  QMainWindow State: 000000ff00000000fd000000040000000000000285000003dafc020000000cfb0000001200530065006c0065006300740069006f006e00000000280000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000280000019f000000dd00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018002f00730076006f002f0069006d006100670065002f003001000001cd000002350000001600fffffffb0000001a002f00720065006d006f00640065002f0064006500700074006800000002f1000001110000001600fffffffb0000000a0049006d006100670065010000024e000003cc0000000000000000fb0000000a0049006d0061006700650100000433000001e70000000000000000000000010000010f000003dafc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000028000003da000000b000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000003ce0000003efc0100000002fb0000000800540069006d00650000000000000003ce000002f600fffffffb0000000800540069006d00650100000000000004500000000000000000000003e0000003da00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000\n  Selection:\n    collapsed: false\n  Time:\n    collapsed: false\n  Tool Properties:\n    collapsed: false\n  Views:\n    collapsed: false\n  Width: 1920\n  X: 1200\n  Y: 636\n"
  },
  {
    "path": "svo_ros/src/backend_factory.cpp",
    "content": "#include <svo_ros/backend_factory.h>\n\n#include <memory>\n\n#include <ros/package.h>\n#include <vikit/params_helper.h>\n\n#include <svo/imu_handler.h>\n#include <svo/backend/backend_optimizer.h>\n#include <svo/backend/backend_interface.h>\n#include <svo/backend/graph_manager.h>\n\nnamespace svo {\nnamespace backend_factory {\n\nBackendInterface::Ptr makeBackend(const ros::NodeHandle& pnh)\n{\n  GraphManagerOptions graph_manager_options;\n  graph_manager_options.reproj_error_noise =\n      vk::param<double>(pnh, \"ba_reproj_error_noise\", 1.0/370.0);\n  graph_manager_options.smart_reproj_threshold =\n      vk::param<double>(pnh, \"ba_smart_reproj_threshold\", 3.0/370.0);\n  graph_manager_options.min_parallax_thresh =\n      vk::param<double>(pnh, \"ba_min_parallax_deg\", 5.0)/180.0*M_PI;\n  graph_manager_options.trace_tracks =\n      vk::param<bool>(pnh, \"ba_trace_tracks\", false);\n  graph_manager_options.use_robust_px_noise =\n      vk::param<bool>(pnh, \"ba_use_robust_px_noise\", false);\n  graph_manager_options.init_pos_sigma =\n      vk::param<double>(pnh, \"ba_init_pos_sigma_meter\", 0.001);\n  graph_manager_options.init_roll_pitch_sigma =\n      vk::param<double>(pnh, \"ba_init_roll_pitch_sigma_degree\", 45)/180.0*M_PI;\n  graph_manager_options.init_yaw_sigma =\n      vk::param<double>(pnh, \"ba_init_yaw_sigma_degree\", 2)/180.0*M_PI;\n\n  OptimizerBackendOptions backend_options;\n  backend_options.verbose =\n      vk::param<bool>(pnh, \"ba_verbose\", false);\n  backend_options.max_iterations_per_update =\n      vk::param<int>(pnh, \"ba_max_iterations_per_update\", 10);\n  backend_options.output_errors =\n      vk::param<bool>(pnh, \"ba_output_errors\", false);\n  backend_options.trace_dir =\n      vk::param<std::string>(pnh, \"trace_dir\", ros::package::getPath(\"svo\")+\"/trace\");\n  backend_options.isam_relinearize_thresh =\n      vk::param<double>(pnh, \"isam_relinearize_thresh\", 0.1);\n  backend_options.isam_relinearize_skip =\n      vk::param<int>(pnh, \"isam_relinearize_skip\", 1);\n  backend_options.isam_wildfire_thresh =\n      vk::param<double>(pnh, \"isam_wildfire_thresh\", 0.001);\n  backend_options.isam_detailed_results =\n      vk::param<double>(pnh, \"isam_detailed_results\", false);\n\n  BackendInterfaceOptions ba_interface_options;\n  ba_interface_options.trace_dir = backend_options.trace_dir;\n  ba_interface_options.isam_wait_time_ms =\n      vk::param<int>(pnh, \"isam_wait_time_ms\", 2);\n  ba_interface_options.use_smart_factors =\n      vk::param<bool>(pnh, \"ba_use_smart_factors\", false);\n  ba_interface_options.add_imu_factors =\n      vk::param<bool>(pnh, \"ba_add_imu_factors\", false);\n  ba_interface_options.min_num_obs =\n      vk::param<int>(pnh, \"ba_min_num_obs\", 2);\n  ba_interface_options.n_frames_in_init_ba =\n      vk::param<int>(pnh, \"ba_n_frames_in_init_ba\", 8);\n\n  BackendInterface::Ptr ba_interface =\n      std::make_shared<BackendInterface>(\n        ba_interface_options, graph_manager_options, backend_options);\n\n  if(vk::param<bool>(pnh, \"ba_parallelized\", false))\n    ba_interface->startThread();\n\n  return ba_interface;\n}\n\n} // namespace vin_factory\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/backend_visualizer.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#include <svo_ros/backend_visualizer.h>\n\n// ros\n#include <ros/package.h>\n#include <visualization_msgs/Marker.h>\n#include <visualization_msgs/MarkerArray.h>\n\n// svo\n#include <vikit/timer.h>\n#include <vikit/output_helper.h>\n#include <vikit/params_helper.h>\n\n// gtsam\n#include <gtsam/nonlinear/NonlinearFactorGraph.h>\n#include <gtsam/nonlinear/Values.h>\n#include <gtsam/geometry/Point3.h>\n#include <gtsam/geometry/Pose3.h>\n#include <gtsam/inference/Symbol.h>\n#include <gtsam/navigation/ImuBias.h>\n#include <gtsam/geometry/Cal3_S2.h>\n#include <gtsam/slam/SmartProjectionPoseFactor.h>\n\nnamespace svo {\n\nconst std::string BackendVisualizer::kWorldFrame = \"world\";\n\nBackendVisualizer::BackendVisualizer(\n    const std::string& trace_dir,\n    const ros::NodeHandle& pnh)\n  : pnh_(pnh)\n  , trace_id_(0)\n  , trace_dir_(trace_dir)\n  , vis_scale_(vk::param<double>(pnh_, \"publish_marker_scale\", 1.2))\n{\n  // Init ROS Marker Publishers\n  pub_markers_ = pnh_.advertise<visualization_msgs::Marker>(\"ba_frames\", 100);\n  pub_pc_ = pnh_.advertise<PointCloud>(\"ba_pointcloud\", 1);\n}\n\nvoid BackendVisualizer::visualizeFrames(const gtsam::Values& values)\n{\n\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  double marker_scale = 0.03*vis_scale_;\n\n  gtsam::Values::ConstFiltered<gtsam::Pose3> frames =\n      values.filter<gtsam::Pose3>(gtsam::Symbol::ChrTest('x'));\n\n  // position of each frame\n  visualization_msgs::Marker m;\n  m.header.frame_id = kWorldFrame;\n  m.header.stamp = ros::Time();\n  m.ns = \"frames\";\n  m.id = 1;\n  m.type = visualization_msgs::Marker::POINTS;\n  m.action = 0; // add/modify\n  m.scale.x = marker_scale;\n  m.scale.y = marker_scale;\n  m.scale.z = marker_scale;\n  m.color.a = 1.0;\n  m.color.r = 1.0;\n  m.color.g = 0.0;\n  m.color.b = 0.0;\n  m.points.reserve(frames.size());\n  for(auto it = frames.begin(); it != frames.end(); ++it)\n  {\n    const gtsam::Point3& xyz = it->value.translation();\n    geometry_msgs::Point p;\n    p.x = xyz.x();\n    p.y = xyz.y();\n    p.z = xyz.z();\n    m.points.push_back(p);\n  }\n  pub_markers_.publish(m);\n  VLOG(30) << \"Viz: Published \" << m.points.size() << \" frames.\";\n\n  // line trip as trajectory\n  visualization_msgs::Marker m_traj;\n  m_traj.header.frame_id = kWorldFrame;\n  m_traj.header.stamp = ros::Time();\n  m_traj.ns = \"traj\";\n  m_traj.id = 2;\n  m_traj.type = visualization_msgs::Marker::LINE_STRIP;\n  m_traj.action = 0; // add/modify\n  m_traj.scale.x = marker_scale;\n  m_traj.scale.y = marker_scale;\n  m_traj.scale.z = marker_scale;\n  m_traj.color.a = 1.0;\n  m_traj.color.r = 0.0;\n  m_traj.color.g = 1.0;\n  m_traj.color.b = 0.0;\n  m_traj.points.reserve(frames.size());\n  for(auto it = frames.begin(); it != frames.end(); ++it)\n  {\n    const gtsam::Point3& xyz = it->value.translation();\n    geometry_msgs::Point p;\n    p.x = xyz.x();\n    p.y = xyz.y();\n    p.z = xyz.z();\n    m_traj.points.push_back(p);\n  }\n  pub_markers_.publish(m_traj);\n\n  // coordinate frame\n  int i = 0;\n  for(auto it = frames.begin(); it != frames.end(); ++it)\n  {\n    vk::output_helper::publishFrameMarker(\n          pub_markers_,\n          it->value.rotation().matrix(),\n          it->value.translation().vector(),\n          \"keyframes\",\n          ros::Time::now(), (i++)*10, 0, 0.05);\n  }\n}\n\nvoid BackendVisualizer::visualizePoints(const gtsam::Values& values)\n{\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  double marker_scale = 0.03*vis_scale_;\n  visualization_msgs::Marker m;\n  m.header.frame_id = kWorldFrame;\n  m.header.stamp = ros::Time();\n  m.ns = \"points\";\n  m.id = 0;\n  m.type = visualization_msgs::Marker::POINTS;\n  m.action = 0; // add/modify\n  m.scale.x = marker_scale;\n  m.scale.y = marker_scale;\n  m.scale.z = marker_scale;\n  m.color.a = 1.0;\n  m.color.r = 0.5;\n  m.color.g = 0.0;\n  m.color.b = 0.5;\n  gtsam::Values::ConstFiltered<gtsam::Point3> points =\n      values.filter<gtsam::Point3>(gtsam::Symbol::ChrTest('l'));\n  const size_t n_pts = points.size();\n  m.points.reserve(n_pts);\n  for(auto it = points.begin(); it != points.end(); ++it)\n  {\n    const gtsam::Point3& xyz = it->value;\n    geometry_msgs::Point p;\n    p.x = xyz.x();\n    p.y = xyz.y();\n    p.z = xyz.z();\n    m.points.push_back(p);\n  }\n  pub_markers_.publish(m);\n  VLOG(30) << \"Viz: Published \" << m.points.size() << \" points.\";\n}\n\nvoid BackendVisualizer::publishPointcloud(const gtsam::Values& values)\n{\n  if(pub_pc_.getNumSubscribers() == 0)\n    return;\n\n  PointCloud::Ptr pc(new PointCloud);\n  pc->header.frame_id = kWorldFrame;\n  pc->header.stamp = ros::Time::now().toNSec() / 1000ull;\n\n  gtsam::Values::ConstFiltered<gtsam::Point3> points =\n      values.filter<gtsam::Point3>(gtsam::Symbol::ChrTest('l'));\n  pc->reserve(points.size());\n  for(auto it = points.begin(); it != points.end(); ++it)\n  {\n    const gtsam::Point3& xyz = it->value;\n    PointType p;\n    p.x = xyz.x();\n    p.y = xyz.y();\n    p.z = xyz.z();\n    pc->push_back(p);\n  }\n  pub_pc_.publish(pc);\n}\n\nvoid BackendVisualizer::visualizeSmartFactors(const SmartFactorMap& smart_factors)\n{\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  double marker_scale = 0.03*vis_scale_;\n  visualization_msgs::Marker m;\n  m.header.frame_id = kWorldFrame;\n  m.header.stamp = ros::Time();\n  m.ns = \"smart_points\";\n  m.id = 0;\n  m.type = visualization_msgs::Marker::POINTS;\n  m.action = 0; // add/modify\n  m.scale.x = marker_scale;\n  m.scale.y = marker_scale;\n  m.scale.z = marker_scale;\n  m.color.a = 1.0;\n  m.color.r = 0.0;\n  m.color.g = 0.7;\n  m.color.b = 0.0;\n  m.points.reserve(smart_factors.size());\n  size_t n_degenerate = 0;\n  size_t n_cheirality = 0;\n  for(const auto& sf : smart_factors)\n  {\n    gtsam::Vector3 xyz = sf.second.first->point().get().vector();\n    if(!sf.second.first->isDegenerate())\n    {\n      geometry_msgs::Point p;\n      p.x = xyz.x();\n      p.y = xyz.y();\n      p.z = xyz.z();\n      m.points.push_back(p);\n    }\n    else\n    {\n      ++n_degenerate;\n      if(sf.second.first->isPointBehindCamera())\n        ++n_cheirality;\n    }\n  }\n  pub_markers_.publish(m);\n\n  // publish degenerate\n  m.points.clear();\n  m.id = 1;\n  m.color.r = 0.5;\n  m.color.g = 0.0;\n  m.color.b = 0.0;\n  m.points.reserve(smart_factors.size());\n  for(const auto& sf : smart_factors)\n  {\n    gtsam::Vector3 xyz = sf.second.first->point().get().vector();\n    if(sf.second.first->isDegenerate())\n    {\n      geometry_msgs::Point p;\n      p.x = xyz.x();\n      p.y = xyz.y();\n      p.z = xyz.z();\n      m.points.push_back(p);\n    }\n  }\n  pub_markers_.publish(m);\n\n  VLOG(30) << \"Viz: Published \" << m.points.size() << \" smart-factors.\";\n  VLOG(30) << \"Viz: Number of degenerate smart-factors:\" << n_degenerate;\n  VLOG(30) << \"Viz: Number of points behind camera smart-factors:\" << n_cheirality;\n}\n\nvoid BackendVisualizer::visualizeVelocity(const gtsam::Values& values)\n{\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  double marker_scale = 0.02*vis_scale_; // 0.02\n  double velocity_scale = 0.1*vis_scale_; // 0.1\n  visualization_msgs::Marker m;\n  m.header.frame_id = kWorldFrame;\n  m.header.stamp = ros::Time();\n  m.ns = \"velocity\";\n  m.id = 0;\n  m.type = visualization_msgs::Marker::LINE_LIST;\n  m.action = 0; // add/modify\n  m.scale.x = marker_scale;\n  m.scale.y = marker_scale;\n  m.scale.z = marker_scale;\n  m.color.a = 1.0;\n  m.color.r = 0.0;\n  m.color.g = 0.0;\n  m.color.b = 1.0;\n  gtsam::Values::ConstFiltered<gtsam::Pose3> frames =\n      values.filter<gtsam::Pose3>(gtsam::Symbol::ChrTest('x'));\n  const size_t n_frames = frames.size();\n  m.points.reserve(n_frames);\n  for(auto it = frames.begin(); it != frames.end(); ++it)\n  {\n    const gtsam::Pose3& T_world_imu = it->value;\n    const gtsam::Point3& xyz = T_world_imu.translation();\n    geometry_msgs::Point p;\n    p.x = xyz.x();\n    p.y = xyz.y();\n    p.z = xyz.z();\n    m.points.push_back(p);\n    const gtsam::Symbol frame_symbol(it->key);\n    const gtsam::Symbol vel_symbol('v', frame_symbol.index());\n    const gtsam::Vector3 vel = values.at< gtsam::Vector3 >(vel_symbol);\n    const gtsam::Vector3 xyz_plus = xyz.vector()+vel*velocity_scale;\n\n    p.x = xyz_plus.x();\n    p.y = xyz_plus.y();\n    p.z = xyz_plus.z();\n    m.points.push_back(p);\n  }\n  pub_markers_.publish(m);\n  VLOG(30) << \"Viz: Published \" << m.points.size()/2 << \" velocities.\";\n}\n\nvoid BackendVisualizer::visualizePoseCovariance(\n    const Transformation& T_W_B,\n    const Eigen::Matrix<double, 6, 6>& covariance)\n{\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  vk::output_helper::publishGtsamPoseCovariance(\n        pub_markers_, T_W_B.getPosition(), T_W_B.getRotationMatrix(), covariance,\n        \"covariance\", trace_id_, 0, 2.0, Eigen::Vector4d(0, 0, 0.5, 0.5));\n}\n\nvoid BackendVisualizer::tracePose(std::map<int, int64_t, std::less<int>> frameid_timestamp_map,\n                                  const gtsam::Values& values)\n{\n  std::string states_trace_name(trace_dir_+\"/traj_estimate.txt\");\n  ofs_states_.open(states_trace_name.c_str());\n  ofs_states_.precision(8);\n  CHECK(ofs_states_.is_open());\n\n  gtsam::Values::ConstFiltered<gtsam::imuBias::ConstantBias> biases =\n      values.filter<gtsam::imuBias::ConstantBias>(gtsam::Symbol::ChrTest('b'));\n  for(std::pair<int, int64_t> keyval : frameid_timestamp_map)\n  {\n    const gtsam::Pose3& T_wi = values.at<gtsam::Pose3>(gtsam::Symbol('x', keyval.first));\n    const Eigen::Quaterniond q(T_wi.rotation().matrix());\n    const Eigen::Vector3d p(T_wi.translation().vector());\n    ofs_states_ << keyval.second << \" \"\n                << p.x() << \" \" << p.y() << \" \" << p.z() << \" \"\n                << q.x() << \" \" << q.y() << \" \" << q.z() << \" \" << q.w() << \" \"\n                << std::endl;\n  }\n\n  // Trace pointcloud\n  std::string states_pc_name(trace_dir_+\"/pointcloud.txt\");\n  std::ofstream ofs_pc(states_pc_name.c_str());\n  CHECK(ofs_pc.is_open());\n\n  gtsam::Values::ConstFiltered<gtsam::Point3> points =\n      values.filter<gtsam::Point3>(gtsam::Symbol::ChrTest('l'));\n  for(auto it = points.begin(); it != points.end(); ++it)\n  {\n    const gtsam::Point3& xyz = it->value;\n    ofs_pc << xyz.x() << \" \" << xyz.y() << \" \" << xyz.z() << std::endl;\n  }\n  ofs_pc.close();\n}\n\nvoid BackendVisualizer::traceStates(const gtsam::Values& values)\n{\n  if(!ofs_states_.is_open())\n  {\n    std::string states_trace_name(trace_dir_+\"/trace_states.txt\");\n    ofs_states_.open(states_trace_name.c_str());\n    ofs_states_.precision(10);\n  }\n  CHECK(ofs_states_.is_open());\n\n  gtsam::Values::ConstFiltered<gtsam::imuBias::ConstantBias> biases =\n      values.filter<gtsam::imuBias::ConstantBias>(gtsam::Symbol::ChrTest('b'));\n  for(auto b : biases)\n  {\n    const gtsam::imuBias::ConstantBias& bias = b.value;\n    const size_t id = gtsam::Symbol(b.key).index();\n    const gtsam::Vector& velocity =\n        values.at<gtsam::Vector3>(gtsam::Symbol('v', id));\n    const gtsam::Pose3& T_wi =\n        values.at<gtsam::Pose3>(gtsam::Symbol('x', id));\n    const Eigen::Quaterniond q(T_wi.rotation().matrix());\n    ofs_states_ << trace_id_ << \" \"\n                << id << \" \"\n                << bias.accelerometer().x() << \" \"\n                << bias.accelerometer().y() << \" \"\n                << bias.accelerometer().z() << \" \"\n                << bias.gyroscope().x() << \" \"\n                << bias.gyroscope().y() << \" \"\n                << bias.gyroscope().z() << \" \"\n                << velocity.x() << \" \"\n                << velocity.y() << \" \"\n                << velocity.z() << \" \"\n                << T_wi.translation().x() << \" \"\n                << T_wi.translation().y() << \" \"\n                << T_wi.translation().z() << \" \"\n                << q.x() << \" \"\n                << q.y() << \" \"\n                << q.z() << \" \"\n                << q.w() << \" \"\n                << std::endl;\n  }\n  ++trace_id_;\n}\n\n/*\nvoid BackendVisualizer::traceStates(\n    const gtsam::Values& values,\n    const swe::SweGtsamBookeeper& book)\n{\n  if(!ofs_states_.is_open())\n  {\n    std::string states_trace_name(trace_dir_+\"/estimate_states.csv\");\n    ofs_states_.open(states_trace_name.c_str());\n    ofs_states_.precision(10);\n  }\n  CHECK(ofs_states_.is_open());\n\n  if(trace_id_ == 0)\n  {\n    // Write header.\n    ofs_states_ << \"# Iteration count, timestamp [ns], bax, bay, baz, bgx, bgy, bgz, vx, \"\n                << \"vy, vz, tx, ty, tz, qx, qy, qz, qw\" << std::endl;\n  }\n\n  std::vector<int64_t> timestamps;\n  book.getAllViNodeTimestamps(&timestamps);\n  for(int64_t timestamp : timestamps)\n  {\n    aslam::NFramesId nframe_id;\n    book.getNFrameIdFromTimestamp(timestamp, &nframe_id);\n    swe::SweGtsamBookeeper::ViNodeKeys vikeys;\n    book.getViNodeKeysFromNFrameId(nframe_id, &vikeys);\n\n    const gtsam::Pose3& T_wi = values.at<gtsam::Pose3>(vikeys.pose);\n    const gtsam::Vector& velocity = values.at<gtsam::Vector3>(vikeys.velocity);\n    const gtsam::imuBias::ConstantBias& bias =\n        values.at<gtsam::imuBias::ConstantBias>(vikeys.imubias);\n    const Eigen::Quaterniond q(T_wi.rotation().matrix());\n    ofs_states_ << trace_id_ << \", \"\n                << timestamp << \", \"\n                << bias.accelerometer().x() << \", \"\n                << bias.accelerometer().y() << \", \"\n                << bias.accelerometer().z() << \", \"\n                << bias.gyroscope().x() << \", \"\n                << bias.gyroscope().y() << \", \"\n                << bias.gyroscope().z() << \", \"\n                << velocity.x() << \", \"\n                << velocity.y() << \", \"\n                << velocity.z() << \", \"\n                << T_wi.translation().x() << \", \"\n                << T_wi.translation().y() << \", \"\n                << T_wi.translation().z() << \", \"\n                << q.x() << \", \"\n                << q.y() << \", \"\n                << q.z() << \", \"\n                << q.w() << std::endl;\n  }\n  ++trace_id_;\n}\n*/\n\nvoid BackendVisualizer::traceCovariance(\n    const Eigen::Matrix<double, 6, 6>& C,\n    const int64_t timestamp)\n{\n  if(!ofs_covariance_.is_open())\n  {\n    std::string states_trace_name(trace_dir_+\"/estimate_covariance.csv\");\n    ofs_covariance_.open(states_trace_name.c_str());\n    ofs_covariance_.precision(10);\n  }\n  CHECK(ofs_covariance_.is_open());\n\n  ofs_covariance_\n      << timestamp << \", \"\n      << C(0,0) << \",\" << C(0,1) << \",\" << C(0,2) << \",\" << C(0,3) << \",\" << C(0,4) << \",\" << C(0,5) << \",\"\n      << C(1,0) << \",\" << C(1,1) << \",\" << C(1,2) << \",\" << C(1,3) << \",\" << C(1,4) << \",\" << C(1,5) << \",\"\n      << C(2,0) << \",\" << C(2,1) << \",\" << C(2,2) << \",\" << C(2,3) << \",\" << C(2,4) << \",\" << C(2,5) << \",\"\n      << C(3,0) << \",\" << C(3,1) << \",\" << C(3,2) << \",\" << C(3,3) << \",\" << C(3,4) << \",\" << C(3,5) << \",\"\n      << C(4,0) << \",\" << C(4,1) << \",\" << C(4,2) << \",\" << C(4,3) << \",\" << C(4,4) << \",\" << C(4,5) << \",\"\n      << C(5,0) << \",\" << C(5,1) << \",\" << C(5,2) << \",\" << C(5,3) << \",\" << C(5,4) << \",\" << C(5,5)\n      << std::endl;\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/benchmark_node.cpp",
    "content": "#include <vector>\n#include <string>\n#include <algorithm>\n#include <iostream>\n#include <glog/logging.h>\n#include <gflags/gflags.h>\n#include <ros/ros.h>\n#include <ros/package.h>\n#include <opencv2/opencv.hpp>\n#include <vikit/params_helper.h>\n#include <vikit/blender_utils.h>\n#include <vikit/sample.h>\n#include <svo/common/conversions.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/imu_handler.h>\n#include <svo/frame_handler_mono.h>\n#include <svo/map.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo_ros/svo_interface.h>\n#include <svo/test_utils/synthetic_dataset.h>\n#include <svo/reprojector.h>\n#include <svo_ros/visualizer.h>\n#include <svo_ros/csv_dataset_reader.h>\n\n#ifdef SVO_USE_BACKEND\n#include <svo/backend/backend_interface.h>\n#include <svo/backend/backend_optimizer.h>\n#include <svo_ros/backend_visualizer.h>\n#endif\n\nnamespace svo {\n\nclass BenchmarkNode : public SvoInterface\n{\n  int frame_count_ = 0;\n  std::ofstream trace_gt_pose_;\n  std::ofstream trace_est_pose_;\n  std::ofstream trace_trans_error_;\n  std::ofstream trace_rot_error_;\n  std::ofstream trace_depth_error_;\n  double img_noise_sigma_;\n  size_t sleep_us_;\n\npublic:\n\n  BenchmarkNode(\n      const PipelineType& type,\n      const ros::NodeHandle& nh,\n      const ros::NodeHandle& pnh);\n\n  void traceGroundtruth(const Transformation& T_w_gt, const double timestamp);\n  void tracePose(const Transformation& T_w_f, const int64_t timestamp);\n  void tracePoseError(const Transformation& T_f_gt, const double timestamp);\n  void tracePoseKitti(const Transformation& T_w_f);\n  void traceDepthError(const FramePtr& frame, const cv::Mat& depthmap);\n  void addNoiseToImage(cv::Mat& img, double sigma);\n  void runBenchmark(const std::string& dataset_dir);\n  void runBlenderBenchmark(const std::string& dataset_dir, bool depthmap_has_zbuffer=false);\n  void runKittiBenchmark(const std::string& dataset_dir);\n  void runEurocBenchmark(const std::string& dataset_dir);\n  void runArrayBenchmark(const std::string& dataset_dir);\n};\n\nBenchmarkNode::BenchmarkNode(\n    const PipelineType& type,\n    const ros::NodeHandle& nh,\n    const ros::NodeHandle& pnh)\n  : SvoInterface(type, nh, pnh)\n  , img_noise_sigma_(vk::param<double>(pnh_, \"dataset_noise_sigma\", 0.0))\n  , sleep_us_(vk::param<int>(pnh_, \"sleep_us\", 0))\n{\n  // create pose tracefile\n  std::string trace_est_name(svo_->options_.trace_dir + \"/traj_estimate.txt\");\n  trace_est_pose_.open(trace_est_name.c_str());\n  if(trace_est_pose_.fail())\n    throw std::runtime_error(\"Could not create tracefile. Does folder exist?\");\n}\n\nvoid BenchmarkNode::traceGroundtruth(const Transformation& T_w_gt, const double timestamp)\n{\n  const Eigen::Quaterniond& q = T_w_gt.getRotation().toImplementation();\n  const Vector3d& p = T_w_gt.getPosition();\n  trace_gt_pose_.precision(15);\n  trace_gt_pose_.setf(std::ios::fixed, std::ios::floatfield );\n  trace_gt_pose_ << timestamp << \" \";\n  trace_gt_pose_.precision(6);\n  trace_gt_pose_ << p.x() << \" \" << p.y() << \" \" << p.z() << \" \"\n                 << q.x() << \" \" << q.y() << \" \" << q.z() << \" \" << q.w() << std::endl;\n}\n\nvoid BenchmarkNode::tracePose(const Transformation& T_w_f, const int64_t timestamp)\n{\n  const Eigen::Quaterniond& q = T_w_f.getRotation().toImplementation();\n  const Vector3d& p = T_w_f.getPosition();\n  trace_est_pose_.precision(8);\n  trace_est_pose_ << timestamp << \" \";\n  trace_est_pose_ << p.x() << \" \" << p.y() << \" \" << p.z() << \" \"\n                  << q.x() << \" \" << q.y() << \" \" << q.z() << \" \" << q.w() << std::endl;\n}\n\nvoid BenchmarkNode::tracePoseError(const Transformation& T_f_gt, const double timestamp)\n{\n  const Vector3d& et = T_f_gt.getPosition(); // translation error\n  trace_trans_error_.precision(15);\n  trace_trans_error_.setf(std::ios::fixed, std::ios::floatfield );\n  trace_trans_error_ << timestamp << \" \";\n  trace_trans_error_.precision(6);\n  trace_trans_error_ << et.x() << \" \" << et.y() << \" \" << et.z() << \" \" << std::endl;\n  Vector3d er(vk::dcm2rpy(T_f_gt.getRotationMatrix())); // rotation error in roll-pitch-yaw\n  trace_rot_error_.precision(15);\n  trace_rot_error_.setf(std::ios::fixed, std::ios::floatfield );\n  trace_rot_error_ << timestamp << \" \";\n  trace_rot_error_.precision(6);\n  trace_rot_error_ << er.x() << \" \" << er.y() << \" \" << er.z() << \" \" << std::endl;\n}\n\nvoid BenchmarkNode::tracePoseKitti(const Transformation& T_w_f)\n{\n  const Eigen::Matrix4d& T = T_w_f.getTransformationMatrix();\n  trace_est_pose_ << T(0,0) << \" \" << T(0, 1) << \" \" << T(0, 2) << \" \" << T(0, 3) << \" \"\n                  << T(1,0) << \" \" << T(1, 1) << \" \" << T(1, 2) << \" \" << T(1, 3) << \" \"\n                  << T(2,0) << \" \" << T(2, 1) << \" \" << T(2, 2) << \" \" << T(2, 3) << \" \"\n                  << std::endl;\n}\n\nvoid BenchmarkNode::traceDepthError(const FramePtr& frame, const cv::Mat& depthmap)\n{\n  trace_depth_error_.precision(6);\n  for(size_t i = 0; i < frame->numFeatures(); ++i)\n  {\n    if(frame->landmark_vec_[i])\n    {\n      const double depth_estimated = (frame->pos() - frame->pos()).norm();\n      const double depth_true = depthmap.at<float>((int) frame->px_vec_(1, i),\n                                                   (int) frame->px_vec_(0, i));\n      trace_depth_error_ << frame->id() << \" \"\n                         << depth_estimated-depth_true << std::endl;\n    }\n  }\n}\n\nvoid BenchmarkNode::addNoiseToImage(cv::Mat& img, double sigma)\n{\n  uint8_t* p = (uint8_t*) img.data;\n  uint8_t* p_end = img.ptr<uint8_t>(img.rows, img.cols);\n  while(p != p_end)\n  {\n    int val = *p + vk::Sample::gaussian(sigma) + 0.5;\n    *p = std::max(std::min(val, 255), 0);\n    ++p;\n  }\n}\n\nvoid BenchmarkNode::runBenchmark(const std::string& dataset_dir)\n{\n  SVO_INFO_STREAM(\"Run Benchmark\");\n\n  // Load imu messages.\n  if(imu_handler_)\n  {\n    std::string imu_filename(dataset_dir + \"/data/imu.txt\");\n    if(!imu_handler_->loadImuMeasurementsFromFile(imu_filename))\n      return;\n  }\n\n  // Load images.\n  std::string img_filename(dataset_dir + \"/data/images.txt\");\n  std::ifstream img_fs(img_filename.c_str());\n  if(!img_fs.is_open())\n  {\n    SVO_ERROR_STREAM(\"Could not open images file \" << img_filename);\n    return;\n  }\n\n  size_t first_frame_id = vk::getParam<int>(\"svo/dataset_first_frame\", 0);\n  bool trace_only_keyframes = vk::getParam<bool>(\"svo/trace_only_keyframes\", false);\n  std::map<int, int64_t, std::less<int>> frameid_timestamp_map;\n  while(img_fs.good() && !img_fs.eof() && ros::ok())\n  {\n    if(img_fs.peek() == '#') // skip comments\n      img_fs.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');\n\n    // load image\n    size_t img_id;\n    double stamp_seconds;\n    std::string img_name;\n    img_fs >> img_id >> stamp_seconds >> img_name;\n    img_fs.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');\n    if(img_id < first_frame_id)\n      continue;\n    uint64_t stamp_nanoseconds = stamp_seconds*1e9;\n    std::string img_filename(dataset_dir + \"/data/\" + img_name);\n    cv::Mat img(cv::imread(img_filename, 0));\n    if(img.empty())\n    {\n      SVO_ERROR_STREAM(\"Reading image \"<<img_filename<<\" failed.\");\n      break;\n    }\n\n    // add image to VO\n    setImuPrior(stamp_nanoseconds);\n    processImageBundle({img}, stamp_nanoseconds);\n    publishResults({img}, ros::Time::now().toNSec());\n\n    if(svo_->stage() == Stage::kTracking)\n    {\n      const FrameBundle& nframe = *svo_->getLastFrames();\n      if(nframe.isKeyframe())\n      {\n        frameid_timestamp_map.insert(\n              std::make_pair(nframe.getBundleId(), img_id));\n      }\n      if(!svo_->getBundleAdjuster() &&\n         ((nframe.isKeyframe() && trace_only_keyframes) || !trace_only_keyframes))\n        tracePose(nframe.get_T_W_B(), img_id);\n    }\n\n    // restart if it fails!\n    if(svo_->stage() == Stage::kPaused)\n      svo_->start();\n\n    usleep(sleep_us_);\n  }\n\n#ifdef SVO_USE_BACKEND\n  if(backend_interface_)\n  {\n    std::cout << \"frameid_timestamp_map.size = \" << frameid_timestamp_map.size() << std::endl;\n    backend_visualizer_->tracePose(\n          frameid_timestamp_map, backend_interface_->optimizer_->estimate_);\n  }\n#endif\n}\n\nvoid BenchmarkNode::runBlenderBenchmark(const std::string& dataset_dir, bool depthmap_has_zbuffer)\n{\n  SVO_INFO_STREAM(\"Run Blender Benchmark\");\n\n  // since initialization is done using the groundtruth for synthetic data,\n  // tell the reprojector not to delete points with less than two observations\n  svo_->reprojectors_.at(0)->options_.remove_unconstrained_points = false;\n\n  // create tracefiles\n  trace_gt_pose_.open(svo_->options_.trace_dir + \"/groundtruth_matched.txt\");\n  trace_trans_error_.open(svo_->options_.trace_dir + \"/translation_error.txt\");\n  trace_rot_error_.open(svo_->options_.trace_dir + \"/orientation_error.txt\");\n  trace_depth_error_.open(svo_->options_.trace_dir + \"/depth_error.txt\");\n  if(trace_trans_error_.fail() || trace_rot_error_.fail() || trace_depth_error_.fail() || trace_gt_pose_.fail())\n    throw std::runtime_error(\"Could not create tracefile. Does folder exist?\");\n\n  // process dataset\n  test_utils::SyntheticDataset dataset(dataset_dir, 0, 0);\n\n  // set first frame\n  const size_t n_pyr_levels = 5;\n  FramePtr ref_frame;\n  cv::Mat depthmap;\n  Transformation T_w_gt;\n  if(dataset.getNextFrame(n_pyr_levels, ref_frame, &depthmap))\n  {\n    // extract features, generate features with 3D points\n    DetectorOptions fast_options;\n    AbstractDetector::Ptr detector = feature_detection_utils::makeDetector(fast_options, ref_frame->cam());\n    detector->detect(ref_frame);\n\n    if(depthmap_has_zbuffer)\n    {\n      SVO_INFO_STREAM(\"Depthmap contains z-buffer values\");\n    }\n    else\n    {\n      SVO_INFO_STREAM(\"Depthmap contains distance to camera values\");\n    }\n\n    for(size_t i = 0; i < ref_frame->num_features_; ++i)\n    {\n      const float depth = depthmap.at<float>(ref_frame->px_vec_(1, i), ref_frame->px_vec_(0, i));\n      Eigen::Vector3d landmark_ref;\n      if(depthmap_has_zbuffer)\n      {\n        landmark_ref = ref_frame->f_vec_.col(i) / ref_frame->f_vec_(2,i) * depth;\n      }\n      else\n      {\n        SVO_DEBUG_STREAM(\"Depth (\" << ref_frame->px_vec_(0, i) << \" , \" << ref_frame->px_vec_(1, i) << \") = \" << depth);\n        landmark_ref = depth * (ref_frame->f_vec_.col(i)).normalized();\n      }\n      Eigen::Vector3d landmark_world = ref_frame->T_f_w_.inverse() * landmark_ref;\n      svo::PointPtr point(new svo::Point(landmark_world));\n      point->addObservation(ref_frame, i);\n      ref_frame->landmark_vec_[i] = point;\n    }\n    SVO_INFO_STREAM(\"Added \"<<ref_frame->num_features_<<\" 3d pts to the reference frame.\");\n\n    svo_->setFirstFrames({ref_frame});\n    SVO_INFO_STREAM(\"Set reference frame.\");\n  }\n  else\n  {\n    SVO_ERROR_STREAM(\"Could not load first frame\");\n    return;\n  }\n\n  // process next frames\n  frame_count_ = 1;\n  FramePtr cur_frame;\n  while(dataset.getNextFrame(n_pyr_levels, cur_frame, nullptr) && ros::ok())\n  {\n    T_w_gt = cur_frame->T_f_w_.inverse();\n\n    ++frame_count_;\n    SVO_DEBUG_STREAM(\"Processing image \" << frame_count_ << \".\");\n\n    processImageBundle({cur_frame->img()}, cur_frame->id());\n    publishResults({cur_frame->img()}, ros::Time::now().toNSec());\n\n    if(svo_->stage() != Stage::kTracking)\n    {\n      SVO_ERROR_STREAM(\"SVO failed before entire dataset could be processed.\");\n      break;\n    }\n\n    if(frame_count_ == 50)\n      svo_->reprojectors_.at(0)->options_.remove_unconstrained_points = true;\n\n    // Compute pose error and trace to file\n    if(svo_->getLastFrames())\n    {\n      Transformation T_f_gt(svo_->getLastFrames()->at(0)->T_f_w_*T_w_gt);\n      tracePoseError(T_f_gt, cur_frame->getTimestampSec());\n      tracePose(svo_->getLastFrames()->at(0)->T_f_w_.inverse(), cur_frame->id());\n      //traceDepthError(vo_->lastFrame(), depthmap);\n      traceGroundtruth(T_w_gt, cur_frame->getTimestampSec());\n    }\n\n    usleep(sleep_us_);\n  }\n}\n\nvoid BenchmarkNode::runKittiBenchmark(const std::string& dataset_dir)\n{\n  VLOG(1) << \"Run Kitti Benchmark\";\n  std::string dataset(dataset_dir + \"/data/images.txt\");\n  std::ifstream dataset_fs(dataset.c_str());\n  if(!dataset_fs.is_open()) {\n    std::cout << \"Could not open images file: \" << dataset << std::endl;\n    return;\n  }\n  std::cout << \"cam0 label = \" << svo_->cams_->getCamera(0).getLabel() << std::endl;\n  std::cout << \"cam1 label = \" << svo_->cams_->getCamera(1).getLabel() << std::endl;\n\n  // process dataset\n  while(dataset_fs.good() && !dataset_fs.eof() && ros::ok())\n  {\n    // skip comments\n    if(dataset_fs.peek() == '#')\n      dataset_fs.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');\n\n    // load data\n    uint64_t id;\n    double stamp;\n    std::string img_l_name, img_r_name;\n    dataset_fs >> id >> stamp >> img_l_name >> img_r_name;\n    cv::Mat img_l_8uC1(cv::imread(dataset_dir+\"/data/\"+img_l_name, 0));\n    cv::Mat img_r_8uC1(cv::imread(dataset_dir+\"/data/\"+img_r_name, 0));\n    if(img_l_8uC1.empty() || img_r_8uC1.empty())\n    {\n      SVO_ERROR_STREAM(\"Reading image failed: \" << img_l_name);\n      return;\n    }\n    processImageBundle({img_l_8uC1, img_r_8uC1}, id);\n    publishResults({img_l_8uC1, img_r_8uC1}, ros::Time::now().toNSec());\n    if(svo_->getLastFrames())\n      tracePoseKitti(svo_->getLastFrames()->at(0)->T_world_cam());\n  }\n  VLOG(1) << \"Dataset processing finished. shutting down...\";\n}\n\nvoid BenchmarkNode::runEurocBenchmark(const std::string& dataset_dir)\n{\n  VLOG(1) << \"Run Euroc Benchmark\";\n  const size_t num_cameras = ncam_->numCameras();\n  std::vector<size_t> cam_indices;\n  for(size_t i = 0; i < num_cameras; ++i)\n    cam_indices.push_back(i);\n  CsvDatasetReader dataset(dataset_dir+\"/data\", {0}, cam_indices, {});\n  std::vector<dataset::CameraMeasurement::ConstPtr> cam_measurements(num_cameras, nullptr);\n  std::map<int, int64_t, std::less<int>> frameid_timestamp_map;\n  int counter = 0u;\n  const int fixed_frame_rate = vk::param<int>(pnh_, \"fixed_frame_rate\", -1); // negative means not fixed\n  const int first_frame_id = vk::param<int>(pnh_, \"dataset_first_frame\", 0);\n  const int last_frame_id = vk::param<int>(pnh_, \"dataset_last_frame\", -1);\n  for(const CsvDatasetReader::StampMeasurementPair& item : dataset)\n  {\n\n    const dataset::MeasurementBase::Ptr& data = item.second;\n    switch (data->measurement_type)\n    {\n      case dataset::MeasurementType::kCamera:\n      {\n        dataset::CameraMeasurement::ConstPtr cam_data =\n            std::dynamic_pointer_cast<const dataset::CameraMeasurement>(data);\n        CHECK_LE(cam_data->camera_index, cam_measurements.size());\n        cam_measurements.at(cam_data->camera_index) = cam_data;\n\n        // We can process the measurments only if we received all camera images.\n        // TODO(Cfo): check that the measurements are synchronized!\n        if(std::all_of(cam_measurements.cbegin(), cam_measurements.cend(),\n                       [](dataset::CameraMeasurement::ConstPtr i){ return i.get() != nullptr; }))\n        {\n          // Process frame-bundle.\n          if(++counter >= first_frame_id)\n          {\n            VLOG(3) << \"Euroc count: \" << counter;\n            vk::Timer t;\n\n            const int64_t stamp = cam_measurements[0]->timestamp_nanoseconds;\n            std::vector<cv::Mat> img_vec;\n            for(const auto& m : cam_measurements)\n              img_vec.push_back(m->getImage());\n            setImuPrior(stamp);\n            processImageBundle(img_vec, stamp);\n            publishResults(img_vec, stamp);\n            if(svo_->getLastFrames())\n            {\n              const FrameBundle& nframe = *svo_->getLastFrames();\n              if(nframe.isKeyframe())\n              {\n                frameid_timestamp_map.insert(\n                      std::make_pair(nframe.getBundleId(), nframe.getMinTimestampNanoseconds()));\n                if(!svo_->getBundleAdjuster())\n                  tracePose(nframe.get_T_W_B(), nframe.getMinTimestampNanoseconds());\n              }\n            }\n\n            t.stop();\n            if(fixed_frame_rate > 0 && svo_->stage() == Stage::kTracking)\n            {\n              const double time_remaining = 1.0/fixed_frame_rate - t.getTime();\n              if(time_remaining > 0.0)\n              {\n                int sleep_ms = time_remaining*1000.0;\n                VLOG(3) << \"Sleep for \" << sleep_ms;\n                std::this_thread::sleep_for(std::chrono::milliseconds(sleep_ms));\n              }\n            }\n\n            // restart if it fails!\n            if(svo_->stage() == Stage::kPaused)\n              svo_->start();\n          }\n          std::fill(cam_measurements.begin(), cam_measurements.end(), nullptr);\n        }\n        break;\n      }\n\n      case dataset::MeasurementType::kImu:\n      {\n        if(imu_handler_)\n        {\n          dataset::ImuMeasurement::ConstPtr imu_data =\n                std::dynamic_pointer_cast<const dataset::ImuMeasurement>(data);\n          const ImuMeasurement m(\n                imu_data->timestamp_nanoseconds *\n                common::conversions::kNanoSecondsToSeconds,\n                imu_data->acc_gyro_measurement.tail<3>(),\n                imu_data->acc_gyro_measurement.head<3>());\n\n          imu_handler_->addImuMeasurement(m);\n        }\n        break;\n      }\n\n      default:\n        LOG(FATAL) << \"Unhandled message type: \" << static_cast<int>(data->measurement_type);\n        break;\n    }\n\n    if(last_frame_id > 0 && counter > last_frame_id)\n      break;\n\n    if(!ros::ok())\n      break;\n  }\n\n#ifdef SVO_USE_BACKEND\n  if(backend_interface_)\n  {\n    backend_visualizer_->tracePose(\n          frameid_timestamp_map, backend_interface_->optimizer_->estimate_);\n  }\n#endif\n\n  VLOG(1) << \"Dataset processing finished. shutting down...\";\n}\n\nvoid BenchmarkNode::runArrayBenchmark(const std::string& dataset_dir)\n{\n  // load images\n  std::string img_filename(dataset_dir + \"/data/images.txt\");\n  std::ifstream img_fs(img_filename.c_str());\n  if(!img_fs.is_open())\n  {\n    SVO_ERROR_STREAM(\"Could not open images file \" << img_filename);\n    return;\n  }\n\n  size_t first_frame_id = vk::getParam<int>(\"svo/dataset_first_frame\", 0);\n  while(img_fs.good() && !img_fs.eof() && ros::ok())\n  {\n    if(img_fs.peek() == '#') // skip comments\n      img_fs.ignore(std::numeric_limits<std::streamsize>::max(), '\\n');\n\n    // load image\n    uint64_t stamp = 0;\n    std::string imgname1, imgname2, imgname3, imgname4;\n    img_fs >> stamp >> imgname1 >> imgname2 >> imgname3 >> imgname4;\n    if(stamp < first_frame_id)\n      continue;\n    std::string();\n    cv::Mat img1(cv::imread(dataset_dir + \"/data/\" + imgname1, 0));\n    cv::Mat img2(cv::imread(dataset_dir + \"/data/\" + imgname2, 0));\n    cv::Mat img3(cv::imread(dataset_dir + \"/data/\" + imgname3, 0));\n    cv::Mat img4(cv::imread(dataset_dir + \"/data/\" + imgname4, 0));\n    if(img1.empty() || img2.empty() || img3.empty() || img4.empty())\n    {\n      SVO_ERROR_STREAM(\"Reading image \"<< dataset_dir << \"/data/\" << imgname1 <<\" failed.\");\n      return;\n    }\n\n    // add image to VO\n    processImageBundle({img1, img2, img3, img4}, stamp);\n    publishResults({img1, img2, img3, img4}, stamp);\n\n    cv::waitKey(10);\n  }\n}\n\n} // namespace svo\n\nint main(int argc, char** argv)\n{\n  google::InitGoogleLogging(argv[0]);\n  google::ParseCommandLineFlags(&argc, &argv, true);\n  google::InstallFailureSignalHandler();\n\n  ros::init(argc, argv, \"svo\");\n  ros::NodeHandle nh;\n  ros::NodeHandle pnh(\"~\");\n  std::string benchmark_dir(vk::param<std::string>(pnh, \"dataset_directory\", \"/tmp\"));\n  if(vk::param<bool>(pnh, \"dataset_is_kitti\", false))\n  {\n    svo::BenchmarkNode benchmark(svo::PipelineType::kStereo, nh, pnh);\n    benchmark.runKittiBenchmark(benchmark_dir);\n  }\n  else if(vk::param<bool>(pnh, \"dataset_is_euroc\", false))\n  {\n    svo::PipelineType type = (vk::param<bool>(pnh, \"dataset_is_stereo\", true)) ?\n          svo::PipelineType::kStereo : svo::PipelineType::kMono;\n    svo::BenchmarkNode benchmark(type, nh, pnh);\n    benchmark.runEurocBenchmark(benchmark_dir);\n  }\n  else if(vk::param<bool>(pnh, \"dataset_is_blender\", false))\n  {\n    // does depthmap contains z values or distance to the camera (default)\n    const bool depthmap_has_zbuffer = vk::param<bool>(pnh, \"depthmap_has_zbuffer\", false);\n    svo::BenchmarkNode benchmark(svo::PipelineType::kMono, nh, pnh);\n    benchmark.runBlenderBenchmark(benchmark_dir, depthmap_has_zbuffer);\n  }\n  else\n  {\n    svo::BenchmarkNode benchmark(svo::PipelineType::kMono, nh, pnh);\n    benchmark.runBenchmark(benchmark_dir);\n  }\n\n  SVO_INFO_STREAM(\"BenchmarkNode finished.\");\n  return 0;\n}\n"
  },
  {
    "path": "svo_ros/src/csv_dataset_reader.cpp",
    "content": "#include <svo_ros/csv_dataset_reader.h>\n\n#include <fstream>\n#include <iostream>\n\n#include <svo/common/conversions.h>\n\nnamespace svo {\n\nnamespace utils {\n\nvoid checkHeaderAndOpenStream(\n    const std::string& filename,\n    const std::string& header,\n    std::ifstream* fs)\n{\n  CHECK_NOTNULL(fs);\n  VLOG(1) << \"Reading file \" << filename;\n  fs->open(filename.c_str(), std::ios::in);\n  CHECK(fs);\n  CHECK(fs->is_open()) << \"Failed to open file \" << filename;\n  CHECK(!fs->eof()) << \"File seems to contain no content!\";\n\n  std::string line;\n  std::getline(*fs, line);\n  CHECK_EQ(line, header) << \"Invalid header.\";\n}\n\nvoid readLine(\n    const std::string& line,\n    const size_t num_elements,\n    std::vector<std::string>* elements)\n{\n  elements->resize(num_elements);\n  std::stringstream line_stream(line);\n  for (size_t i = 0u; i < num_elements; ++i)\n  {\n    CHECK(!line_stream.eof());\n    std::getline(line_stream, elements->at(i), ',');\n    CHECK(!elements->at(i).empty());\n  }\n}\n\n} // namespace utils\n\nCsvDatasetReader::CsvDatasetReader(\n    const std::string& csv_directory,\n    const std::vector<size_t> imu_indices,\n    const std::vector<size_t> camera_indices,\n    const std::vector<size_t> track_indices)\n{\n  VLOG(1) << \"Loading csv dataset from directory \\\"\" << csv_directory << \"\\\".\";\n\n  CHECK_LE(imu_indices.size(), 1u) << \"Using multiple IMUs not implemented\";\n  for(size_t i : imu_indices)\n  {\n    loadImuData(csv_directory + \"/imu\" + std::to_string(i), 0u);\n  }\n\n  for(size_t i : camera_indices)\n  {\n    std::string dir = csv_directory + \"/cam\" + std::to_string(i);\n    loadCameraData(\n        dir, i, 100 * common::conversions::kMilliSecondsToNanoSeconds);\n  }\n\n  for(size_t i : track_indices)\n  {\n    std::string dir = csv_directory + \"/tracks\" + std::to_string(i);\n    loadFeatureTracksData(\n        dir, i, 80 * common::conversions::kMilliSecondsToNanoSeconds);\n  }\n\n  VLOG(1) << \"done.\";\n}\n\nvoid CsvDatasetReader::loadImuData(const std::string data_dir, const int64_t playback_delay)\n{\n  const std::string kHeader = \"#timestamp [ns],w_RS_S_x [rad s^-1],w_RS_S_y [rad s^-1],w_RS_S_z [rad s^-1],a_RS_S_x [m s^-2],a_RS_S_y [m s^-2],a_RS_S_z [m s^-2]\";\n  std::ifstream fs;\n  utils::checkHeaderAndOpenStream(data_dir+\"/data.csv\", kHeader, &fs);\n  std::string line;\n  size_t i = 0;\n  while(std::getline(fs, line))\n  {\n    std::vector<std::string> elements(7u);\n    utils::readLine(line, 7u, &elements);\n    Eigen::Matrix<double, 6, 1> acc_gyr_measurement;\n    acc_gyr_measurement << std::stod(elements[4]),  // acc_x\n                           std::stod(elements[5]),  // acc_y\n                           std::stod(elements[6]),  // acc_x\n                           std::stod(elements[1]),  // gyr_x\n                           std::stod(elements[2]),  // gyr_y\n                           std::stod(elements[3]);  // gyr_z\n    dataset::ImuMeasurement::Ptr imu_measurement(\n        new dataset::ImuMeasurement(std::stoll(elements[0]), acc_gyr_measurement));\n\n    buffer_.insert(std::make_pair(\n                     imu_measurement->timestamp_nanoseconds + playback_delay,\n                     imu_measurement));\n    ++i;\n  }\n  VLOG(2) << \"Loaded \" << i << \" IMU measurements.\";\n  fs.close();\n  CHECK(!fs.is_open());\n}\n\nvoid CsvDatasetReader::loadCameraData(\n    const std::string& data_dir,\n    const size_t camera_index,\n    int64_t playback_delay)\n{\n  const std::string kHeader = \"#timestamp [ns],filename\";\n  std::ifstream fs;\n  utils::checkHeaderAndOpenStream(data_dir+\"/data.csv\", kHeader, &fs);\n  std::string line;\n  size_t i = 0;\n  while(std::getline(fs, line))\n  {\n    std::vector<std::string> elements(2u);\n    utils::readLine(line, 2u, &elements);\n    dataset::CameraMeasurement::Ptr camera_measurement(\n        new dataset::CameraMeasurement(\n            std::stoll(elements[0]), camera_index, data_dir + \"/data/\" + elements[1]));\n\n    buffer_.insert(std::make_pair(\n                     camera_measurement->timestamp_nanoseconds + playback_delay,\n                     camera_measurement));\n    ++i;\n  }\n  VLOG(2) << \"Loaded \" << i << \" camera measurements.\";\n  fs.close();\n  CHECK(!fs.is_open());\n}\n\nvoid CsvDatasetReader::loadFeatureTracksData(\n    const std::string& /*data_dir*/,\n    const size_t /*camera_index*/,\n    int64_t /*playback_delay*/)\n{\n  LOG(FATAL) << \"Not implemented\";\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/svo_factory.cpp",
    "content": "\n\n#include <ros/package.h>\n\n#include <svo/svo.h>\n#include <svo/common/imu_calibration.h>\n#include <svo_ros/svo_factory.h>\n#include <svo/frame_handler_mono.h>\n#include <svo/frame_handler_stereo.h>\n#include <vikit/params_helper.h>\n\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\n#ifdef SVO_USE_VIN_BACKEND\n#include <svo_gtsam/backend_optimizer.h>\n#include <svo_gtsam/backend_interface.h>\n#include <svo_gtsam/graph_manager.h>\n#endif\n\n#ifdef SVO_LOOP_CLOSING\n#include <svo/online_loopclosing/loop_closing.h>\n#endif\n\nnamespace svo {\nnamespace factory {\n\nBaseOptions loadBaseOptions(const ros::NodeHandle& pnh, bool forward_default)\n{\n  BaseOptions o;\n  o.max_n_kfs = vk::param<int>(pnh, \"max_n_kfs\", 5);\n  o.use_imu = vk::param<bool>(pnh, \"use_imu\", false);\n  o.trace_dir = vk::param<std::string>(pnh, \"trace_dir\", ros::package::getPath(\"svo\")+\"/trace\");\n  o.quality_min_fts = vk::param<int>(pnh, \"quality_min_fts\", 50);\n  o.quality_max_fts_drop = vk::param<int>(pnh, \"quality_max_drop_fts\", 40);\n  o.relocalization_max_trials = vk::param<int>(pnh, \"relocalization_max_trials\", 50);\n  o.poseoptim_prior_lambda = vk::param<double>(pnh, \"poseoptim_prior_lambda\", 0.0);\n  o.poseoptim_using_unit_sphere = vk::param<bool>(pnh, \"poseoptim_using_unit_sphere\", false);\n  o.img_align_prior_lambda_rot = vk::param<double>(pnh, \"img_align_prior_lambda_rot\", 0.0);\n  o.img_align_prior_lambda_trans = vk::param<double>(pnh, \"img_align_prior_lambda_trans\", 0.0);\n  o.structure_optimization_max_pts = vk::param<int>(pnh, \"structure_optimization_max_pts\", 20);\n  o.init_map_scale = vk::param<double>(pnh, \"map_scale\", 1.0);\n  std::string default_kf_criterion = forward_default ? \"FORWARD\" : \"DOWNLOOKING\";\n  if(vk::param<std::string>(pnh, \"kfselect_criterion\", default_kf_criterion) == \"FORWARD\")\n    o.kfselect_criterion = KeyframeCriterion::FORWARD;\n  else\n    o.kfselect_criterion = KeyframeCriterion::DOWNLOOKING;\n  o.kfselect_min_dist = vk::param<double>(pnh, \"kfselect_min_dist\", 0.12);\n  o.kfselect_numkfs_upper_thresh = vk::param<int>(pnh, \"kfselect_numkfs_upper_thresh\", 120);\n  o.kfselect_numkfs_lower_thresh = vk::param<double>(pnh, \"kfselect_numkfs_lower_thresh\", 70);\n  o.kfselect_min_dist_metric = vk::param<double>(pnh, \"kfselect_min_dist_metric\", 0.01);\n  o.kfselect_min_angle = vk::param<double>(pnh, \"kfselect_min_angle\", 20);\n  o.kfselect_min_disparity = vk::param<double>(pnh, \"kfselect_min_disparity\", 40);\n  o.kfselect_min_num_frames_between_kfs = vk::param<int>(pnh, \"kfselect_min_num_frames_between_kfs\", 2);\n  o.img_align_max_level = vk::param<int>(pnh, \"img_align_max_level\", 4);\n  o.img_align_min_level = vk::param<int>(pnh, \"img_align_min_level\", 2);\n  o.img_align_robustification = vk::param<bool>(pnh, \"img_align_robustification\", false);\n  o.img_align_use_distortion_jacobian =\n      vk::param<bool>(pnh, \"img_align_use_distortion_jacobian\", false);\n  o.img_align_est_illumination_gain =\n      vk::param<bool>(pnh, \"img_align_est_illumination_gain\", false);\n  o.img_align_est_illumination_offset =\n      vk::param<bool>(pnh, \"img_align_est_illumination_offset\", false);\n  o.poseoptim_thresh = vk::param<double>(pnh, \"poseoptim_thresh\", 2.0);\n  o.update_seeds_with_old_keyframes =\n      vk::param<bool>(pnh, \"update_seeds_with_old_keyframes\", true);\n  o.use_async_reprojectors = vk::param<bool>(pnh, \"use_async_reprojectors\", false);\n  return o;\n}\n\nDetectorOptions loadDetectorOptions(const ros::NodeHandle& pnh)\n{\n  DetectorOptions o;\n  o.cell_size = vk::param<int>(pnh, \"grid_size\", 35);\n  o.max_level = vk::param<int>(pnh, \"n_pyr_levels\", 3) - 1;\n  o.threshold_primary = vk::param<int>(pnh, \"detector_threshold_primary\", 10);\n  o.threshold_secondary = vk::param<int>(pnh, \"detector_threshold_secondary\", 200);\n  if(vk::param<bool>(pnh, \"use_edgelets\", true))\n    o.detector_type = DetectorType::kFastGrad;\n  else\n    o.detector_type = DetectorType::kFast;\n  return o;\n}\n\nDepthFilterOptions loadDepthFilterOptions(const ros::NodeHandle& pnh)\n{\n  DepthFilterOptions o;\n  o.max_search_level = vk::param<int>(pnh, \"n_pyr_levels\", 3) - 1;\n  o.use_threaded_depthfilter = vk::param<bool>(pnh, \"use_threaded_depthfilter\", true);\n  o.seed_convergence_sigma2_thresh = vk::param<double>(pnh, \"seed_convergence_sigma2_thresh\", 200.0);\n  o.scan_epi_unit_sphere = vk::param<bool>(pnh, \"scan_epi_unit_sphere\", false);\n  o.affine_est_offset= vk::param<bool>(pnh, \"depth_filter_affine_est_offset\", true);\n  o.affine_est_gain = vk::param<bool>(pnh, \"depth_filter_affine_est_gain\", false);\n  o.max_n_seeds_per_frame = static_cast<size_t>(\n        static_cast<double>(vk::param<int>(pnh, \"max_fts\", 120))\n        * vk::param<double>(pnh, \"max_seeds_ratio\", 3.0));\n  return o;\n}\n\nInitializationOptions loadInitializationOptions(const ros::NodeHandle& pnh)\n{\n  InitializationOptions o;\n  o.init_min_features = vk::param<int>(pnh, \"init_min_features\", 100);\n  o.init_min_tracked = vk::param<int>(pnh, \"init_min_tracked\", 80);\n  o.init_min_inliers = vk::param<int>(pnh, \"init_min_inliers\", 70);\n  o.init_min_disparity = vk::param<double>(pnh, \"init_min_disparity\", 40.0);\n  o.init_min_features_factor = vk::param<double>(pnh, \"init_min_features_factor\", 2.0);\n  o.reproj_error_thresh = vk::param<double>(pnh, \"reproj_err_thresh\", 2.0);\n  o.init_disparity_pivot_ratio = vk::param<double>(pnh, \"init_disparity_pivot_ratio\", 0.5);\n  std::string init_method = vk::param<std::string>(pnh, \"init_method\", \"FivePoint\");\n  if(init_method == \"Homography\")\n    o.init_type = InitializerType::kHomography;\n  else if(init_method == \"TwoPoint\")\n    o.init_type = InitializerType::kTwoPoint;\n  else if(init_method == \"FivePoint\")\n    o.init_type = InitializerType::kFivePoint;\n  else if(init_method == \"OneShot\")\n    o.init_type = InitializerType::kOneShot;\n  else\n    SVO_ERROR_STREAM(\"Initialization Method not supported: \" << init_method);\n  return o;\n}\n\nFeatureTrackerOptions loadTrackerOptions(const ros::NodeHandle& pnh)\n{\n  FeatureTrackerOptions o;\n  o.klt_max_level = vk::param<int>(pnh, \"klt_max_level\", 4);\n  o.klt_min_level = vk::param<int>(pnh, \"klt_min_level\", 0.001);\n  return o;\n}\n\nReprojectorOptions loadReprojectorOptions(const ros::NodeHandle& pnh)\n{\n  ReprojectorOptions o;\n  o.max_n_kfs = vk::param<int>(pnh, \"reprojector_max_n_kfs\", 5);\n  o.max_n_features_per_frame = vk::param<int>(pnh, \"max_fts\", 160);\n  o.cell_size = vk::param<int>(pnh, \"grid_size\", 35);\n  o.reproject_unconverged_seeds = vk::param<bool>(pnh, \"reproject_unconverged_seeds\", true);\n  o.affine_est_offset = vk::param<bool>(pnh, \"reprojector_affine_est_offset\", true);\n  o.affine_est_gain = vk::param<bool>(pnh, \"reprojector_affine_est_gain\", false);\n  return o;\n}\n\nCameraBundle::Ptr loadCameraFromYaml(const ros::NodeHandle& pnh)\n{\n  std::string calib_file = vk::param<std::string>(pnh, \"calib_file\", \"~/cam.yaml\");\n  CameraBundle::Ptr ncam = CameraBundle::loadFromYaml(calib_file);\n  std::cout << \"loaded \" << ncam->numCameras() << \" cameras\";\n  for(const auto& cam : ncam->getCameraVector())\n    cam->printParameters(std::cout, \"\");\n  return ncam;\n}\n\n#ifdef SVO_LOOP_CLOSING\nLoopClosureOptions loadLoopClosureOptions(const ros::NodeHandle& pnh)\n{\n  LoopClosureOptions o;\n  o.runlc = vk::param<bool>(pnh, \"runlc\", false);\n  o.voc_name = vk::param<std::string>(pnh, \"voc_name\", \"test\");\n  o.voc_path = vk::param<std::string>(pnh, \"voc_path\", \"~/vocabularies\");\n  o.alpha = vk::param<double>(pnh, \"alpha\", 40.0);\n  o.beta = vk::param<double>(pnh, \"beta\", 20.0);\n  o.ignored_past_frames = vk::param<int>(pnh, \"frames_to_ignore\", 5);\n  o.scale_ret_app = vk::param<int>(pnh, \"scale_retrieval_approach\", 1);\n  o.bowthresh = vk::param<double>(pnh, \"bow_thresh\", 0.6);\n  o.gvthresh = vk::param<double>(pnh, \"gv_thresh\", 0.4);\n  o.orb_dist_thresh = vk::param<double>(pnh, \"orb_dist_thresh\", 32.0);\n  o.match_thresh = vk::param<double>(pnh, \"match_thresh\", 0.10);\n\n  return o;\n}\n\nLoopClosingPtr getLoopClosingModule(const ros::NodeHandle &pnh,\n                                    const CameraBundlePtr& cam)\n{\n  // Create camera\n  CameraBundle::Ptr ncam = (cam) ? cam : loadCameraFromYaml(pnh);\n\n  LoopClosureOptions lc_options = loadLoopClosureOptions(pnh);\n  return LoopClosingPtr(new LoopClosing(lc_options, ncam));\n}\n#endif\n\nStereoTriangulationOptions loadStereoOptions(const ros::NodeHandle& pnh)\n{\n  StereoTriangulationOptions o;\n  o.triangulate_n_features = vk::param<int>(pnh, \"max_fts\", 120);\n  o.max_depth_inv = vk::param<double>(pnh, \"max_depth_inv\", 1.0/50.0);\n  o.min_depth_inv = vk::param<double>(pnh, \"min_depth_inv\", 1.0/0.5);\n  o.mean_depth_inv = vk::param<double>(pnh, \"mean_depth_inv\", 1.0/2.0);\n  return o;\n}\n\nImuHandler::Ptr getImuHandler(const ros::NodeHandle& pnh)\n{\n  std::string calib_file = vk::param<std::string>(pnh, \"calib_file\", \"\");\n  ImuCalibration imu_calib = ImuHandler::loadCalibrationFromFile(calib_file);\n  imu_calib.print(\"Loaded IMU Calibration\");\n  ImuInitialization imu_init = ImuHandler::loadInitializationFromFile(calib_file);\n  imu_init.print(\"Loaded IMU Initialization\");\n  ImuHandler::Ptr imu_handler(new ImuHandler(imu_calib, imu_init));\n  return imu_handler;\n}\n\nvoid setInitialPose(const ros::NodeHandle& pnh, FrameHandlerBase& vo)\n{\n  Transformation T_world_imuinit(\n        Quaternion(vk::param<double>(pnh, \"T_world_imuinit/qw\", 1.0),\n                   vk::param<double>(pnh, \"T_world_imuinit/qx\", 0.0),\n                   vk::param<double>(pnh, \"T_world_imuinit/qy\", 0.0),\n                   vk::param<double>(pnh, \"T_world_imuinit/qz\", 0.0)),\n        Vector3d(vk::param<double>(pnh, \"T_world_imuinit/tx\", 0.0),\n                 vk::param<double>(pnh, \"T_world_imuinit/ty\", 0.0),\n                 vk::param<double>(pnh, \"T_world_imuinit/tz\", 0.0)));\n  vo.setInitialImuPose(T_world_imuinit);\n}\n\n\nFrameHandlerMono::Ptr makeMono(const ros::NodeHandle& pnh, const CameraBundlePtr& cam)\n{\n  // Create camera\n  CameraBundle::Ptr ncam = (cam) ? cam : loadCameraFromYaml(pnh);\n\n  // Init VO\n  FrameHandlerMono::Ptr vo =\n      std::make_shared<FrameHandlerMono>(\n        loadBaseOptions(pnh, false),\n        loadDepthFilterOptions(pnh),\n        loadDetectorOptions(pnh),\n        loadInitializationOptions(pnh),\n        loadReprojectorOptions(pnh),\n        loadTrackerOptions(pnh),\n        ncam);\n\n  // Get initial position and orientation of IMU\n  setInitialPose(pnh, *vo);\n\n  return vo;\n}\n\nFrameHandlerStereo::Ptr makeStereo(const ros::NodeHandle& pnh, const CameraBundlePtr& cam)\n{\n  // Load cameras\n  CameraBundle::Ptr ncam = (cam) ? cam : loadCameraFromYaml(pnh);\n\n  // Init VO\n  InitializationOptions init_options = loadInitializationOptions(pnh);\n  init_options.init_type = InitializerType::kStereo;\n  FrameHandlerStereo::Ptr vo =\n      std::make_shared<FrameHandlerStereo>(\n        loadBaseOptions(pnh, true),\n        loadDepthFilterOptions(pnh),\n        loadDetectorOptions(pnh),\n        init_options,\n        loadStereoOptions(pnh),\n        loadReprojectorOptions(pnh),\n        loadTrackerOptions(pnh),\n        ncam);\n\n  // Get initial position and orientation of IMU\n  setInitialPose(pnh, *vo);\n\n  return vo;\n}\n\nFrameHandlerArray::Ptr makeArray(const ros::NodeHandle& pnh, const CameraBundlePtr& cam)\n{\n  // Load cameras\n  CameraBundle::Ptr ncam = (cam) ? cam : loadCameraFromYaml(pnh);\n\n  // Init VO\n  InitializationOptions init_options = loadInitializationOptions(pnh);\n  init_options.init_type = InitializerType::kArrayGeometric;\n  init_options.init_min_disparity = 25;\n  DepthFilterOptions depth_filter_options = loadDepthFilterOptions(pnh);\n  depth_filter_options.verbose = true;\n  FrameHandlerArray::Ptr vo =\n      std::make_shared<FrameHandlerArray>(\n        loadBaseOptions(pnh, true),\n        depth_filter_options,\n        loadDetectorOptions(pnh),\n        init_options,\n        loadReprojectorOptions(pnh),\n        loadTrackerOptions(pnh),\n        ncam);\n\n  // Get initial position and orientation of IMU\n  setInitialPose(pnh, *vo);\n\n  return vo;\n}\n\n} // namespace factory\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/svo_interface.cpp",
    "content": "#include <svo_ros/svo_interface.h>\n\n#include <ros/callback_queue.h>\n\n#include <svo_ros/svo_factory.h>\n#include <svo_ros/visualizer.h>\n#include <svo/common/frame.h>\n#include <svo/map.h>\n#include <svo/imu_handler.h>\n#include <svo/common/camera.h>\n#include <svo/common/conversions.h>\n#include <svo/frame_handler_mono.h>\n#include <svo/frame_handler_stereo.h>\n#include <svo/frame_handler_array.h>\n#include <svo/initialization.h>\n\n#include <message_filters/subscriber.h>\n#include <message_filters/synchronizer.h>\n#include <message_filters/sync_policies/exact_time.h>\n#include <message_filters/sync_policies/approximate_time.h>\n#include <image_transport/subscriber_filter.h>\n#include <image_transport/image_transport.h>\n#include <sensor_msgs/image_encodings.h>\n#include <cv_bridge/cv_bridge.h>\n#include <vikit/params_helper.h>\n#include <vikit/timer.h>\n\n#ifdef SVO_USE_BACKEND\n#include <svo_ros/backend_factory.h>\n#include <svo_ros/backend_visualizer.h>\n#include <svo/backend/backend_interface.h>\n#include <svo/backend/backend_optimizer.h>\n#endif\n\n#ifdef SVO_LOOP_CLOSING\n#include <svo/online_loopclosing/loop_closing.h>\n#endif\n\nnamespace svo {\n\nSvoInterface::SvoInterface(\n    const PipelineType& pipeline_type,\n    const ros::NodeHandle& nh,\n    const ros::NodeHandle& private_nh)\n  : nh_(nh)\n  , pnh_(private_nh)\n  , pipeline_type_(pipeline_type)\n  , set_initial_attitude_from_gravity_(\n      vk::param<bool>(pnh_, \"set_initial_attitude_from_gravity\", true))\n  , automatic_reinitialization_(\n      vk::param<bool>(pnh_, \"automatic_reinitialization\", false))\n{\n  switch (pipeline_type)\n  {\n    case PipelineType::kMono:\n      svo_ = factory::makeMono(pnh_);\n      break;\n    case PipelineType::kStereo:\n      svo_ = factory::makeStereo(pnh_);\n      break;\n    case PipelineType::kArray:\n      svo_ = factory::makeArray(pnh_);\n      break;\n    default:\n      LOG(FATAL) << \"Unknown pipeline\";\n      break;\n  }\n  ncam_ = svo_->getNCamera();\n  visualizer_.reset(\n        new Visualizer(svo_->options_.trace_dir, pnh_, ncam_->getNumCameras()));\n  if(vk::param<bool>(pnh_, \"use_imu\", false))\n    imu_handler_ = factory::getImuHandler(pnh_);\n\n#ifdef SVO_USE_BACKEND\n  if(vk::param<bool>(pnh_, \"use_backend\", false))\n  {\n    backend_interface_ = svo::backend_factory::makeBackend(pnh_);\n    backend_visualizer_.reset(new BackendVisualizer(svo_->options_.trace_dir, pnh_));\n    svo_->setBundleAdjuster(backend_interface_);\n    backend_interface_->imu_handler_ = imu_handler_;\n  }\n#endif\n\n  if(vk::param<bool>(pnh_, \"runlc\", false))\n  {\n#ifdef SVO_LOOP_CLOSING\n    LoopClosingPtr loop_closing_ptr =\n        factory::getLoopClosingModule(pnh_, svo_->getNCamera());\n    svo_->lc_ = std::move(loop_closing_ptr);\n#else\n    LOG(FATAL) << \"You have to enable loop closing in svo_cmake.\";\n#endif\n  }\n\n  svo_->start();\n}\n\nSvoInterface::~SvoInterface()\n{\n  if (imu_thread_)\n    imu_thread_->join();\n  if (image_thread_)\n    image_thread_->join();\n  VLOG(1) << \"Destructed SVO.\";\n}\n\nvoid SvoInterface::processImageBundle(\n    const std::vector<cv::Mat>& images,\n    const int64_t timestamp_nanoseconds)\n{\n  svo_->addImageBundle(images, timestamp_nanoseconds);\n}\n\nvoid SvoInterface::publishResults(\n    const std::vector<cv::Mat>& images,\n    const int64_t timestamp_nanoseconds)\n{\n  CHECK_NOTNULL(svo_.get());\n  CHECK_NOTNULL(visualizer_.get());\n  visualizer_->publishSvoInfo(svo_.get(), timestamp_nanoseconds);\n  switch (svo_->stage())\n  {\n    case Stage::kTracking: {\n      Eigen::Matrix<double, 6, 6> covariance;\n      covariance.setZero();\n      visualizer_->publishImuPose(\n            svo_->getLastFrames()->get_T_W_B(), covariance, timestamp_nanoseconds);\n      visualizer_->publishCameraPoses(svo_->getLastFrames(), timestamp_nanoseconds);\n      visualizer_->publishImagesWithFeatures(\n            svo_->getLastFrames(), timestamp_nanoseconds);\n      visualizer_->visualizeMarkers(\n            svo_->getLastFrames(), svo_->closeKeyframes(), svo_->map());\n      visualizer_->exportToDense(svo_->getLastFrames());\n#ifdef SVO_LOOP_CLOSING\n      visualizer_->publishLoopClosureInfo(svo_->loop_closure_data);\n#endif\n      break;\n    }\n    case Stage::kInitializing: {\n      visualizer_->publishBundleFeatureTracks(\n            svo_->initializer_->frames_ref_, svo_->getLastFrames(), timestamp_nanoseconds);\n      break;\n    }\n    case Stage::kPaused:\n    case Stage::kRelocalization:\n      visualizer_->publishImages(images, timestamp_nanoseconds);\n      break;\n    default:\n      LOG(FATAL) << \"Unknown stage\";\n      break;\n  }\n\n#ifdef SVO_USE_BACKEND\n  if(svo_->stage() == Stage::kTracking && backend_interface_)\n  {\n    if(svo_->getLastFrames()->isKeyframe())\n    {\n      std::lock_guard<std::mutex> estimate_lock(backend_interface_->optimizer_->estimate_mut_);\n      const gtsam::Values& state = backend_interface_->optimizer_->estimate_;\n      backend_visualizer_->visualizeFrames(state);\n      if(backend_interface_->options_.add_imu_factors)\n        backend_visualizer_->visualizeVelocity(state);\n      backend_visualizer_->visualizePoints(state);\n    }\n  }\n#endif\n}\n\nbool SvoInterface::setImuPrior(const int64_t timestamp_nanoseconds)\n{\n  if(imu_handler_ && !svo_->hasStarted() && set_initial_attitude_from_gravity_)\n  {\n    // set initial orientation\n    Quaternion R_imu_world;\n    if(imu_handler_->getInitialAttitude(\n         timestamp_nanoseconds * common::conversions::kNanoSecondsToSeconds,\n         R_imu_world))\n    {\n      VLOG(3) << \"Set initial orientation from accelerometer measurements.\";\n      svo_->setRotationPrior(R_imu_world);\n    }\n    else\n    {\n      return false;\n    }\n  }\n  else if(imu_handler_ && svo_->getLastFrames())\n  {\n    // set incremental rotation prior\n    Quaternion R_lastimu_newimu;\n    if(imu_handler_->getRelativeRotationPrior(\n         svo_->getLastFrames()->getMinTimestampNanoseconds() *\n         common::conversions::kNanoSecondsToSeconds,\n         timestamp_nanoseconds * common::conversions::kNanoSecondsToSeconds,\n         false, R_lastimu_newimu))\n    {\n      VLOG(3) << \"Set incremental rotation prior from IMU.\";\n      svo_->setRotationIncrementPrior(R_lastimu_newimu);\n    }\n  }\n  return true;\n}\n\nvoid SvoInterface::monoCallback(const sensor_msgs::ImageConstPtr& msg)\n{\n  if(idle_)\n    return;\n\n  cv::Mat image;\n  try\n  {\n    image = cv_bridge::toCvCopy(msg)->image;\n  }\n  catch (cv_bridge::Exception& e)\n  {\n    ROS_ERROR(\"cv_bridge exception: %s\", e.what());\n  }\n\n  std::vector<cv::Mat> images;\n  images.push_back(image.clone());\n\n  if(!setImuPrior(msg->header.stamp.toNSec()))\n  {\n    VLOG(3) << \"Could not align gravity! Attempting again in next iteration.\";\n    return;\n  }\n\n  imageCallbackPreprocessing(msg->header.stamp.toNSec());\n\n  processImageBundle(images, msg->header.stamp.toNSec());\n  publishResults(images, msg->header.stamp.toNSec());\n\n  if(svo_->stage() == Stage::kPaused && automatic_reinitialization_)\n    svo_->start();\n\n  imageCallbackPostprocessing();\n}\n\nvoid SvoInterface::stereoCallback(\n    const sensor_msgs::ImageConstPtr& msg0,\n    const sensor_msgs::ImageConstPtr& msg1)\n{\n  if(idle_)\n    return;\n\n  cv::Mat img0, img1;\n  try {\n    img0 = cv_bridge::toCvShare(msg0, \"mono8\")->image;\n    img1 = cv_bridge::toCvShare(msg1, \"mono8\")->image;\n  } catch (cv_bridge::Exception& e) {\n    ROS_ERROR(\"cv_bridge exception: %s\", e.what());\n  }\n\n  if(!setImuPrior(msg0->header.stamp.toNSec()))\n  {\n    VLOG(3) << \"Could not align gravity! Attempting again in next iteration.\";\n    return;\n  }\n\n  imageCallbackPreprocessing(msg0->header.stamp.toNSec());\n\n  processImageBundle({img0, img1}, msg0->header.stamp.toNSec());\n  publishResults({img0, img1}, msg0->header.stamp.toNSec());\n\n  if(svo_->stage() == Stage::kPaused && automatic_reinitialization_)\n    svo_->start();\n\n  imageCallbackPostprocessing();\n}\n\nvoid SvoInterface::imuCallback(const sensor_msgs::ImuConstPtr& msg)\n{\n  const Eigen::Vector3d omega_imu(\n        msg->angular_velocity.x, msg->angular_velocity.y, msg->angular_velocity.z);\n  const Eigen::Vector3d lin_acc_imu(\n        msg->linear_acceleration.x, msg->linear_acceleration.y, msg->linear_acceleration.z);\n  const ImuMeasurement m(msg->header.stamp.toSec(), omega_imu, lin_acc_imu);\n  if(imu_handler_)\n    imu_handler_->addImuMeasurement(m);\n  else\n    SVO_ERROR_STREAM(\"SvoNode has no ImuHandler\");\n}\n\nvoid SvoInterface::inputKeyCallback(const std_msgs::StringConstPtr& key_input)\n{\n  std::string remote_input = key_input->data;\n  char input = remote_input.c_str()[0];\n  switch(input)\n  {\n    case 'q':\n      quit_ = true;\n      SVO_INFO_STREAM(\"SVO user input: QUIT\");\n      break;\n    case 'r':\n      svo_->reset();\n      idle_ = true;\n      SVO_INFO_STREAM(\"SVO user input: RESET\");\n      break;\n    case 's':\n      svo_->start();\n      idle_ = false;\n      SVO_INFO_STREAM(\"SVO user input: START\");\n      break;\n     case 'c':\n      svo_->setCompensation(true);\n      SVO_INFO_STREAM(\"Enabled affine compensation.\");\n      break;\n     case 'C':\n      svo_->setCompensation(false);\n      SVO_INFO_STREAM(\"Disabled affine compensation.\");\n      break;\n    default: ;\n  }\n}\n\nvoid SvoInterface::subscribeImu()\n{\n  imu_thread_ = std::unique_ptr<std::thread>(\n        new std::thread(&SvoInterface::imuLoop, this));\n  sleep(3);\n}\n\nvoid SvoInterface::subscribeImage()\n{\n  if(pipeline_type_ == PipelineType::kMono)\n    image_thread_ = std::unique_ptr<std::thread>(\n          new std::thread(&SvoInterface::monoLoop, this));\n  else if(pipeline_type_ == PipelineType::kStereo)\n    image_thread_ = std::unique_ptr<std::thread>(\n        new std::thread(&SvoInterface::stereoLoop, this));\n}\n\nvoid SvoInterface::subscribeRemoteKey()\n{\n  std::string remote_key_topic =\n      vk::param<std::string>(pnh_, \"remote_key_topic\", \"svo/remote_key\");\n  sub_remote_key_ =\n      nh_.subscribe(remote_key_topic, 5, &svo::SvoInterface::inputKeyCallback, this);\n}\n\nvoid SvoInterface::imuLoop()\n{\n  SVO_INFO_STREAM(\"SvoNode: Started IMU loop.\");\n  ros::NodeHandle nh;\n  ros::CallbackQueue queue;\n  nh.setCallbackQueue(&queue);\n  std::string imu_topic = vk::param<std::string>(pnh_, \"imu_topic\", \"imu\");\n  ros::Subscriber sub_imu =\n      nh.subscribe(imu_topic, 10, &svo::SvoInterface::imuCallback, this);\n  while(ros::ok() && !quit_)\n  {\n    queue.callAvailable(ros::WallDuration(0.1));\n  }\n}\n\nvoid SvoInterface::monoLoop()\n{\n  SVO_INFO_STREAM(\"SvoNode: Started Image loop.\");\n\n  ros::NodeHandle nh;\n  ros::CallbackQueue queue;\n  nh.setCallbackQueue(&queue);\n\n  image_transport::ImageTransport it(nh);\n  std::string image_topic =\n      vk::param<std::string>(pnh_, \"cam0_topic\", \"camera/image_raw\");\n  image_transport::Subscriber it_sub =\n      it.subscribe(image_topic, 5, &svo::SvoInterface::monoCallback, this);\n\n  while(ros::ok() && !quit_)\n  {\n    queue.callAvailable(ros::WallDuration(0.1));\n  }\n}\n\nvoid SvoInterface::stereoLoop()\n{\n  typedef message_filters::sync_policies::ExactTime<sensor_msgs::Image, sensor_msgs::Image> ExactPolicy;\n  typedef message_filters::Synchronizer<ExactPolicy> ExactSync;\n\n  ros::NodeHandle nh(nh_, \"image_thread\");\n  ros::CallbackQueue queue;\n  nh.setCallbackQueue(&queue);\n\n  // subscribe to cam msgs\n  std::string cam0_topic(vk::param<std::string>(pnh_, \"cam0_topic\", \"/cam0/image_raw\"));\n  std::string cam1_topic(vk::param<std::string>(pnh_, \"cam1_topic\", \"/cam1/image_raw\"));\n  image_transport::ImageTransport it(nh);\n  image_transport::SubscriberFilter sub0(it, cam0_topic, 1, std::string(\"raw\"));\n  image_transport::SubscriberFilter sub1(it, cam1_topic, 1, std::string(\"raw\"));\n  ExactSync sync_sub(ExactPolicy(5), sub0, sub1);\n  sync_sub.registerCallback(boost::bind(&svo::SvoInterface::stereoCallback, this, _1, _2));\n\n  while(ros::ok() && !quit_)\n  {\n    queue.callAvailable(ros::WallDuration(0.1));\n  }\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/svo_node.cpp",
    "content": "#include \"svo_ros/svo_node_base.h\"\n\nint main(int argc, char **argv)\n{\n  svo_ros::SvoNodeBase::initThirdParty(argc, argv);\n\n  svo_ros::SvoNodeBase node;\n  node.run();\n}\n"
  },
  {
    "path": "svo_ros/src/svo_node_base.cpp",
    "content": "#include \"svo_ros/svo_node_base.h\"\n\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n#include <ros/ros.h>\n#include <svo/common/logging.h>\n#include <vikit/params_helper.h>\n\nnamespace svo_ros {\n\nvoid SvoNodeBase::initThirdParty(int argc, char **argv)\n{\n  google::InitGoogleLogging(argv[0]);\n  google::ParseCommandLineFlags(&argc, &argv, true);\n  google::InstallFailureSignalHandler();\n\n  ros::init(argc, argv, \"svo\");\n}\n\nSvoNodeBase::SvoNodeBase()\n: node_handle_(), private_node_handle_(\"~\"), type_(\n    vk::param<bool>(private_node_handle_, \"pipeline_is_stereo\", false) ?\n        svo::PipelineType::kStereo : svo::PipelineType::kMono),\n        svo_interface_(type_, node_handle_, private_node_handle_)\n{\n  if (svo_interface_.imu_handler_)\n  {\n    svo_interface_.subscribeImu();\n  }\n  svo_interface_.subscribeImage();\n  svo_interface_.subscribeRemoteKey();\n}\n\nvoid SvoNodeBase::run()\n{\n  ros::spin();\n  SVO_INFO_STREAM(\"SVO quit\");\n  svo_interface_.quit_ = true;\n  SVO_INFO_STREAM(\"SVO terminated.\\n\");\n}\n\n}  // namespace svo_ros\n"
  },
  {
    "path": "svo_ros/src/svo_nodelet.cpp",
    "content": "#include <ros/ros.h>\n#include <svo_ros/svo_nodelet.h>\n#include <svo_ros/svo_interface.h>\n#include <pluginlib/class_list_macros.h>\n#include <vikit/params_helper.h>\n\nPLUGINLIB_EXPORT_CLASS(svo::SvoNodelet, nodelet::Nodelet)\n\nnamespace svo {\n\nSvoNodelet::~SvoNodelet()\n{\n  NODELET_INFO_STREAM(\"SVO quit\");\n  svo_interface_->quit_ = true;\n}\n\nvoid SvoNodelet::onInit()\n{\n  ros::NodeHandle nh(getNodeHandle());\n  ros::NodeHandle pnh(getPrivateNodeHandle());\n\n  NODELET_INFO_STREAM(\"Initialized \" <<  getName() << \" nodelet.\");\n  svo::PipelineType type = svo::PipelineType::kMono;\n  if(vk::param<bool>(pnh, \"pipeline_is_stereo\", false))\n    type = svo::PipelineType::kStereo;\n\n  svo_interface_.reset(new SvoInterface(type, nh, pnh));\n  if(svo_interface_->imu_handler_)\n    svo_interface_->subscribeImu();\n  svo_interface_->subscribeImage();\n  svo_interface_->subscribeRemoteKey();\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_ros/src/visualizer.cpp",
    "content": "// This file is part of SVO - Semi-direct Visual Odometry.\n//\n// Copyright (C) 2014 Christian Forster <forster at ifi dot uzh dot ch>\n// (Robotics and Perception Group, University of Zurich, Switzerland).\n\n#include <svo_ros/visualizer.h>\n\n#include <deque>\n#include <algorithm>\n#include <iostream>\n#include <fstream>\n\n#include <opencv2/imgproc/imgproc.hpp>\n\n#include <geometry_msgs/PoseWithCovarianceStamped.h>\n#include <geometry_msgs/Vector3Stamped.h>\n#include <sensor_msgs/image_encodings.h>\n#include <tf/tf.h>\n#include <ros/package.h>\n#include <cv_bridge/cv_bridge.h>\n#include <pcl_conversions/pcl_conversions.h>\n\n#include <vikit/timer.h>\n#include <vikit/output_helper.h>\n#include <vikit/params_helper.h>\n\n#include <svo_msgs/DenseInput.h>\n#include <svo_msgs/DenseInputWithFeatures.h>\n#include <svo_msgs/Info.h>\n\n#include <svo/frame_handler_base.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/common/seed.h>\n#include <svo/tracker/feature_tracking_utils.h>\n#include <svo/direct/feature_detection_utils.h>\n#include <svo/map.h>\n#include <svo/initialization.h>\n#include <svo/img_align/sparse_img_align.h>\n#include <svo/reprojector.h>\n\nnamespace svo {\n\nVisualizer::Visualizer(\n    const std::string& trace_dir,\n    const ros::NodeHandle& nh_private,\n    const size_t n_cameras)\n  : pnh_(nh_private)\n  , trace_dir_(trace_dir)\n  , img_pub_level_(vk::param<int>(pnh_, \"publish_img_pyr_level\", 0))\n  , img_pub_nth_(vk::param<int>(pnh_, \"publish_every_nth_img\", 1))\n  , dense_pub_nth_(vk::param<int>(pnh_, \"publish_every_nth_dense_input\", 1))\n  , pc_(new PointCloud)\n  , publish_world_in_cam_frame_(vk::param<bool>(pnh_, \"publish_world_in_cam_frame\", true))\n  , publish_map_every_frame_(vk::param<bool>(pnh_, \"publish_map_every_frame\", false))\n  , publish_points_display_time_(vk::param<double>(pnh_, \"publish_point_display_time\", 0))\n  , publish_seeds_(vk::param<bool>(pnh_, \"publish_seeds\", true))\n  , publish_seeds_uncertainty_(vk::param<bool>(pnh_, \"publish_seeds_uncertainty\", false))\n  , trace_pointcloud_(vk::param<bool>(pnh_, \"trace_pointcloud\", false))\n  , vis_scale_(vk::param<double>(pnh_, \"publish_marker_scale\", 1.2))\n{\n  // Init ROS Marker Publishers\n  pub_frames_ = pnh_.advertise<visualization_msgs::Marker>(\"keyframes\", 10);\n  pub_points_ = pnh_.advertise<visualization_msgs::Marker>(\"points\", 10000);\n  pub_imu_pose_ = pnh_.advertise<geometry_msgs::PoseWithCovarianceStamped>(\"pose_imu\",10);\n  pub_info_ = pnh_.advertise<svo_msgs::Info>(\"info\", 10);\n  pub_markers_ = pnh_.advertise<visualization_msgs::Marker>(\"markers\", 100);\n  pub_pc_ = pnh_.advertise<PointCloud>(\"pointcloud\", 1);\n  pub_dense_.resize(n_cameras);\n  pub_images_.resize(n_cameras);\n  pub_cam_poses_.resize(n_cameras);\n  image_transport::ImageTransport it(pnh_);\n  for(size_t i=0; i<n_cameras; ++i)\n  {\n    pub_dense_.at(i) = pnh_.advertise<svo_msgs::DenseInputWithFeatures>(\"dense_input/\"+std::to_string(i), 2);\n    pub_images_.at(i) = it.advertise(\"image/\"+std::to_string(i), 10);\n    pub_cam_poses_.at(i) = pnh_.advertise<geometry_msgs::PoseStamped>(\"pose_cam/\"+std::to_string(i), 10);\n  }\n  pub_loop_closure_ = pnh_.advertise<visualization_msgs::Marker>(\n      \"loop_closures\", 10);\n\n  // init tracing\n  std::string states_trace_name(trace_dir_+\"/trace_states.txt\");\n  ofs_states_.open(states_trace_name.c_str());\n  ofs_states_.precision(10);\n}\n\nvoid Visualizer::publishSvoInfo(\n    const svo::FrameHandlerBase* const svo,\n    const int64_t timestamp_nanoseconds)\n{\n  CHECK_NOTNULL(svo);\n  ++trace_id_;\n\n  if(pub_info_.getNumSubscribers() == 0)\n    return;\n  VLOG(100) << \"Publish SVO info\";\n\n  svo_msgs::Info msg_info;\n  msg_info.header.frame_id = \"/cam\";\n  msg_info.header.seq = trace_id_;\n  msg_info.header.stamp = ros::Time().fromNSec(timestamp_nanoseconds);\n  msg_info.processing_time = svo->lastProcessingTime();\n  msg_info.stage = static_cast<int>(svo->stage());\n  msg_info.tracking_quality = static_cast<int>(svo->trackingQuality());\n  msg_info.num_matches = svo->lastNumObservations();\n  pub_info_.publish(msg_info);\n}\n\nvoid Visualizer::publishImuPose(\n    const Transformation& T_world_imu,\n    const Eigen::Matrix<double, 6, 6> Covariance,\n    const int64_t timestamp_nanoseconds)\n{\n  if(pub_imu_pose_.getNumSubscribers() == 0)\n    return;\n  VLOG(100) << \"Publish IMU Pose\";\n\n  Eigen::Quaterniond q = T_world_imu.getRotation().toImplementation();\n  Eigen::Vector3d p = T_world_imu.getPosition();\n  geometry_msgs::PoseWithCovarianceStampedPtr msg_pose(\n        new geometry_msgs::PoseWithCovarianceStamped);\n  msg_pose->header.seq = trace_id_;\n  msg_pose->header.stamp = ros::Time().fromNSec(timestamp_nanoseconds);\n  msg_pose->header.frame_id = \"/imu\";\n  msg_pose->pose.pose.position.x = p[0];\n  msg_pose->pose.pose.position.y = p[1];\n  msg_pose->pose.pose.position.z = p[2];\n  msg_pose->pose.pose.orientation.x = q.x();\n  msg_pose->pose.pose.orientation.y = q.y();\n  msg_pose->pose.pose.orientation.z = q.z();\n  msg_pose->pose.pose.orientation.w = q.w();\n  for(size_t i=0; i<36; ++i)\n    msg_pose->pose.covariance[i] = Covariance(i%6, i/6);\n  pub_imu_pose_.publish(msg_pose);\n}\n\nvoid Visualizer::publishCameraPoses(\n    const FrameBundlePtr& frame_bundle,\n    const int64_t timestamp_nanoseconds)\n{\n  vk::output_helper::publishTfTransform(\n        frame_bundle->at(0)->T_cam_world(), ros::Time().fromNSec(timestamp_nanoseconds),\n        \"cam_pos\", kWorldFrame, br_);\n\n  for(size_t i = 0; i < frame_bundle->size(); ++i)\n  {\n    if(pub_cam_poses_.at(i).getNumSubscribers() == 0)\n      return;\n    VLOG(100) << \"Publish camera pose \" << i;\n\n    Eigen::Quaterniond q = frame_bundle->at(i)->T_world_cam().getRotation().toImplementation();\n    Eigen::Vector3d p = frame_bundle->at(i)->T_world_cam().getPosition();\n    geometry_msgs::PoseStampedPtr msg_pose(new geometry_msgs::PoseStamped);\n    msg_pose->header.seq = trace_id_;\n    msg_pose->header.stamp = ros::Time().fromNSec(timestamp_nanoseconds);\n    msg_pose->header.frame_id = \"/cam\"+std::to_string(i);\n    msg_pose->pose.position.x = p[0];\n    msg_pose->pose.position.y = p[1];\n    msg_pose->pose.position.z = p[2];\n    msg_pose->pose.orientation.x = q.x();\n    msg_pose->pose.orientation.y = q.y();\n    msg_pose->pose.orientation.z = q.z();\n    msg_pose->pose.orientation.w = q.w();\n    pub_cam_poses_.at(i).publish(msg_pose);\n  }\n}\n\nvoid Visualizer::publishBundleFeatureTracks(\n    const FrameBundlePtr frames_ref,\n    const FrameBundlePtr frames_cur,\n    int64_t timestamp)\n{\n  if(trace_id_ % img_pub_nth_ != 0 || !frames_ref)\n    return;\n  VLOG(100) << \"Publish bundle feature tracks.\";\n\n  for(size_t i = 0; i < frames_ref->size(); ++i)\n  {\n    std::vector<std::pair<size_t, size_t>> matches_ref_cur;\n    feature_tracking_utils::getFeatureMatches(\n          *frames_ref->at(i), *frames_cur->at(i), &matches_ref_cur);\n    publishFeatureTracks(\n          frames_ref->at(i)->px_vec_, frames_cur->at(i)->px_vec_,\n          matches_ref_cur, frames_cur->at(i)->img_pyr_,\n          img_pub_level_, timestamp, i);\n  }\n}\n\nvoid Visualizer::publishFeatureTracks(\n    const Keypoints& px_ref,\n    const Keypoints& px_cur,\n    const std::vector<std::pair<size_t, size_t>>& matches_ref_cur,\n    const ImgPyr& img_pyr,\n    const Level& level,\n    const uint64_t timestamp,\n    const size_t frame_index)\n{\n  if(pub_images_.at(frame_index).getNumSubscribers() == 0)\n    return;\n  VLOG(100) << \"Publish feature tracks.\";\n  const int scale = (1<<level);\n  cv::Mat img_rgb(img_pyr[level].size(), CV_8UC3);\n  cv::cvtColor(img_pyr[level], img_rgb, cv::COLOR_GRAY2RGB);\n  for(size_t i = 0; i < matches_ref_cur.size(); ++i)\n  {\n    size_t i_ref = matches_ref_cur[i].first;\n    size_t i_cur = matches_ref_cur[i].second;\n    cv::line(\n          img_rgb,\n          cv::Point2f(px_cur(0,i_cur)/scale, px_cur(1,i_cur)/scale),\n          cv::Point2f(px_ref(0,i_ref)/scale, px_ref(1,i_ref)/scale),\n          cv::Scalar(0,255,0), 2);\n  }\n  cv_bridge::CvImage img_msg;\n  img_msg.header.frame_id = \"/cam\";\n  img_msg.header.seq = trace_id_;\n  img_msg.header.stamp = ros::Time().fromNSec(timestamp);\n  img_msg.image = img_rgb;\n  img_msg.encoding = sensor_msgs::image_encodings::BGR8;\n  pub_images_.at(frame_index).publish(img_msg.toImageMsg());\n}\n\nvoid Visualizer::publishImages(\n    const std::vector<cv::Mat>& images,\n    const int64_t timestamp_nanoseconds)\n{\n  if(trace_id_ % img_pub_nth_ != 0)\n    return;\n  VLOG(100) << \"Publish images.\";\n\n  for(size_t i = 0; i < images.size(); ++i)\n  {\n    if(pub_images_.at(i).getNumSubscribers() == 0)\n      continue;\n\n    // Downsample image for publishing.\n    ImgPyr img_pyr;\n    if (images[i].type() == CV_8UC1)\n    {\n      frame_utils::createImgPyramid(images[i], img_pub_level_+1, img_pyr);\n    }\n    else if (images[i].type() == CV_8UC3)\n    {\n      cv::Mat gray_image;\n      cv::cvtColor(images[i], gray_image, CV_BGR2GRAY);\n      frame_utils::createImgPyramid(gray_image, img_pub_level_+1, img_pyr);\n    }\n    else\n    {\n      LOG(FATAL) << \"Unknown image type \" << images[i].type() << \"!\";\n    }\n\n    cv_bridge::CvImage img_msg;\n    img_msg.header.stamp = ros::Time().fromNSec(timestamp_nanoseconds);\n    img_msg.header.frame_id = \"/cam\"+std::to_string(i);\n    img_msg.image = img_pyr.at(img_pub_level_);\n    img_msg.encoding = sensor_msgs::image_encodings::MONO8;\n    pub_images_.at(i).publish(img_msg.toImageMsg());\n  }\n}\n\nvoid Visualizer::publishImagesWithFeatures(\n    const FrameBundlePtr& frame_bundle,\n    const int64_t timestamp)\n{\n  if(trace_id_ % img_pub_nth_ != 0)\n    return;\n\n  for(size_t i = 0; i < frame_bundle->size(); ++i)\n  {\n    if(pub_images_.at(i).getNumSubscribers() == 0)\n      continue;\n    VLOG(100) << \"Publish image with features \" << i;\n\n    FramePtr frame = frame_bundle->at(i);\n    cv::Mat img_rgb;\n    feature_detection_utils::drawFeatures(*frame, img_pub_level_, true, &img_rgb);\n    cv_bridge::CvImage img_msg;\n    img_msg.header.frame_id = \"/cam\";\n    img_msg.header.seq = trace_id_;\n    img_msg.header.stamp = ros::Time().fromNSec(timestamp);\n    img_msg.image = img_rgb;\n    img_msg.encoding = sensor_msgs::image_encodings::BGR8;\n    pub_images_.at(i).publish(img_msg.toImageMsg());\n  }\n}\n\nvoid Visualizer::visualizeHexacopter(\n      const Transformation& T_frame_world,\n      const uint64_t timestamp)\n{\n  if(pub_frames_.getNumSubscribers() > 0)\n  {\n    vk::output_helper::publishCameraMarker(\n        pub_frames_, \"cam_pos\", \"cams\", ros::Time().fromNSec(timestamp),\n        1, 0, 0.8, Vector3d(0.,0.,1.));\n  }\n}\n\nvoid Visualizer::visualizeQuadrocopter(\n    const Transformation& T_frame_world,\n    const uint64_t timestamp)\n{\n  vk::output_helper::publishTfTransform(\n        T_frame_world, ros::Time().fromNSec(timestamp), \"cam_pos\", kWorldFrame, br_);\n\n  if(pub_frames_.getNumSubscribers() > 0)\n  {\n    vk::output_helper::publishQuadrocopterMarkers(\n          pub_frames_, \"cam_pos\", \"cams\", ros::Time().fromNSec(timestamp),\n          1, 0, 0.8, Vector3d(0.,0.,1.));\n  }\n}\n\n\nvoid Visualizer::visualizeMarkers(\n    const FrameBundlePtr& frame_bundle,\n    const std::vector<FramePtr>& close_kfs,\n    const Map::Ptr& map)\n{\n  FramePtr frame = frame_bundle->at(0); // TODO\n  visualizeHexacopter(frame->T_f_w_, ros::Time::now().toNSec());\n  publishTrajectoryPoint(frame->pos(), ros::Time::now().toNSec(), trace_id_);\n  if(frame->isKeyframe() || publish_map_every_frame_)\n  {\n    std::vector<FramePtr> frames_to_visualize = close_kfs;\n    frames_to_visualize.push_back(frame);\n    publishMapRegion(frames_to_visualize);\n  }\n\n  if(publish_seeds_)\n    publishSeeds(map);\n  if(publish_seeds_uncertainty_)\n    publishSeedsUncertainty(map);\n}\n\nvoid Visualizer::publishTrajectoryPoint(\n    const Eigen::Vector3d& pos_in_vision,\n    const uint64_t timestamp,\n    const int id)\n{\n  if(pub_points_.getNumSubscribers() > 0)\n  {\n    VLOG(100) << \"Publish trajectory point.\";\n    vk::output_helper::publishPointMarker(\n        pub_points_, pos_in_vision, \"trajectory\",\n        ros::Time().fromNSec(timestamp), id, 0, 0.03*vis_scale_, Vector3d(0.,0.,0.5));\n  }\n}\n\nvoid Visualizer::publishSeeds(const Map::Ptr& map)\n{\n  VLOG(100) << \"Publish seeds.\";\n  double marker_scale = 0.03*vis_scale_;\n  visualization_msgs::Marker m;\n  m.header.frame_id = kWorldFrame;\n  m.header.stamp = ros::Time();\n  m.ns = \"seeds\";\n  m.id = 0;\n  m.type = visualization_msgs::Marker::POINTS;\n  m.action = 0; // add/modify\n  m.scale.x = marker_scale;\n  m.scale.y = marker_scale;\n  m.scale.z = marker_scale;\n  m.color.a = 1.0;\n  m.color.r = 1.0;\n  m.color.g = 0.0;\n  m.color.b = 0.0;\n  m.pose.orientation.x = 0.0;\n  m.pose.orientation.y = 0.0;\n  m.pose.orientation.z = 0.0;\n  m.pose.orientation.w = 1.0;\n  m.points.reserve(1000);\n  for(auto kf : map->keyframes_)\n  {\n    const FramePtr& frame = kf.second;\n    const Transformation T_w_f = frame->T_world_cam();\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      if(isSeed(frame->type_vec_[i]))\n      {\n        CHECK(!frame->seed_ref_vec_[i].keyframe) << \"Data inconsistent\";\n        const Vector3d xyz = T_w_f * frame->getSeedPosInFrame(i);\n        geometry_msgs::Point p;\n        p.x = xyz.x();\n        p.y = xyz.y();\n        p.z = xyz.z();\n        m.points.push_back(p);\n      }\n    }\n  }\n  pub_points_.publish(m);\n}\n\nvoid Visualizer::publishSeedsAsPointcloud(\n    const Frame& frame,\n    bool only_converged_seeds,\n    bool reset_pc_before_publishing)\n{\n  if(pub_pc_.getNumSubscribers() == 0)\n    return;\n  VLOG(100) << \"Publish seeds as pointcloud.\";\n\n  if(reset_pc_before_publishing)\n    pc_->clear();\n\n  pc_->header.frame_id = kWorldFrame;\n  pc_->header.stamp = ros::Time::now().toNSec();\n  pc_->reserve(frame.num_features_);\n  for(size_t i = 0; i < frame.num_features_; ++i)\n  {\n    if((only_converged_seeds && isConvergedSeed(frame.type_vec_.at(i)))\n       || !only_converged_seeds)\n    {\n      const Eigen::Vector3d xyz = frame.getSeedPosInFrame(i);\n      PointType p;\n      p.x = xyz.x();\n      p.y = xyz.y();\n      p.z = xyz.z();\n      p.intensity = frame.img().at<uint8_t>(frame.px_vec_(1,i), frame.px_vec_(0,i));\n      pc_->push_back(p);\n    }\n  }\n  VLOG(30) << \"Publish pointcloud of size \" << pc_->size();\n  pub_pc_.publish(pc_);\n}\n\nvoid Visualizer::publishSeedsUncertainty(const Map::Ptr& map)\n{\n  VLOG(100) << \"Publish seed uncertainty.\";\n  double marker_scale = 0.01*vis_scale_;\n  visualization_msgs::Marker msg_variance;\n  msg_variance.header.frame_id = kWorldFrame;\n  msg_variance.header.stamp = ros::Time();\n  msg_variance.ns = \"seeds_variance\";\n  msg_variance.id = 0;\n  msg_variance.type = visualization_msgs::Marker::LINE_LIST;\n  msg_variance.action = 0; // add/modify\n  msg_variance.scale.x = marker_scale;\n  msg_variance.scale.y = marker_scale;\n  msg_variance.scale.z = marker_scale;\n  msg_variance.color.a = 1.0;\n  msg_variance.color.r = 1.0;\n  msg_variance.color.g = 0.0;\n  msg_variance.color.b = 0.0;\n  msg_variance.points.reserve(1000);\n  for(auto kf : map->keyframes_)\n  {\n    const FramePtr& frame = kf.second;\n    const Transformation T_w_f = frame->T_world_cam();\n    for(size_t i = 0; i < frame->num_features_; ++i)\n    {\n      if(isSeed(frame->type_vec_[i]))\n      {\n        CHECK(!frame->seed_ref_vec_[i].keyframe) << \"Data inconsistent\";\n\n        const FloatType z_inv_max = seed::getInvMaxDepth(frame->invmu_sigma2_a_b_vec_.col(i));\n        const FloatType z_inv_min = seed::getInvMinDepth(frame->invmu_sigma2_a_b_vec_.col(i));\n        const Vector3d p1 = T_w_f * (frame->f_vec_.col(i) * (1.0 / z_inv_min));\n        const Vector3d p2 = T_w_f * (frame->f_vec_.col(i) * (1.0 / z_inv_max));\n\n        geometry_msgs::Point msg_point;\n        msg_point.x = p1.x();\n        msg_point.y = p1.y();\n        msg_point.z = p1.z();\n        msg_variance.points.push_back(msg_point);\n        msg_point.x = p2.x();\n        msg_point.y = p2.y();\n        msg_point.z = p2.z();\n        msg_variance.points.push_back(msg_point);\n      }\n    }\n  }\n  pub_points_.publish(msg_variance);\n}\n\nvoid Visualizer::publishMapRegion(const std::vector<FramePtr>& frames)\n{\n  VLOG(100) << \"Publish map region.\";\n  uint64_t ts = vk::Timer::getCurrentTime();\n  if(pub_pc_.getNumSubscribers() > 0)\n  {\n    pc_->header.frame_id = kWorldFrame;\n\n    pcl_conversions::toPCL(ros::Time::now(), pc_->header.stamp);\n    pc_->clear();\n    pc_->reserve(frames.size() * 150);\n    PointType p;\n    for(const FramePtr& frame : frames)\n    {\n      for(size_t i = 0; i < frame->num_features_; ++i)\n      {\n        if(frame->landmark_vec_[i] == nullptr)\n          continue;\n\n        Point& point = *frame->landmark_vec_[i];\n        if(point.last_published_ts_ == ts)\n          continue;\n        point.last_published_ts_ = ts;\n        p.x = point.pos_.x();\n        p.y = point.pos_.y();\n        p.z = point.pos_.z();\n        p.intensity = isEdgelet(frame->type_vec_[i]) ? 60 : 0;\n        pc_->push_back(p);\n      }\n    }\n    VLOG(100) << \"Publish pointcloud of size \" << pc_->size();\n    pub_pc_.publish(pc_);\n  }\n\n  if(pub_points_.getNumSubscribers() > 0)\n  {\n    for(const FramePtr& frame : frames)\n      publishKeyframeWithPoints(frame, ++ts);\n  }\n}\n\nvoid Visualizer::publishKeyframeWithPoints(\n    const FramePtr& frame,\n    const uint64_t timestamp,\n    const double marker_scale)\n{\n  // publish keyframe\n  Transformation T_world_cam(frame->T_f_w_.inverse());\n  vk::output_helper::publishFrameMarker(\n      pub_frames_, T_world_cam.getRotationMatrix(),\n      T_world_cam.getPosition(), \"kfs\", ros::Time::now(), frame->id_*10, 0, marker_scale*2.0);\n\n  // publish point cloud and links\n  Position xyz_world;\n  int id = 0;\n  for(size_t i = 0; i < frame->num_features_; ++i)\n  {\n    if(frame->landmark_vec_[i] != nullptr)\n    {\n      PointPtr& point = frame->landmark_vec_[i];\n      if(point->last_published_ts_ == timestamp)\n        continue;\n      point->last_published_ts_ = timestamp;\n      xyz_world = point->pos();\n      id = point->id();\n    }\n    else if(frame->seed_ref_vec_[i].keyframe != nullptr)\n    {\n      const SeedRef& ref = frame->seed_ref_vec_[i];\n      xyz_world = ref.keyframe->T_world_cam() * ref.keyframe->getSeedPosInFrame(ref.seed_id);\n      id = -ref.keyframe->id()*1000+ref.seed_id;\n    }\n    else\n      continue;\n\n    if(isEdgelet(frame->type_vec_[i]))\n    {\n      vk::output_helper::publishPointMarker(\n          pub_points_, xyz_world, \"pts\",\n          ros::Time::now(), id, 0, marker_scale*vis_scale_,\n          Vector3d(0,0.6,0), publish_points_display_time_);\n    }\n    else\n    {\n      vk::output_helper::publishPointMarker(\n          pub_points_, xyz_world, \"pts\",\n          ros::Time::now(), id, 0, marker_scale*vis_scale_,\n          Vector3d(1,0,1), publish_points_display_time_);\n    }\n\n    if(trace_pointcloud_)\n    {\n      if(!ofs_pointcloud_.is_open())\n        ofs_pointcloud_.open(trace_dir_+\"/pointcloud.txt\");\n      ofs_pointcloud_ << xyz_world.x() << \" \"\n                      << xyz_world.y() << \" \"\n                      << xyz_world.z() << std::endl;\n    }\n\n    /*\n    if(point->normal_set_)\n    {\n      vk::output_helper::publishArrowMarker(\n          pub_points_, T_world_from_vision_*point->pos_,\n          T_world_from_vision_.rotation_matrix()*point->normal_, 0.1,\n          \"normal\", ros::Time::now(), point->id_, 0,  0.005,\n          Vector3d(0.0, 0., 1.0));\n    }\n    */\n\n  }\n}\n\nvoid Visualizer::publishLoopClosure(\n      const FramePtr& query, const FramePtr& match,\n      const Transformation& T_match_query)\n{\n  CHECK(query);\n  const Eigen::Vector3d p_w_query = query->T_f_w_.inverse().getPosition();\n  const Eigen::Vector3d p_w_match = match->T_f_w_.inverse().getPosition();\n  const Eigen::Vector3d p_w_query_should =\n      (match->T_f_w_.inverse() * T_match_query).getPosition();\n\n  visualization_msgs::Marker marker;\n  marker.header.frame_id = \"/world\";\n  marker.header.stamp = ros::Time::now();\n  marker.ns = \"lcs\";\n  marker.id = query->id() * 2;\n  marker.type = visualization_msgs::Marker::ARROW;\n  marker.action = visualization_msgs::Marker::ADD;\n  marker.points.reserve(2);\n  geometry_msgs::Point point;\n  point.x = static_cast<float>(p_w_match.x());\n  point.y = static_cast<float>(p_w_match.y());\n  point.z = static_cast<float>(p_w_match.z());\n  marker.points.push_back(point);\n  point.x = static_cast<float>(p_w_query_should.x());\n  point.y = static_cast<float>(p_w_query_should.y());\n  point.z = static_cast<float>(p_w_query_should.z());\n  marker.points.push_back(point);\n  marker.scale.x = 0.01;\n  marker.scale.y = 0.01;\n  marker.color.a = 1.0;\n  marker.color.r = 0.0;\n  marker.color.g = 1.0;\n  marker.color.b = 0.0;\n  pub_loop_closure_.publish(marker);\n\n  marker.id = query->id() * 2 + 1;\n  marker.points.clear();\n  point.x = static_cast<float>(p_w_query.x());\n  point.y = static_cast<float>(p_w_query.y());\n  point.z = static_cast<float>(p_w_query.z());\n  marker.points.push_back(point);\n  point.x = static_cast<float>(p_w_query_should.x());\n  point.y = static_cast<float>(p_w_query_should.y());\n  point.z = static_cast<float>(p_w_query_should.z());\n  marker.points.push_back(point);\n  marker.color.r = 1.0;\n  marker.color.g = 0.0;\n  marker.color.b = 0.0;\n  pub_loop_closure_.publish(marker);\n}\n\nvoid Visualizer::exportToDense(const FrameBundlePtr& frame_bundle)\n{\n  VLOG(100) << \"Publish dense input.\";\n  for(size_t cam_index = 0; cam_index < frame_bundle->size(); ++cam_index)\n  {\n    if(dense_pub_nth_ > 0\n       && trace_id_%dense_pub_nth_ == 0\n       && pub_dense_.at(cam_index).getNumSubscribers() > 0)\n    {\n      const FramePtr& frame = frame_bundle->at(cam_index);\n      svo_msgs::DenseInputWithFeatures msg;\n      msg.header.stamp = ros::Time().fromNSec(frame->getTimestampNSec());\n      msg.header.frame_id = \"/world\";\n      msg.frame_id = frame->id_;\n\n      cv_bridge::CvImage img_msg;\n      img_msg.header.stamp = msg.header.stamp;\n      img_msg.header.frame_id = \"camera\";\n      if (!frame->original_color_image_.empty())\n      {\n        img_msg.image = frame->original_color_image_;\n        img_msg.encoding = sensor_msgs::image_encodings::BGR8;\n      }\n      else\n      {\n        img_msg.image = frame->img();\n        img_msg.encoding = sensor_msgs::image_encodings::MONO8;\n      }\n      msg.image = *img_msg.toImageMsg();\n\n      double min_z = std::numeric_limits<double>::max();\n      double max_z = std::numeric_limits<double>::min();\n\n      Position xyz_world;\n      for(size_t i = 0; i < frame->num_features_; ++i)\n      {\n        if(frame->landmark_vec_[i] != nullptr)\n        {\n          xyz_world = frame->landmark_vec_[i]->pos();\n        }\n        else if(frame->seed_ref_vec_[i].keyframe != nullptr)\n        {\n          const SeedRef& ref = frame->seed_ref_vec_[i];\n          xyz_world = ref.keyframe->T_world_cam() * ref.keyframe->getSeedPosInFrame(ref.seed_id);\n        }\n        else\n          continue;\n\n        svo_msgs::Feature feature;\n        feature.x = xyz_world(0);\n        feature.y = xyz_world(1);\n        feature.z = xyz_world(2);\n        msg.features.push_back(feature);\n\n        Position pos_in_frame = frame->T_f_w_ * xyz_world;\n        min_z = std::min(pos_in_frame[2], min_z);\n        max_z = std::max(pos_in_frame[2], max_z);\n      }\n      msg.min_depth = (float) min_z;\n      msg.max_depth = (float) max_z;\n\n      // publish cam in world frame\n      Transformation T_world_from_cam(frame->T_f_w_.inverse());\n      const Eigen::Quaterniond& q = T_world_from_cam.getRotation().toImplementation();\n      const Vector3d& p = T_world_from_cam.getPosition();\n\n      msg.pose.position.x = p[0];\n      msg.pose.position.y = p[1];\n      msg.pose.position.z = p[2];\n      msg.pose.orientation.w = q.w();\n      msg.pose.orientation.x = q.x();\n      msg.pose.orientation.y = q.y();\n      msg.pose.orientation.z = q.z();\n      pub_dense_.at(cam_index).publish(msg);\n    }\n  }\n}\n\nvoid Visualizer::visualizeCoordinateFrames(const Transformation& T_world_cam)\n{\n  if(pub_markers_.getNumSubscribers() == 0)\n    return;\n\n  // camera frame\n  vk::output_helper::publishFrameMarker(\n        pub_markers_, T_world_cam.getRotationMatrix(), T_world_cam.getPosition(),\n        \"cam\", ros::Time::now(), 0, 0, 0.2);\n\n  // origin frame\n  vk::output_helper::publishFrameMarker(\n        pub_markers_, Matrix3d::Identity(), Vector3d::Zero(),\n        kWorldFrame, ros::Time::now(), 0, 0, 0.2);\n}\n\nvoid Visualizer::publishLoopClosureInfo(const std::vector<Eigen::Matrix<float, 1, 6>,\n  Eigen::aligned_allocator<Eigen::Matrix<float, 1, 6> > >& loop_closure_data)\n{\n  static int publish_count, publish_tracker_count;\n  int size = loop_closure_data.size();\n  if (size > publish_count)\n  {\n    for (int i = publish_count; i < size; i++)\n    {\n      publish_tracker_count++;\n      visualization_msgs::Marker marker;\n      marker.header.frame_id = \"/world\";\n      marker.header.stamp = ros::Time::now();\n      marker.ns = \"lcs\";\n      marker.id = i;\n      marker.type = visualization_msgs::Marker::LINE_LIST;\n      marker.action = visualization_msgs::Marker::ADD;\n      marker.points.reserve(2);\n      geometry_msgs::Point point;\n      point.x = static_cast<float>(loop_closure_data[i](0, 0));\n      point.y = static_cast<float>(loop_closure_data[i](0, 1));\n      point.z = static_cast<float>(loop_closure_data[i](0, 2));\n      marker.points.push_back(point);\n      point.x = static_cast<float>(loop_closure_data[i](0, 3));\n      point.y = static_cast<float>(loop_closure_data[i](0, 4));\n      point.z = static_cast<float>(loop_closure_data[i](0, 5));\n      marker.points.push_back(point);\n      marker.scale.x = 0.015;\n      marker.scale.y = 0.015;\n      marker.scale.z = 0.015;\n      marker.color.a = 1.0;\n      marker.color.r = 1.0;\n      marker.color.g = 0.0;\n      marker.color.b = 0.0;\n      pub_loop_closure_.publish(marker);\n    }\n    publish_count = publish_tracker_count;\n  }\n}\n\n} // end namespace svo\n"
  },
  {
    "path": "svo_ros/svo_nodelet.xml",
    "content": "<library path=\"libsvo_nodelet\">\n  <class name=\"svo_ros/SvoNodelet\"\n         type=\"svo::SvoNodelet\"\n         base_class_type=\"nodelet::Nodelet\">\n    <description> \n      A nodelet wrapper for SVO.\n    </description>\n  </class>\n</library>\n"
  },
  {
    "path": "svo_tracker/CMakeLists.txt",
    "content": "project(svo_tracker)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple()\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/svo/tracker/feature_tracking_types.h\n  include/svo/tracker/feature_tracking_utils.h\n  include/svo/tracker/feature_tracking_viz.h\n  include/svo/tracker/feature_tracker.h\n  )\n\nset(SOURCES\n  src/feature_tracking_types.cpp\n  src/feature_tracking_utils.cpp\n  src/feature_tracking_viz.cpp\n  src/feature_tracker.cpp\n  )\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n################################################################################\ncs_install()\ncs_export()\n\n"
  },
  {
    "path": "svo_tracker/include/svo/tracker/feature_tracker.h",
    "content": "#pragma once\n\n#include <svo/common/types.h>\n#include <svo/common/camera_fwd.h>\n#include <svo/common/transformation.h>\n#include <svo/tracker/feature_tracking_types.h>\n\nnamespace svo {\n\n// Forward declarations.\nclass AbstractDetector;\nstruct DetectorOptions;\n\nclass FeatureTracker\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef std::shared_ptr<FeatureTracker> Ptr;\n\n  FeatureTracker() = delete;\n\n  /// Provide number of frames per frame_bundle\n  FeatureTracker(\n      const FeatureTrackerOptions& options,\n      const DetectorOptions& detector_options,\n      const CameraBundlePtr& cams);\n\n  /// Tracks current features and if many tracks terminate, automatically\n  /// initializes new tracks.\n  void trackAndDetect(const FrameBundlePtr& nframe_kp1);\n\n  /// Tracks a frame bundle. Returns number of tracked features.\n  size_t trackFrameBundle(const FrameBundlePtr& nframe_kp1);\n\n  /// Extract new features\n  size_t initializeNewTracks(const FrameBundlePtr& nframe_k);\n\n  const FeatureTracks& getActiveTracks(size_t frame_index) const;\n\n  size_t getTotalActiveTracks() const;\n\n  /// pivot_ration needs to be in range(0,1) and if 0.5 the disparity that\n  /// is returned per frame is the median. If 0.25 it means that 25% of the\n  /// tracks have a higher disparity than returned.\n  void getNumTrackedAndDisparityPerFrame(\n      double pivot_ratio,\n      std::vector<size_t>* num_tracked,\n      std::vector<double>* disparity) const;\n\n  FrameBundlePtr getOldestFrameInTrack(size_t frame_index) const;\n\n  void resetActiveTracks();\n\n  void resetTerminatedTracks();\n\n  /// Clear all stored data.\n  void reset();\n\n//private:\n\n  FeatureTrackerOptions options_;\n\n  // A vector for each frame in the bundle.\n  const size_t bundle_size_;\n  std::vector<std::shared_ptr<AbstractDetector>> detectors_;\n  std::vector<FeatureTracks,\n  Eigen::aligned_allocator<FeatureTracks> > active_tracks_;\n  std::vector<FeatureTracks,\n  Eigen::aligned_allocator<FeatureTracks> > terminated_tracks_;\n};\n\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/include/svo/tracker/feature_tracking_types.h",
    "content": "#pragma once\n\n#include <glog/logging.h>\n#include <svo/common/types.h>\n\nnamespace svo {\n\n// -----------------------------------------------------------------------------\nstruct FeatureTrackerOptions\n{\n  /// We do the Lucas Kanade tracking in a pyramidal way. max_level specifies the\n  /// coarsest pyramidal level to optimize. For an image resolution of (640x480)\n  /// we set this variable to 4 if you have an image with double the resolution,\n  /// increase this number by one.\n  int klt_max_level = 4;\n\n  /// Similar to klt_max_level, this is the coarsest level to search for.\n  /// if you have a really high resolution image and you don't extract\n  /// features down to the lowest level you can set this number larger than 0.\n  int klt_min_level = 0;\n\n  /// Patch-size to use on each pyramid level.\n  std::vector<int> klt_patch_sizes = {16, 16, 16, 8, 8};\n\n  /// KLT termination criterion.\n  int klt_max_iter = 30;\n\n  /// KLT termination criterion.\n  double klt_min_update_squared = 0.001;\n\n  /// Use the first observation as klt template. If set to false, then the\n  /// last observation is used, which results in more feature drift.\n  bool klt_template_is_first_observation = true;\n\n  /// If number of tracks falls below this threshold, detect new features.\n  size_t min_tracks_to_detect_new_features = 50;\n\n  /// Reset tracker before detecting new features. This means that all active\n  /// tracks are always the same age.\n  bool reset_before_detection = true;\n};\n\n// -----------------------------------------------------------------------------\nclass FeatureRef\n{\npublic:\n  FeatureRef() = delete;\n\n  FeatureRef(\n      const FrameBundlePtr& frame_bundle, size_t frame_index, size_t feature_index);\n\n  inline const FrameBundlePtr getFrameBundle() const {\n    return frame_bundle_;\n  }\n\n  inline size_t getFrameIndex() const {\n    return frame_index_;\n  }\n\n  inline size_t getFeatureIndex() const {\n    return feature_index_;\n  }\n\n  const Eigen::Block<Keypoints, 2, 1> getPx() const;\n\n  const Eigen::Block<Bearings, 3, 1> getBearing() const;\n\n  const FramePtr getFrame() const;\n\nprivate:\n  FrameBundlePtr frame_bundle_;\n  size_t frame_index_;\n  size_t feature_index_;\n};\n\ntypedef std::vector<FeatureRef> FeatureRefList;\n\n\n// -----------------------------------------------------------------------------\nclass FeatureTrack\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  explicit FeatureTrack(int track_id);\n\n  inline int getTrackId() const {\n    return track_id_;\n  }\n\n  inline const FeatureRefList& getFeatureTrack() const {\n    return feature_track_;\n  }\n\n  inline size_t size() const {\n    return feature_track_.size();\n  }\n\n  inline bool empty() const {\n    return feature_track_.empty();\n  }\n\n  /// The feature at the front is the first observed feature.\n  inline const FeatureRef& front() const {\n    CHECK(!empty()) << \"Track empty when calling front().\";\n    return feature_track_.front();\n  }\n\n  /// The feature at the back is the last observed feature.\n  inline const FeatureRef& back() const {\n    CHECK(!empty()) << \"Track empty when calling back().\";\n    return feature_track_.back();\n  }\n\n  inline const FeatureRef& at(size_t i) const {\n    CHECK_LT(i, feature_track_.size()) << \"Index too large.\";\n    return feature_track_.at(i);\n  }\n\n  /// New observations are always inserted at the back of the vector.\n  inline void pushBack(\n      const FrameBundlePtr& frame_bundle,\n      const size_t frame_index,\n      const size_t feature_index) {\n    feature_track_.emplace_back(FeatureRef(frame_bundle, frame_index, feature_index));\n  }\n\n  double getDisparity() const;\n\nprivate:\n  int track_id_;\n  FeatureRefList feature_track_;\n};\ntypedef std::vector<FeatureTrack,\nEigen::aligned_allocator<FeatureTrack> > FeatureTracks;\n\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/include/svo/tracker/feature_tracking_utils.h",
    "content": "#pragma once\n\n#include <utility>\n#include <svo/common/types.h>\n#include <svo/tracker/feature_tracking_types.h>\n\nnamespace svo {\n\nnamespace feature_tracking_utils {\n\n/// pivot_ration needs to be in range(0,1) and if 0.5 it returns the median.\ndouble getTracksDisparityPercentile(\n    const FeatureTracks& tracks,\n    double pivot_ratio);\n\n/// Loops through TrackIds and checks if two frames have tracks in common.\nvoid getFeatureMatches(\n    const Frame& frame1, const Frame& frame2,\n    std::vector<std::pair<size_t, size_t>>* matches_12);\n\n} // namespace feature_tracking_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/include/svo/tracker/feature_tracking_viz.h",
    "content": "#pragma once\n\n#include <svo/common/types.h>\n\nnamespace svo {\n\n// Forward declarations\nclass FeatureTracker;\n\nvoid visualizeTracks(\n    const FeatureTracker& tracker, size_t frame_index, int sleep);\n\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>svo_tracker</name>\n  <description>\n    SVO tracking module.\n  </description>\n  <version>0.0.1</version>\n  <license>tbd</license>\n\n  <author>Christian Forster</author>\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>roslib</depend>\n  <depend>glog_catkin</depend>\n  <depend>cv_bridge</depend>\n  <depend>eigen_catkin</depend>\n  <depend>svo_common</depend>\n  <depend>svo_direct</depend>\n  \n  <test_depend>gtest</test_depend>\n</package>\n"
  },
  {
    "path": "svo_tracker/src/feature_tracker.cpp",
    "content": "#include \"svo/tracker/feature_tracker.h\"\n\n#include <svo/common/camera.h>\n#include <svo/common/container_helpers.h>\n#include <svo/common/frame.h>\n#include <svo/common/point.h>\n#include <svo/direct/feature_alignment.h>\n#include <svo/direct/feature_detection.h>\n#include <svo/direct/feature_detection_utils.h>\n\n#include \"svo/tracker/feature_tracking_utils.h\"\n\nnamespace svo {\n\nFeatureTracker::FeatureTracker(\n    const FeatureTrackerOptions& options,\n    const DetectorOptions& detector_options,\n    const CameraBundlePtr& cams)\n  : options_(options)\n  , bundle_size_(cams->getNumCameras())\n  , active_tracks_(bundle_size_)\n  , terminated_tracks_(bundle_size_)\n{\n  for(size_t i = 0; i < cams->getNumCameras(); ++i)\n  {\n    detectors_.push_back(\n          feature_detection_utils::makeDetector(\n            detector_options, cams->getCameraShared(i)));\n  }\n}\n\nvoid FeatureTracker::trackAndDetect(const FrameBundlePtr& nframe_kp1)\n{\n  size_t n_tracked = trackFrameBundle(nframe_kp1);\n  if(n_tracked < options_.min_tracks_to_detect_new_features)\n  {\n    VLOG(4) << \"Tracker: Detect new features\";\n    if(options_.reset_before_detection)\n    {\n      VLOG(4) << \"Tracker: reset.\";\n      resetActiveTracks();\n\n      VLOG(4) << \"*** Tracker has \" << active_tracks_.at(0).size();\n\n      for(const FramePtr& frame : nframe_kp1->frames_)\n        frame->clearFeatureStorage();\n    }\n    initializeNewTracks(nframe_kp1);\n  }\n}\n\nsize_t FeatureTracker::trackFrameBundle(const FrameBundlePtr& nframe_kp1)\n{\n  // Cleanup from previous tracking.\n  resetTerminatedTracks();\n\n  // TODO(cfo): Implement prediction when relative rotation is known.\n  // TODO(cfo): Datastructure could be simplified. We need only the first frame in track.\n  for(size_t frame_index = 0; frame_index < bundle_size_; ++frame_index)\n  {\n    FeatureTracks& tracks = active_tracks_.at(frame_index);\n    const FramePtr& cur_frame = nframe_kp1->at(frame_index);\n    std::vector<size_t> remove_indices;\n    Keypoints new_keypoints(2, tracks.size());\n    Scores new_scores(tracks.size());\n    TrackIds new_track_ids(tracks.size());\n    size_t new_keypoints_counter = 0;    \n    for(size_t track_index = 0; track_index < tracks.size(); ++track_index)\n    {\n      FeatureTrack& track = tracks.at(track_index);\n      const FeatureRef& ref_observation =\n          (options_.klt_template_is_first_observation) ? track.front() : track.back();\n\n      const ImgPyr& ref_pyr = ref_observation.getFrame()->img_pyr_;\n      const ImgPyr& cur_pyr = cur_frame->img_pyr_;\n\n      // TODO(cfo): make work for feature coordinates with subpixel reference patch!\n      // Currently not a problem because feature detector returns integer pos.\n      Eigen::Vector2i ref_px_level_0 = ref_observation.getPx().cast<int>();\n      Keypoint cur_px_level_0 = track.back().getPx();\n      bool success = feature_alignment::alignPyr2D(\n            ref_pyr, cur_pyr,\n            options_.klt_max_level, options_.klt_min_level, options_.klt_patch_sizes,\n            options_.klt_max_iter, options_.klt_min_update_squared,\n            ref_px_level_0, cur_px_level_0);\n      if(success)\n      {\n        new_keypoints.col(new_keypoints_counter) = cur_px_level_0;\n        new_scores(new_keypoints_counter) =\n            ref_observation.getFrame()->score_vec_[ref_observation.getFeatureIndex()];\n        new_track_ids(new_keypoints_counter) = track.getTrackId();\n        track.pushBack(nframe_kp1, frame_index, new_keypoints_counter);\n        ++new_keypoints_counter;\n      }\n      else\n      {\n        remove_indices.push_back(track_index);\n        terminated_tracks_.at(frame_index).push_back(track);\n      }\n    }\n\n    // Remove keypoints to delete.\n//    svo::common::container_helpers::eraseIndicesFromVector(remove_indices, &tracks);\n    auto new_tracks = svo::common::container_helpers::eraseIndicesFromVector_DEPRECATED(tracks, remove_indices);\n    tracks = new_tracks;\n\n    // Insert new keypoints in frame.\n    cur_frame->resizeFeatureStorage(new_keypoints_counter);\n    cur_frame->px_vec_ = new_keypoints.leftCols(new_keypoints_counter);\n    cur_frame->score_vec_ = new_scores.head(new_keypoints_counter);\n    cur_frame->track_id_vec_ = new_track_ids.head(new_keypoints_counter);\n    cur_frame->num_features_ = new_keypoints_counter;\n\n    // Compute and normalize all bearing vectors.\n    frame_utils::computeNormalizedBearingVectors(\n          cur_frame->px_vec_, *cur_frame->cam(), &cur_frame->f_vec_);\n\n    VLOG(4) << \"Tracker: Frame-\" << frame_index << \" - tracked = \" << new_keypoints_counter;\n  }\n\n  return getTotalActiveTracks();\n}\n\nsize_t FeatureTracker::initializeNewTracks(const FrameBundlePtr& nframe)\n{\n  CHECK_EQ(nframe->size(), detectors_.size());\n  CHECK_EQ(nframe->size(), active_tracks_.size());\n\n\n  for(size_t frame_index = 0; frame_index < bundle_size_; ++frame_index)\n  {\n    // Detect features\n    const FramePtr& frame = nframe->at(frame_index);\n    detectors_.at(frame_index)->resetGrid();\n    detectors_.at(frame_index)->grid_.fillWithKeypoints(frame->px_vec_);\n\n    // Detect new features.\n    Keypoints new_px;\n    Levels new_levels;\n    Scores new_scores;\n    Gradients new_grads;\n    FeatureTypes new_types;\n    Bearings new_f;\n    const size_t max_n_features = detectors_.at(frame_index)->grid_.size();\n    detectors_.at(frame_index)->detect(\n          frame->img_pyr_, frame->getMask(), max_n_features, new_px, new_scores,\n          new_levels, new_grads, new_types);\n\n    // Compute and normalize all bearing vectors.\n    std::vector<bool> success;\n    frame->cam()->backProject3(new_px, &new_f, &success);\n    for (const bool s : success) {\n      CHECK(s);\n    }\n\n    new_f = new_f.array().rowwise() / new_f.colwise().norm().array();\n\n    // Add features to frame.\n    const size_t n_old = frame->num_features_;\n    const size_t n_new = new_px.cols();\n    frame->resizeFeatureStorage(n_old + n_new);\n    frame->px_vec_.middleCols(n_old, n_new) = new_px;\n    frame->f_vec_.middleCols(n_old, n_new) = new_f;\n    frame->grad_vec_.middleCols(n_old, n_new) = new_grads;\n    frame->score_vec_.segment(n_old, n_new) = new_scores;\n    frame->level_vec_.segment(n_old, n_new) = new_levels;\n    // TODO(cfo) frame->type_vec_\n    frame->num_features_ = n_old+n_new;\n\n    // Create a track for each feature\n    FeatureTracks& tracks = active_tracks_.at(frame_index);\n    tracks.reserve(frame->numFeatures());\n    for(size_t feature_index = n_old; feature_index < frame->numFeatures(); ++feature_index)\n    {\n      const int new_track_id = PointIdProvider::getNewPointId();\n      tracks.emplace_back(new_track_id);\n      tracks.back().pushBack(nframe, frame_index, feature_index);\n      frame->track_id_vec_(feature_index) = new_track_id;\n    }\n\n    VLOG(4) << \"Tracker: Frame-\" << frame_index << \" - detected = \" << n_new\n            << \", total = \" << n_new + n_old;\n  }\n\n  return getTotalActiveTracks();\n}\n\nconst FeatureTracks& FeatureTracker::getActiveTracks(size_t frame_index) const\n{\n  CHECK_LT(frame_index, active_tracks_.size());\n  return active_tracks_.at(frame_index);\n}\n\nsize_t FeatureTracker::getTotalActiveTracks() const\n{\n  size_t i = 0;\n  for(auto& tracks : active_tracks_)\n    i += tracks.size();\n  return i;\n}\n\nvoid FeatureTracker::getNumTrackedAndDisparityPerFrame(\n    double pivot_ratio,\n    std::vector<size_t>* num_tracked,\n    std::vector<double>* disparity) const\n{\n  CHECK_NOTNULL(num_tracked);\n  CHECK_NOTNULL(disparity);\n  num_tracked->resize(bundle_size_);\n  disparity->resize(bundle_size_);\n\n  for(size_t i = 0; i < bundle_size_; ++i)\n  {\n    num_tracked->at(i) = active_tracks_[i].size();\n    disparity->at(i) = feature_tracking_utils::getTracksDisparityPercentile(\n          active_tracks_[i], pivot_ratio);\n  }\n}\n\nFrameBundlePtr FeatureTracker::getOldestFrameInTrack(size_t frame_index) const\n{\n  CHECK_LT(frame_index, active_tracks_.size());\n  const FeatureTrack& track = active_tracks_.at(frame_index).front();\n  CHECK(!track.empty());\n  return track.at(0).getFrameBundle();\n}\n\nvoid FeatureTracker::resetActiveTracks()\n{\n  for(auto& track : active_tracks_)\n    track.clear();\n}\n\nvoid FeatureTracker::resetTerminatedTracks()\n{\n  for(auto& track : terminated_tracks_)\n    track.clear();\n}\n\nvoid FeatureTracker::reset()\n{\n  resetActiveTracks();\n  resetTerminatedTracks();\n  for(auto& detector : detectors_)\n    detector->resetGrid();\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/src/feature_tracking_types.cpp",
    "content": "#include <svo/tracker/feature_tracking_types.h>\n#include <svo/common/frame.h>\n\nnamespace svo {\n\n// -----------------------------------------------------------------------------\nFeatureRef::FeatureRef(\n    const FrameBundlePtr& frame_bundle, size_t frame_index, size_t feature_index)\n  : frame_bundle_(frame_bundle)\n  , frame_index_(frame_index)\n  , feature_index_(feature_index)\n{\n  CHECK_LT(frame_index_, frame_bundle_->size());\n}\n\nconst Eigen::Block<Keypoints, 2, 1> FeatureRef::getPx() const\n{\n  return frame_bundle_->at(frame_index_)->px_vec_.block<2,1>(0, feature_index_);\n}\n\nconst Eigen::Block<Bearings, 3, 1> FeatureRef::getBearing() const\n{\n  return frame_bundle_->at(frame_index_)->f_vec_.block<3,1>(0, feature_index_);\n}\n\nconst FramePtr FeatureRef::getFrame() const\n{\n  return frame_bundle_->at(frame_index_);\n}\n\n// -----------------------------------------------------------------------------\nFeatureTrack::FeatureTrack(int track_id)\n  : track_id_(track_id)\n{\n  feature_track_.reserve(10);\n}\n\ndouble FeatureTrack::getDisparity() const\n{\n  return (front().getPx() - back().getPx()).norm();\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/src/feature_tracking_utils.cpp",
    "content": "#include <svo/tracker/feature_tracking_utils.h>\n\n#include <svo/common/types.h>\n#include <svo/common/frame.h>\n#include <svo/tracker/feature_tracking_types.h>\n\nnamespace svo {\nnamespace feature_tracking_utils {\n\ndouble getTracksDisparityPercentile(\n    const FeatureTracks& tracks,\n    double pivot_ratio)\n{\n  CHECK_GT(pivot_ratio, 0.0) << \"pivot_ratio needs to be in (0,1)\";\n  CHECK_LT(pivot_ratio, 1.0) << \"pivot_ratio needs to be in (0,1)\";\n\n  if(tracks.empty())\n    return 0.0;\n\n  // compute all disparities.\n  std::vector<double> disparities;\n  disparities.reserve(tracks.size());\n  for(const FeatureTrack& track : tracks)\n    disparities.push_back(track.getDisparity());\n\n  // compute percentile.\n  const size_t pivot = std::floor(pivot_ratio * disparities.size());\n  CHECK_LT(pivot, disparities.size());\n  std::nth_element(disparities.begin(), disparities.begin() + pivot, disparities.end(),\n                   std::greater<double>());\n  return disparities[pivot];\n}\n\nvoid getFeatureMatches(\n    const Frame& frame1, const Frame& frame2,\n    std::vector<std::pair<size_t, size_t>>* matches_12)\n{\n  CHECK_NOTNULL(matches_12);\n\n  // Create lookup-table with track-ids from frame 1.\n  std::unordered_map<int, size_t> trackid_slotid_map;\n  for(size_t i = 0; i < frame1.num_features_; ++i)\n  {\n    int track_id_1 = frame1.track_id_vec_(i);\n    if(track_id_1 >= 0)\n      trackid_slotid_map[track_id_1] = i;\n  }\n\n  // Create list of matches.\n  matches_12->reserve(frame2.num_features_);\n  for(size_t i = 0; i < frame2.num_features_; ++i)\n  {\n    int track_id_2 = frame2.track_id_vec_(i);\n    if(track_id_2 >= 0)\n    {\n      const auto it = trackid_slotid_map.find(track_id_2);\n      if(it != trackid_slotid_map.end())\n        matches_12->push_back(std::make_pair(it->second, i));\n    }\n  }\n}\n\n} // namespace feature_tracking_utils\n} // namespace svo\n"
  },
  {
    "path": "svo_tracker/src/feature_tracking_viz.cpp",
    "content": "#include <svo/tracker/feature_tracking_viz.h>\n#include <svo/tracker/feature_tracker.h>\n#include <svo/common/frame.h>\n\n#include <opencv2/core/core.hpp>\n#include <opencv2/imgproc/imgproc.hpp>\n#include <opencv2/highgui/highgui.hpp>\n\nnamespace svo {\n\nvoid visualizeTracks(\n    const FeatureTracker& tracker, size_t frame_index, int sleep)\n{\n  const FeatureTracks tracks = tracker.getActiveTracks(frame_index);\n  if(tracks.empty())\n  {\n    VLOG(1) << \"No features to visualize.\";\n    return;\n  }\n  VLOG(5) << \"Tracker: Visualize \" << tracks.size() << \" tracks.\";\n\n  cv::Mat img_8u = tracks.at(0).back().getFrame()->img();\n  cv::Mat img_rgb(img_8u.size(), CV_8UC3);\n  cv::cvtColor(img_8u, img_rgb, cv::COLOR_GRAY2RGB);\n  int frame_id = tracks.at(0).back().getFrame()->id();\n  for(size_t i = 0; i < tracks.size(); ++i)\n  {\n    const FeatureTrack& track = tracks.at(i);\n    CHECK_EQ(frame_id, track.back().getFrame()->id());\n    cv::line(\n          img_rgb,\n          cv::Point2f(track.front().getPx()(0), track.front().getPx()(1)),\n          cv::Point2f(track.back().getPx()(0), track.back().getPx()(1)),\n          cv::Scalar(0,255,0), 2);\n  }\n  cv::imshow(\"tracking result\", img_rgb);\n  cv::waitKey(sleep);\n}\n\n} // namespace svo\n"
  },
  {
    "path": "svo_vikit/LICENSE",
    "content": "Copyright (c) 2011-2013, Christian Forster and others.\nAll rights reserved.\n\nUnlike otherwise stated in source files, the code in this repository is\npublished under the Revised BSD (New BSD) license.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n    * Neither the name of the Robotics and Perception Group, UZH Zurich, nor the\n      names of its contributors may be used to endorse or promote products\n      derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  },
  {
    "path": "svo_vikit/README.md",
    "content": "### VIKIT\n\nVikit (Vision-Kit) provides some tools for your vision/robotics project.\nFar from stable."
  },
  {
    "path": "svo_vikit/vikit_cameras/CMakeLists.txt",
    "content": "project(vikit_cameras)\ncmake_minimum_required (VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/vikit/cameras.h\n  include/vikit/cameras/camera_geometry_base.h\n  include/vikit/cameras/implementation/camera_geometry_base.hpp\n  include/vikit/cameras/no_distortion.h\n  include/vikit/cameras/atan_distortion.h\n  include/vikit/cameras/equidistant_distortion.h\n  include/vikit/cameras/equidistant_fisheye_geometry.h\n  include/vikit/cameras/equidistant_fisheye_projection.h\n  include/vikit/cameras/omni_geometry.h\n  include/vikit/cameras/omni_projection.h\n  include/vikit/cameras/radial_tangential_distortion.h\n  include/vikit/cameras/pinhole_projection.h\n  include/vikit/cameras/implementation/pinhole_projection.hpp\n  include/vikit/cameras/camera_geometry.h\n  include/vikit/cameras/implementation/camera_geometry.hpp\n  include/vikit/cameras/camera_factory.h\n  include/vikit/cameras/ncamera.h\n  include/vikit/cameras/yaml/camera-yaml-serialization.h\n  include/vikit/cameras/yaml/ncamera-yaml-serialization.h\n  )\n\nset(SOURCES\n  src/camera_factory.cpp\n  src/ncamera.cpp\n  src/camera_geometry_base.cpp\n  src/camera_yaml_serialization.cpp\n  src/equidistant_fisheye_geometry.cpp\n  src/equidistant_fisheye_projection.cpp\n  src/omni_geometry.cpp\n  src/omni_projection.cpp\n  src/ncamera_yaml_serialization.cpp\n  )\n\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\ntarget_link_libraries(${PROJECT_NAME} yaml-cpp)\n\n################################################################################\n# Tests\n\ncatkin_add_gtest(${PROJECT_NAME}_tests\n  test/test_cameras\n)\ntarget_link_libraries(${PROJECT_NAME}_tests ${PROJECT_NAME})\n\n################################################################################\n# Install\n\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/atan_distortion.h",
    "content": "#pragma once\n\n#include <cmath>\n#include <iostream>\n#include <Eigen/Core>\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\n// This class implements the FOV distortion model of Deverneay and Faugeras,\n// Straight lines have to be straight, 2001.\nclass AtanDistortion\n{\npublic:\n\n  inline void initializeParameters(const double& s)\n  {\n    s_ = s;\n    s_inv_ = 1.0/s_;\n    tans_ = 2.0*std::tan(s_/2.0);\n    tans_inv_ = 1.0/tans_;\n  }\n\n  AtanDistortion(const double& s)\n  {\n    initializeParameters(s);\n  }\n\n  AtanDistortion(\n      const Eigen::VectorXd& parameters)\n  {\n    CHECK(parameters.size() == 1);\n    initializeParameters(parameters(0));\n  }\n\n  ~AtanDistortion() = default;\n\n  inline void distort(double& x, double& y) const\n  {\n    const double r = std::sqrt(x*x + y*y);\n    const double factor = (r < 0.001) ? 1.0 : s_inv_* std::atan(r * tans_) / r;\n    x *= factor;\n    y *= factor;\n  }\n\n  inline Eigen::Vector2d distort(const Eigen::Vector2d& vector) const {\n    const double r = vector.norm();\n    const double factor = (r < 0.001) ? 1.0 : s_inv_* std::atan(r * tans_) / r;\n    return factor * vector;\n  }\n\n  inline Eigen::Matrix2d jacobian(const Eigen::Vector2d& /*vector*/) const {\n    LOG(FATAL) << \"Not implemented yet!\";\n  }\n\n  inline void undistort(double& x, double& y) const\n  {\n    const double dist_r = std::sqrt(x*x + y*y);\n    const double r = std::tan(dist_r * s_) * tans_inv_;\n    const double d_factor = (dist_r > 0.01) ? r / dist_r : 1.0;\n    x *= d_factor;\n    y *= d_factor;\n  }\n\n  inline void print(std::ostream& out) const\n  {\n    out << \"  Distortion: Atan(\" << s_ << \")\" << std::endl;\n  }\n\n  enum IntrinsicParameters\n  {\n    kRadialDistortionFactor\n  };\n  // returns distortion parameters as vector\n  // [s_]\n  inline Eigen::VectorXd getDistortionParameters() const\n  {\n    Eigen::VectorXd distortion(1);\n    distortion(0) = s_;\n    return distortion;\n  }\n\n  double s_;      // Radial distortion factor\n  double s_inv_;\n  double tans_;\n  double tans_inv_;\n};\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/camera_factory.h",
    "content": "#pragma once\n\n#include <string>\n#include <vikit/cameras/camera_geometry_base.h>\n\nnamespace vk {\nnamespace cameras {\nnamespace factory {\n\nCameraGeometryBase::Ptr makePinholeCamera(\n    const Eigen::VectorXd& intrinsics, uint32_t width, uint32_t height);\n\nCameraGeometryBase::Ptr loadFromYAML(\n    const std::string& filename,\n    const std::string& cam_name);\n\n} // namespace factory\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/camera_geometry.h",
    "content": "#pragma once\n\n#include <string>\n#include <memory>\n#include <Eigen/Core>\n#include <vikit/cameras/camera_geometry_base.h>\n\nnamespace vk {\nnamespace cameras {\n\ntemplate<typename Projection>\nclass CameraGeometry : public CameraGeometryBase\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef Projection projection_t;\n\n  CameraGeometry(\n      const int width,\n      const int height,\n      const projection_t& projection);\n\n  virtual ~CameraGeometry() = default;\n\n  virtual bool backProject3(\n      const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n      Eigen::Vector3d* out_point_3d) const override;\n\n  virtual const ProjectionResult project3(\n      const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n      Eigen::Vector2d* out_keypoint,\n      Eigen::Matrix<double, 2, 3>* out_jacobian_point) const override;\n\n  virtual void printParameters(std::ostream& out, const std::string& s = \"Camera: \") const override;\n\n  virtual Eigen::VectorXd getIntrinsicParameters() const override;\n\n  virtual Eigen::VectorXd getDistortionParameters() const override;\n\n  virtual double errorMultiplier() const override;\n\n  virtual double getAngleError(double img_err) const override;\n\n  static std::shared_ptr<CameraGeometry<Projection>> createTestCamera();\n\n  template<typename T = Projection>\n  const T* projection() const;\n\nprivate:\n  projection_t projection_;\n};\n\n} // namespace cameras\n} // namespace vk\n\n#include <vikit/cameras/implementation/camera_geometry.hpp>\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/camera_geometry_base.h",
    "content": "#pragma once\n\n#include <string>\n#include <memory>\n#include <Eigen/Core>\n#include <opencv2/core/core.hpp>\n\n#include <aslam/common/macros.h>\n#include <aslam/common/pose-types.h>\n\nnamespace vk {\n\nusing Transformation = aslam::Transformation;\nusing TransformationVector = aslam::TransformationVector;\nusing Quaternion = aslam::Quaternion;\n\nnamespace cameras {\n\n/// \\struct ProjectionResult\n/// \\brief This struct is returned by the camera projection methods and holds the result state\n///        of the projection operation.\nstruct ProjectionResult {\n  /// Possible projection state.\n  enum class Status {\n    /// Keypoint is visible and projection was successful.\n    KEYPOINT_VISIBLE,\n    /// Keypoint is NOT visible but projection was successful.\n    KEYPOINT_OUTSIDE_IMAGE_BOX,\n    /// The projected point lies behind the camera plane.\n    POINT_BEHIND_CAMERA,\n    /// The projection was unsuccessful.\n    PROJECTION_INVALID,\n    /// Default value after construction.\n    UNINITIALIZED\n  };\n  // Make the enum values accessible from the outside without the additional indirection.\n  static Status KEYPOINT_VISIBLE;\n  static Status KEYPOINT_OUTSIDE_IMAGE_BOX;\n  static Status POINT_BEHIND_CAMERA;\n  static Status PROJECTION_INVALID;\n  static Status UNINITIALIZED;\n\n  constexpr ProjectionResult() : status_(Status::UNINITIALIZED) {}\n  constexpr ProjectionResult(Status status) : status_(status) {}\n\n  /// \\brief ProjectionResult can be typecasted to bool and is true if the projected keypoint\n  ///        is visible. Simplifies the check for a successful projection.\n  ///        Example usage:\n  /// @code\n  ///          aslam::ProjectionResult ret = camera_->project3(Eigen::Vector3d(0, 0, -10), &keypoint);\n  ///          if(ret) std::cout << \"Projection was successful!\\n\";\n  /// @endcode\n  explicit operator bool() const { return isKeypointVisible(); }\n\n  /// \\brief Compare objects.\n  bool operator==(const ProjectionResult& other) const { return status_ == other.status_; }\n\n  /// \\brief Compare projection status.\n  bool operator==(const ProjectionResult::Status& other) const { return status_ == other; }\n\n  /// \\brief Convenience function to print the state using streams.\n  friend std::ostream& operator<< (std::ostream& out, const ProjectionResult& state);\n\n  /// \\brief Check whether the projection was successful and the point is visible in the image.\n  bool isKeypointVisible() const { return (status_ == Status::KEYPOINT_VISIBLE); }\n\n  /// \\brief Returns the exact state of the projection operation.\n  ///        Example usage:\n  /// @code\n  ///          aslam::ProjectionResult ret = camera_->project3(Eigen::Vector3d(0, 0, -1), &keypoint);\n  ///          if(ret.getDetailedStatus() == aslam::ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX)\n  ///            std::cout << \"Point behind camera! Lets do something...\\n\";\n  /// @endcode\n  Status getDetailedStatus() const { return status_; }\n\n private:\n  /// Stores the projection state.\n  Status status_;\n};\n\nclass CameraGeometryBase\n{\npublic:\n  ASLAM_POINTER_TYPEDEFS(CameraGeometryBase);\n\n  enum class Type {\n    kPinhole = 0,\n    kUnifiedProjection = 1,\n    kOmni = 2,\n    kEqFisheye = 3\n  };\n\n  /// Default constructor\n  CameraGeometryBase(const int width, const int height);\n\n  virtual ~CameraGeometryBase() = default;\n\n  /// Load a camera rig form a yaml file. Returns a nullptr if the loading fails.\n  static Ptr loadFromYaml(const std::string& yaml_file);\n\n  /// Computes bearing vector from pixel coordinates. Z-component of the returned\n  /// bearing vector is 1.0. IMPORTANT: returned vector is NOT of unit length!\n  virtual bool backProject3(\n      const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n      Eigen::Vector3d* out_point_3d) const = 0;\n  /// Override taking multiple keypoints. Derived classes are free to make a\n  /// vectorized implementation for speedup.\n  virtual void backProject3(\n      const Eigen::Ref<const Eigen::Matrix2Xd>& keypoints,\n      Eigen::Matrix3Xd* out_bearing_vectors, std::vector<bool>* success) const;\n\n  /// Computes pixel coordinates from bearing vector with Jacobian w.r.t. point.\n  virtual const ProjectionResult project3(\n      const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n      Eigen::Vector2d* out_keypoint,\n      Eigen::Matrix<double, 2, 3>* out_jacobian_point = nullptr) const = 0;\n\n  /// Print camera info\n  virtual void printParameters(std::ostream& out, const std::string& s = \"Camera: \") const = 0;\n\n  /// Equivalent to focal length for projective cameras and factor for\n  /// omni-directional cameras that transforms small angular error to pixel-error.\n  virtual double errorMultiplier() const = 0;\n\n  /// Get Intrinsic parameters from camera\n  virtual Eigen::VectorXd getIntrinsicParameters() const = 0;\n\n  /// Get Distortion parameters from camera\n  virtual Eigen::VectorXd getDistortionParameters() const = 0;\n\n  virtual double getAngleError(double img_err) const = 0;\n\n  /// CameraType value representing the camera model used by the derived class.\n  inline Type getType() const { return camera_type_; }\n\n  /// Name of the camera.\n  inline const std::string& getLabel() const { return label_; }\n\n  /// Set user-specific camera label.\n  inline void setLabel(const std::string& label) { label_ = label; }\n\n  /// Image width in pixels.\n  uint32_t imageWidth() const { return width_; }\n\n  /// Image height in pixels.\n  uint32_t imageHeight() const { return height_; }\n\n  /// Return if a given keypoint is inside the imaging box of the camera.\n  template<typename DerivedKeyPoint>\n  bool isKeypointVisible(const Eigen::MatrixBase<DerivedKeyPoint>& keypoint) const;\n\n  /// Return if a given keypoint is within the specified margin to the boundary\n  /// of the imaging box of the camera.\n  template<typename DerivedKeyPoint>\n  bool isKeypointVisibleWithMargin(\n      const Eigen::MatrixBase<DerivedKeyPoint>& keypoint,\n      typename DerivedKeyPoint::Scalar margin) const;\n\n  /// Set the mask. Masks must be the same size as the image and they follow the same\n  /// convention as OpenCV: 0 == masked, nonzero == valid.\n  void setMask(const cv::Mat& mask);\n\n  /// Get the mask.\n  inline const cv::Mat& getMask() const { return mask_; }\n\n  /// Clear the mask.\n  inline void clearMask() { mask_ = cv::Mat(); }\n\n  /// Does the camera have a mask?\n  inline bool hasMask() const { return !mask_.empty(); }\n\n  /// load from file\n  void loadMask(const std::string& mask_file);\n\n  /// Check if the keypoint is masked.\n  bool isMasked(const Eigen::Ref<const Eigen::Vector2d>& keypoint) const;\n\n  /// Creates a random non-masked keypoint.\n  Eigen::Vector2d createRandomKeypoint() const;\n\nprotected:\n  int width_;\n  int height_;\n  std::string label_;\n  Type camera_type_;\n  cv::Mat mask_;\n};\n\n} // namespace cameras\n} // namespace vk\n\n#include \"implementation/camera_geometry_base.hpp\"\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_distortion.h",
    "content": "#pragma once\n\n#include <cmath>\n#include <iostream>\n#include <Eigen/Core>\n#include <glog/logging.h>\n\nnamespace vk\n{\nnamespace cameras\n{\n// This class implements the distortion model described in the paper:\n// \"A Generic Camera Model and Calibration Method for Conventional, Wide-Angle,\n// and Fish-Eye Lenses\" by Juho Kannala and Sami S. Brandt, PAMI.\nclass EquidistantDistortion\n{\npublic:\n  EquidistantDistortion(const double k1, const double k2, const double k3,\n                        const double k4)\n    : k1_(k1), k2_(k2), k3_(k3), k4_(k4)\n  {\n  }\n\n  EquidistantDistortion(const Eigen::VectorXd& parameters)\n  {\n    CHECK(parameters.size() == 4);\n    k1_ = parameters(0);\n    k2_ = parameters(1);\n    k3_ = parameters(2);\n    k4_ = parameters(3);\n  }\n\n  ~EquidistantDistortion() = default;\n\n  inline void distort(double& x, double& y) const\n  {\n    const double r = std::sqrt(x * x + y * y);\n    if (r < kRThresh)\n    {\n      return;\n    }\n\n    const double theta = std::atan(r);\n    const double thetad = thetad_from_theta(theta);\n    const double scaling = thetad / r;\n    x *= scaling;\n    y *= scaling;\n  }\n\n  inline Eigen::Vector2d distort(const Eigen::Vector2d& vector) const\n  {\n    const double r = vector.norm();\n    if (r < kRThresh)\n    {\n      return vector;\n    }\n\n    const double theta = std::atan(r);\n    const double thetad = thetad_from_theta(theta);\n    const double scaling = thetad / r;\n    return vector * scaling;\n  }\n\n  inline Eigen::Matrix2d jacobian(const Eigen::Vector2d& uv) const\n  {\n    const double r = uv.norm();\n    if (r < kRThresh)\n    {\n      return Eigen::Matrix2d::Identity();\n    }\n\n    const double inv_r = 1.0 / r;\n    const double r2 = r * r;\n    const double dr_du = uv(0) * inv_r;\n    const double dr_dv = uv(1) * inv_r;\n\n    const double theta = std::atan(r);\n    const double dtheta_dr = 1.0 / (1 + r * r);\n\n    const double thetad = thetad_from_theta(theta);\n    const double dthetad_dtheta = deriv_thetad_from_theta(theta);\n    const double dthetad_dr = dthetad_dtheta * dtheta_dr;\n\n    const double scaling = thetad / r;\n    const double dscaling_du = (dthetad_dr * dr_du * r - dr_du * thetad) / r2;\n    const double dscaling_dv = (dthetad_dr * dr_dv * r - dr_dv * thetad) / r2;\n\n    const double dx_du = dscaling_du * uv(0) + scaling;\n    const double dx_dv = dscaling_dv * uv(0);\n    const double dy_du = dscaling_du * uv(1);\n    const double dy_dv = dscaling_dv * uv(1) + scaling;\n    Eigen::Matrix2d jac;\n    jac << dx_du, dx_dv, dy_du, dy_dv;\n    return jac;\n  }\n\n  inline void undistort(double& x, double& y) const\n  {\n    const double thetad = std::sqrt(x * x + y * y);\n    double theta = thetad;\n    for (int i = 0; i < 5; ++i)\n    {\n      const double theta2 = theta * theta;\n      const double theta4 = theta2 * theta2;\n      const double theta6 = theta4 * theta2;\n      const double theta8 = theta4 * theta4;\n      theta = thetad /\n              (1.0 + k1_ * theta2 + k2_ * theta4 + k3_ * theta6 + k4_ * theta8);\n    }\n    const double scaling = std::tan(theta) / thetad;\n    x *= scaling;\n    y *= scaling;\n  }\n\n  inline void print(std::ostream& out) const\n  {\n    out << \"  Distortion: Equidistant(\" << k1_ << \", \" << k2_ << \", \" << k3_\n        << \", \" << k4_ << \")\" << std::endl;\n  }\n\n  enum DistortionParameters\n  {\n    kRadialDistortionFactor1,\n    kRadialDistortionFactor2,\n    kRadialDistortionFactor3,\n    kRadialDistortionFactor4\n  };\n  // returns distortion parameters as vector\n  // [k1 k2 k3 k4]\n  inline Eigen::VectorXd getDistortionParameters() const\n  {\n    Eigen::VectorXd distortion(4);\n    distortion(0) = k1_;\n    distortion(1) = k2_;\n    distortion(2) = k3_;\n    distortion(3) = k4_;\n    return distortion;\n  }\n\n  double k1_ = 0;  // Radial distortion factor 1\n  double k2_ = 0;  // Radial distortion factor 2\n  double k3_ = 0;  // Radial distortion factor 3\n  double k4_ = 0;  // Radial distortion factor 4\n\nprivate:\n  inline double thetad_from_theta(const double theta) const\n  {\n    const double theta2 = theta * theta;\n    const double theta4 = theta2 * theta2;\n    const double theta6 = theta4 * theta2;\n    const double theta8 = theta4 * theta4;\n    const double thetad = theta * (1.0 + k1_ * theta2 + k2_ * theta4 +\n                                   k3_ * theta6 + k4_ * theta8);\n    return thetad;\n  }\n\n  inline double deriv_thetad_from_theta(const double theta) const\n  {\n    const double theta2 = theta * theta;\n    const double theta4 = theta2 * theta2;\n    const double theta6 = theta4 * theta2;\n    const double theta8 = theta4 * theta4;\n    return 1 + 3 * k1_ * theta2 + 5 * k2_ * theta4 + 7 * k3_ * theta6 +\n           9 * k4_ * theta8;\n  }\n\n  const double kRThresh = 1e-8;\n};\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_fisheye_geometry.h",
    "content": "#pragma once\n\n#include \"vikit/cameras/camera_geometry.h\"\n#include \"vikit/cameras/equidistant_fisheye_projection.h\"\n\nnamespace vk {\nnamespace cameras {\n\n// Equidistant fisheye geometry is strongly typed to enforce mask.\nclass EquidistantFisheyeGeometry :\n    public CameraGeometry<EquidistantFisheyeProjection>\n{\n public:\n  EquidistantFisheyeGeometry(\n      const int width, const int height, const double focal_length,\n      const Eigen::Vector2d& principal_point, const double radius);\n\n  EquidistantFisheyeGeometry(\n      const int width, const int height,\n      const EquidistantFisheyeProjection& projection, const double radius);\n\n  virtual ~EquidistantFisheyeGeometry() = default;\n};\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/equidistant_fisheye_projection.h",
    "content": "#pragma once\n\n#include <Eigen/Core>\n\n#include <vikit/cameras/camera_geometry_base.h>\n\nnamespace vk {\nnamespace cameras {\n\n// May later be generalized to any distortion once a use case exists.\nclass EquidistantFisheyeProjection\n{\n public:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  const CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kEqFisheye;\n  EquidistantFisheyeProjection(\n      double focal_length, Eigen::Vector2d principal_point);\n\n  bool backProject3(\n      const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n      Eigen::Vector3d* out_bearing_vector) const;\n\n  void project3(\n      const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n      Eigen::Vector2d* out_keypoint,\n      Eigen::Matrix<double, 2, 3>* out_jacobian_point) const;\n\n  double errorMultiplier() const;\n\n  double getAngleError(double img_err) const;\n\n  void print(std::ostream& out) const;\n\n  enum IntrinsicParameters\n  {\n    kFocalLength,\n    kPrincipalPointX,\n    kPrincipalPointY\n  };\n  // returns the intrinsic values as vector\n  // [focal_length, cx, cy]\n  Eigen::VectorXd getIntrinsicParameters() const;\n\n  // Returns the distortion parameters\n  Eigen::VectorXd getDistortionParameters() const;\n\n  inline const Eigen::Vector2d& principal_point() const {\n    return principal_point_;\n  }\n\n private:\n  const double focal_length_;\n  const Eigen::Vector2d principal_point_;\n};\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/implementation/camera_geometry.hpp",
    "content": "#include <iostream>\n#include <vikit/cameras/camera_geometry.h>\n\nnamespace vk {\nnamespace cameras {\n\ntemplate<typename Projection>\nCameraGeometry<Projection>::CameraGeometry(\n    const int width,\n    const int height,\n    const projection_t& projection)\n  : CameraGeometryBase(width, height)\n  , projection_(projection)\n{\n  // NOTE: declare and specify this type within projection class\n  camera_type_ = projection_.cam_type_;\n}\n\ntemplate<typename Projection>\nbool CameraGeometry<Projection>::backProject3(\n    const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n    Eigen::Vector3d* out_point_3d) const\n{\n  CHECK_NOTNULL(out_point_3d);\n  return projection_.backProject3(keypoint, out_point_3d);\n}\n\ntemplate<typename Projection>\nconst ProjectionResult CameraGeometry<Projection>::project3(\n      const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n      Eigen::Vector2d* out_keypoint,\n      Eigen::Matrix<double, 2, 3>* out_jacobian_point) const\n{\n  projection_.project3(point_3d, out_keypoint, out_jacobian_point);\n  if(!isKeypointVisible(*out_keypoint))\n    return ProjectionResult::Status::KEYPOINT_OUTSIDE_IMAGE_BOX;\n  return ProjectionResult::Status::KEYPOINT_VISIBLE;\n}\n\ntemplate<typename Projection>\nvoid CameraGeometry<Projection>::printParameters(\n    std::ostream& out, const std::string& s) const\n{\n  out << s << std::endl\n      << \"  name = \" << label_ << std::endl\n      << \"  size = [\" << width_ << \", \" << height_ << \"]\" << std::endl;\n  projection_.print(out);\n}\n\ntemplate<typename Projection>\nEigen::VectorXd CameraGeometry<Projection>::getIntrinsicParameters() const\n{\n  return projection_.getIntrinsicParameters();\n}\n\ntemplate<typename Projection>\nEigen::VectorXd CameraGeometry<Projection>::getDistortionParameters() const\n{\n  return projection_.getDistortionParameters();\n}\n\ntemplate<typename Projection>\ndouble CameraGeometry<Projection>::errorMultiplier() const\n{\n  return projection_.errorMultiplier();\n}\n\ntemplate<typename Projection>\ndouble CameraGeometry<Projection>::getAngleError(double img_err) const\n{\n  return projection_.getAngleError(img_err);\n}\n\ntemplate<typename Projection>\nstd::shared_ptr<CameraGeometry<Projection>>\nCameraGeometry<Projection>::createTestCamera()\n{\n  const size_t width = 640;\n  const size_t height = 480;\n  return std::make_shared<CameraGeometry<Projection>>(\n      width, height, Projection::createTestProjection(width, height));\n}\n\ntemplate<typename Projection>\ntemplate<typename T>\nconst T* CameraGeometry<Projection>::projection() const\n{\n  return dynamic_cast<const T*>(&projection_);\n}\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/implementation/camera_geometry_base.hpp",
    "content": "#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\ntemplate<typename DerivedKeyPoint>\nbool CameraGeometryBase::isKeypointVisible(\n    const Eigen::MatrixBase<DerivedKeyPoint>& keypoint) const {\n  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(DerivedKeyPoint, 2, 1);\n  typedef typename DerivedKeyPoint::Scalar Scalar;\n  return keypoint[0] >= static_cast<Scalar>(0.0)\n      && keypoint[1] >= static_cast<Scalar>(0.0)\n      && keypoint[0] <  static_cast<Scalar>(imageWidth())\n      && keypoint[1] <  static_cast<Scalar>(imageHeight());\n}\n\ntemplate<typename DerivedKeyPoint>\nbool CameraGeometryBase::isKeypointVisibleWithMargin(\n    const Eigen::MatrixBase<DerivedKeyPoint>& keypoint,\n    typename DerivedKeyPoint::Scalar margin) const {\n  typedef typename DerivedKeyPoint::Scalar Scalar;\n  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(DerivedKeyPoint, 2, 1);\n  CHECK_LT(2 * margin, static_cast<Scalar>(imageWidth()));\n  CHECK_LT(2 * margin, static_cast<Scalar>(imageHeight()));\n  return keypoint[0] >= margin\n      && keypoint[1] >= margin\n      && keypoint[0] < (static_cast<Scalar>(imageWidth()) - margin)\n      && keypoint[1] < (static_cast<Scalar>(imageHeight()) - margin);\n}\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/implementation/pinhole_projection.hpp",
    "content": "#include <iostream>\n#include <glog/logging.h>\n#include <vikit/cameras/pinhole_projection.h>\n\nnamespace vk {\nnamespace cameras {\n\ntemplate<typename Distortion>\nPinholeProjection<Distortion>::PinholeProjection(\n    double fx, double fy, double cx, double cy, distortion_t distortion)\n  : fx_(fx), fy_(fy), fx_inv_(1.0/fx_), fy_inv_(1.0/fy_)\n  , cx_(cx), cy_(cy), distortion_(distortion)\n{}\n\ntemplate<typename Distortion>\nPinholeProjection<Distortion>::PinholeProjection(\n    const Eigen::VectorXd& intrinsics, distortion_t distortion)\n  : distortion_(distortion)\n{\n  CHECK(intrinsics.size() == 4);\n  fx_ = intrinsics(0);\n  fy_ = intrinsics(1);\n  cx_ = intrinsics(2);\n  cy_ = intrinsics(3);\n  fx_inv_ = 1.0/fx_;\n  fy_inv_ = 1.0/fy_;\n}\n\ntemplate<typename Distortion>\nbool PinholeProjection<Distortion>::backProject3(\n    const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n    Eigen::Vector3d* out_point_3d) const\n{\n  double x = (keypoint[0]-cx_)*fx_inv_;\n  double y = (keypoint[1]-cy_)*fy_inv_;\n  distortion_.undistort(x, y);\n  (*out_point_3d)[0] = x;\n  (*out_point_3d)[1] = y;\n  (*out_point_3d)[2] = 1.0;\n  return true;\n}\n\ntemplate<typename Distortion>\nvoid PinholeProjection<Distortion>::project3(\n    const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n    Eigen::Vector2d* out_keypoint,\n    Eigen::Matrix<double, 2, 3>* out_jacobian_point) const\n{\n  const double z_inv = 1 / point_3d(2);\n  // TODO(tcies) precalced member?\n  const Eigen::DiagonalMatrix<double, 2> focal_matrix(fx_, fy_);\n  const Eigen::Vector2d uv = point_3d.head<2>() * z_inv;\n  (*out_keypoint) =\n      focal_matrix * distortion_.distort(uv) + Eigen::Vector2d(cx_, cy_);\n\n  if(out_jacobian_point)\n  {\n    Eigen::Matrix<double, 2, 3> duv_dxy;\n    duv_dxy.leftCols<2>() = Eigen::Matrix2d::Identity() * z_inv;\n    duv_dxy.rightCols<1>() = - point_3d.head<2>() * z_inv * z_inv;\n\n    (*out_jacobian_point) = focal_matrix * distortion_.jacobian(uv) * duv_dxy;\n  }\n}\n\ntemplate<typename Distortion>\ndouble PinholeProjection<Distortion>::errorMultiplier() const\n{\n  return std::abs(fx_);\n}\n\ntemplate<typename Distortion>\ndouble PinholeProjection<Distortion>::getAngleError(double img_err) const\n{\n  return std::atan(img_err/(2.0*fx_)) + std::atan(img_err/(2.0*fy_));\n}\n\ntemplate<typename Distortion>\nPinholeProjection<Distortion>\nPinholeProjection<Distortion>::createTestProjection(\n    const size_t image_width, const size_t image_height) {\n  return PinholeProjection(\n      image_width / 2, image_width / 2, image_width / 2, image_height / 2,\n      Distortion::createTestDistortion());\n}\n\ntemplate<typename Distortion>\ntemplate<typename T>\nconst T* PinholeProjection<Distortion>::distortion() const\n{\n  return dynamic_cast<const T*>(&distortion_);\n}\n\ntemplate<typename Distortion>\nvoid PinholeProjection<Distortion>::print(std::ostream& out) const\n{\n  out << \"  Projection = Pinhole\" << std::endl;\n  out << \"  Focal length = (\" << fx_ << \", \" << fy_ << \")\" << std::endl;\n  out << \"  Principal point = (\" << cx_ << \", \" << cy_ << \")\" << std::endl;\n  distortion_.print(out);\n}\n\ntemplate<typename Distortion>\nEigen::VectorXd PinholeProjection<Distortion>::getIntrinsicParameters() const\n{\n  Eigen::VectorXd intrinsics(4);\n  intrinsics(0) = fx_;\n  intrinsics(1) = fy_;\n  intrinsics(2) = cx_;\n  intrinsics(3) = cy_;\n  return intrinsics;\n}\n\ntemplate<typename Distortion>\nEigen::VectorXd PinholeProjection<Distortion>::getDistortionParameters() const\n{\n  return distortion_.getDistortionParameters();\n}\n\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/ncamera.h",
    "content": "#pragma once\n\n#include <memory>\n#include <string>\n#include <unordered_map>\n#include <vector>\n\n#include <Eigen/Core>\n#include <aslam/common/macros.h>\n#include <aslam/common/pose-types.h>\n\nnamespace vk {\nnamespace cameras {\n\nclass CameraGeometryBase;\nusing Camera = CameraGeometryBase;\nusing Transformation = aslam::Transformation;\nusing TransformationVector = aslam::TransformationVector;\nusing Quaternion = aslam::Quaternion;\n\nclass NCamera\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  ASLAM_POINTER_TYPEDEFS(NCamera);\n\nprotected:\n  NCamera() = default;\n\npublic:\n  NCamera(\n      const TransformationVector& T_C_B,\n      const std::vector<std::shared_ptr<Camera>>& cameras,\n      const std::string& label);\n\n  ~NCamera() {}\n\n  NCamera(const NCamera&) = delete;\n  void operator=(const NCamera&) = delete;\n\n  /// Load a camera rig form a yaml file. Returns a nullptr if the loading fails.\n  static std::shared_ptr<NCamera> loadFromYaml(const std::string& yaml_file);\n\n  /// Get the number of cameras.\n  inline size_t getNumCameras() const { return cameras_.size(); }\n\n  /// Get the pose of body frame with respect to the camera i.\n  const Transformation& get_T_C_B(size_t camera_index) const;\n\n  /// Get all transformations.\n  const TransformationVector& getTransformationVector() const;\n\n  /// Get the geometry object for camera i.\n  const Camera& getCamera(size_t camera_index) const;\n\n  /// Get the geometry object for camera i.\n  std::shared_ptr<Camera> getCameraShared(size_t camera_index);\n\n  /// Get the geometry object for camera i.\n  std::shared_ptr<const Camera> getCameraShared(size_t camera_index) const;\n\n  /// How many cameras does this system have?\n  inline size_t numCameras() const { return cameras_.size(); }\n\n  /// Print camera infos\n  void printParameters(std::ostream& out, const std::string& s = \"Camera: \") const;\n\n  /// Get all cameras.\n  const std::vector<std::shared_ptr<Camera>>& getCameraVector() const;\n\n  /// Get a label for the camera.\n  inline const std::string& getLabel() const {return label_;}\n\n  /// Set a label for the camera.\n  inline void setLabel(const std::string& label) {label_ = label;}\n\nprivate:\n  /// Internal consistency checks and initialization.\n  void initInternal();\n\n  /// The mounting transformations.\n  TransformationVector T_C_B_;\n\n  /// The camera geometries.\n  std::vector<std::shared_ptr<Camera>> cameras_;\n\n  /// A label for this camera rig, a name.\n  std::string label_;\n};\n\n} // namespace cameras\n} // namespace vikit\n\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/no_distortion.h",
    "content": "#pragma once\n\n#include <iostream>\n\n#include <Eigen/Dense>\n\nnamespace vk {\nnamespace cameras {\n\nclass NoDistortion \n{\npublic:\n  NoDistortion() = default;\n  ~NoDistortion() = default;\n\n  inline void distort(\n      double& /*u*/, double& /*v*/) const\n  {}\n\n  inline Eigen::Vector2d distort(const Eigen::Vector2d& vector) const {\n    return vector;\n  }\n\n  inline Eigen::Matrix2d jacobian(const Eigen::Vector2d& /*vector*/) const {\n    return Eigen::Matrix2d::Identity();\n  }\n\n  inline void undistort(\n      double& /*u*/, double& /*v*/) const\n  {}\n\n  inline void print(std::ostream& out) const\n  {\n    out << \"  Distortion: No\" << std::endl;\n  }\n\n  // returns distortion parameters as vector (here empty vector)\n  inline Eigen::VectorXd getDistortionParameters() const\n  {\n    Eigen::VectorXd distortion;\n    return distortion;\n  }\n\n  static inline NoDistortion createTestDistortion() {\n    return NoDistortion();\n  }\n\n\n};\n\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/omni_geometry.h",
    "content": "#pragma once\n\n#include \"vikit/cameras/camera_geometry.h\"\n#include \"vikit/cameras/omni_projection.h\"\n\nnamespace vk {\nnamespace cameras {\n\n// Omni geometry is strongly typed to enforce mask.\nclass OmniGeometry : public CameraGeometry<OmniProjection>\n{\n public:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  constexpr static size_t kParamNum = 24;\n  OmniGeometry(const int width, const int height,\n               const Eigen::Matrix<double, 5, 1>& polynomial,\n               const Eigen::Vector2d& principal_point,\n               const Eigen::Vector3d& distortion,\n               const Eigen::Matrix<double, 12, 1>& inverse_polynomial,\n               const Eigen::Vector2d& mask_relative_radii);\n  // Version which does not apply a mask.\n  OmniGeometry(const int width, const int height,\n               const Eigen::Matrix<double, 5, 1>& polynomial,\n               const Eigen::Vector2d& principal_point,\n               const Eigen::Vector3d& distortion,\n               const Eigen::Matrix<double, 12, 1>& inverse_polynomial);\n  OmniGeometry(const int width, const int height,\n               const Eigen::VectorXd& intrinsics);\n\n  virtual ~OmniGeometry() = default;\n\n private:\n  static const Eigen::Vector2d kDontMask;\n};\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/omni_projection.h",
    "content": "﻿#pragma once\n\n#include <Eigen/Dense>\n\n#include <vikit/cameras/camera_geometry_base.h>\n\nnamespace vk {\nnamespace cameras {\n\nclass OmniProjection\n{\n public:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  static constexpr int kInversePolynomialOrder = 12;\n  const CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kOmni;\n\n  // TODO(tcies) Outsource distortion to distortion class?\n  OmniProjection(const Eigen::Matrix<double, 5, 1>& polynomial,\n                 const Eigen::Vector2d& principal_point,\n                 const Eigen::Vector3d& distortion,\n                 const Eigen::Matrix<double, kInversePolynomialOrder, 1>&\n                 inverse_polynomial);\n\n  bool backProject3(\n      const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n      Eigen::Vector3d* out_bearing_vector) const;\n\n  void project3(\n      const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n      Eigen::Vector2d* out_keypoint,\n      Eigen::Matrix<double, 2, 3>* out_jacobian_point) const;\n\n  double errorMultiplier() const;\n\n  double getAngleError(double img_err) const;\n\n  void print(std::ostream& out) const;\n\n  enum IntrinsicParameters\n  {\n    kPolinomial0,\n    kPolinomial1,\n    kPolinomial2,\n    kPolinomial3,\n    kPolinomial4,\n    kPrincipalPointX,\n    kPrincipalPointY\n  };\n  // Returns the parameters in Vector form:\n  // [polynomial(0) ... polynomial(4), cx_, cy_]\n  Eigen::VectorXd getIntrinsicParameters() const;\n\n  // Returns the distortion parameters\n  Eigen::VectorXd getDistortionParameters() const;\n\n private:\n  const Eigen::Matrix<double, 5, 1> polynomial_;\n  const Eigen::Vector2d principal_point_;\n  const Eigen::Matrix<double, 12, 1> inverse_polynomial_;\n\n  const Eigen::Matrix2d affine_correction_;\n  const Eigen::Matrix2d affine_correction_inverse_;\n};\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/pinhole_projection.h",
    "content": "#pragma once\n\n#include <Eigen/Core>\n\n#include \"vikit/cameras/no_distortion.h\"\n#include \"vikit/cameras/camera_geometry_base.h\"\n\nnamespace vk {\nnamespace cameras {\n\ntemplate<typename Distortion>\nclass PinholeProjection\n{\npublic:\n  typedef Distortion distortion_t;\n  const CameraGeometryBase::Type cam_type_ = CameraGeometryBase::Type::kPinhole;\n\n  PinholeProjection() = default;\n\n  PinholeProjection(\n      double fx, double fy, double cx, double cy, distortion_t distortion);\n\n  // Intrinsic parameters ordering: fu, fv, cu, cv\n  PinholeProjection(const Eigen::VectorXd& intrinsics, distortion_t distortion);\n\n  ~PinholeProjection() = default;\n\n  // Computes bearing vector from pixel coordinates. Z-component of the returned\n  // bearing vector is 1. IMPORTANT: returned vector is NOT of unit length!\n  bool backProject3(\n      const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n      Eigen::Vector3d* out_point_3d) const;\n\n  // Computes pixel coordinates from bearing vector.\n  void project3(\n        const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n        Eigen::Vector2d* out_keypoint,\n        Eigen::Matrix<double, 2, 3>* out_jacobian_point) const ;\n\n  // Returns focal length (transforms unit plane error to pixel error).\n  double errorMultiplier() const;\n\n  double getAngleError(double img_err) const;\n\n  // Focal length will be width / 2, thus corresponding to a 90deg field of\n  // view.\n  static PinholeProjection<Distortion> createTestProjection(\n      const size_t image_width, const size_t image_height);\n\n  template<typename T>\n  const T* distortion() const;\n\n  void print(std::ostream& out) const;\n\n  enum IntrinsicParameters\n  {\n    kFocalLengthX,\n    kFocalLengthY,\n    kPricipalPointX,\n    kPrincipalPointY\n  };\n  // Returns the intrinsic Parameters in vectof of form\n  // [fx, fy, cx, cy]\n  Eigen::VectorXd getIntrinsicParameters() const;\n\n  // returns the distortion Parameters of the underlying distortion model\n  Eigen::VectorXd getDistortionParameters() const;\n\n  double fx_ = 1; // Focal length x.\n  double fy_ = 1; // Focal length y.\n  double fx_inv_ = 1; // Inverse focal length x\n  double fy_inv_ = 1; // Inverse focal length y\n  double cx_ = 0; // Principle point x.\n  double cy_ = 0; // Principle point y.\n  distortion_t distortion_;\n};\n\n} // namespace cameras\n} // namespace vk\n\n#include <vikit/cameras/implementation/pinhole_projection.hpp>\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/radial_tangential_distortion.h",
    "content": "#pragma once\n\n#include <iostream>\n#include <Eigen/Core>\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\n// This class implements the radial and tangential distortion model used by\n// OpenCV and ROS. Reference:\n// docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html\nclass RadialTangentialDistortion \n{\npublic:\n\n  RadialTangentialDistortion(\n      const double& k1, const double& k2, const double& p1, const double& p2)\n    : k1_(k1), k2_(k2), p1_(p1), p2_(p2)\n  {}\n\n  RadialTangentialDistortion(\n      const Eigen::VectorXd& parameters)\n  {\n    CHECK(parameters.size() == 4);\n    k1_ = parameters(0);\n    k2_ = parameters(1);\n    p1_ = parameters(2);\n    p2_ = parameters(3);\n  }\n\n  ~RadialTangentialDistortion() = default;\n\n  inline void distort(double& x, double& y) const\n  {\n    const double xx = x * x;\n    const double yy = y * y;\n    const double xy = x * y;\n    const double xy2 = 2.0*xy;\n    const double r2 = xx + yy;\n    const double cdist = (k1_ + k2_ * r2) * r2;\n    x += x * cdist + p1_ * xy2 + p2_ * (r2 + 2.0 * xx);\n    y += y * cdist + p2_ * xy2 + p1_ * (r2 + 2.0 * yy);\n  }\n\n  inline Eigen::Vector2d distort(const Eigen::Vector2d& vector) const {\n    const double xx = vector(0) * vector(0);\n    const double yy = vector(1) * vector(1);\n    const double xy = vector(0) * vector(1);\n    const double xy2 = 2.0*xy;\n    const double r2 = xx + yy;\n    const double cdist = (k1_ + k2_ * r2) * r2;\n    return Eigen::Vector2d(\n        vector(0) + vector(0) * cdist + p1_ * xy2 + p2_ * (r2 + 2.0 * xx),\n        vector(1) + vector(1) * cdist + p2_ * xy2 + p1_ * (r2 + 2.0 * yy));\n  }\n\n  //! Input must be already distorted px vector\n  inline Eigen::Matrix2d jacobian(const Eigen::Vector2d& px_distorted) const {\n    Eigen::Matrix2d J_dist;\n    const double xx = px_distorted[0] * px_distorted[0];\n    const double yy = px_distorted[1] * px_distorted[1];\n    const double xy = px_distorted[0] * px_distorted[1];\n    const double r2 = xx + yy;\n    const double cdist = (k1_ + k2_ * r2) * r2;\n\n    const double k2_r2_x4 = k2_ * r2 * 4.0;\n    const double cdist_p1 = cdist + 1.0;\n    J_dist(0,0) = cdist_p1 + k1_ * 2.0 * xx + k2_r2_x4 * xx\n        + 2.0 * p1_ * px_distorted[1]  + 6.0 * p2_ * px_distorted[0];\n    J_dist(1,1) = cdist_p1 + k1_ * 2.0 * yy + k2_r2_x4 * yy\n        + 2.0 * p2_ * px_distorted[0] + 6.0 * p1_ * px_distorted[1] ;\n    J_dist(1,0) = 2.0 * k1_ * xy + k2_r2_x4 * xy\n        + 2.0 * p1_ * px_distorted[0] + 2.0 * p2_ * px_distorted[1] ;\n    J_dist(0,1) = J_dist(1,0);\n    return J_dist;\n  }\n\n  inline void undistort(double& x, double& y) const\n  {\n    double x0=x, y0=y;\n    for(int i = 0; i < 5; ++i)\n    {\n      const double xx = x*x;\n      const double yy = y*y;\n      const double xy = x*y;\n      const double xy2 = 2*xy;\n      const double r2 = xx + yy;\n      const double icdist = 1.0/(1.0 + (k1_ + k2_ * r2) * r2);\n      const double dx = p1_ * xy2 + p2_ * (r2 + 2.0 * xx);\n      const double dy = p2_ * xy2 + p1_ * (r2 + 2.0 * yy);\n      x = (x0 - dx)*icdist;\n      y = (y0 - dy)*icdist;\n    }\n  }\n\n  inline void print(std::ostream& out) const\n  {\n    out << \"  Distortion: RadTan(\"\n        << k1_ << \", \" << k2_ << \", \" << p1_ << \", \" << p2_ << \")\"\n        << std::endl;\n  }\n\n  enum DistortionParameters\n  {\n    kRadialDistortionFactor1,\n    kRadialDistortionFactor2,\n    kTangentialDistortionFactor1,\n    kTangentialDistortionFactor2\n  };\n  // returns distortion parameters as vector\n  // [k1 k2 p1 p2]\n  inline Eigen::VectorXd getDistortionParameters() const\n  {\n    Eigen::VectorXd distortion(4);\n    distortion(0) = k1_;\n    distortion(1) = k2_;\n    distortion(2) = p1_;\n    distortion(3) = p2_;\n    return distortion;\n  }\n\n  double k1_ = 0; // Radial distortion factor 1\n  double k2_ = 0; // Radial distortion factor 2\n  double p1_ = 0; // Tangential distortion factor 1\n  double p2_ = 0; // Tangential distortion factor 2\n};\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/yaml/camera-yaml-serialization.h",
    "content": "#pragma once\n\n#include <glog/logging.h>\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\nnamespace vk {\nnamespace cameras {\nclass CameraGeometryBase;\n}  // namespace cameras\n}  // namespace vk\n\nnamespace YAML {\n\ntemplate<>\nstruct convert<std::shared_ptr<vk::cameras::CameraGeometryBase>> {\n  /// This function will attempt to parse a camera from the yaml node.\n  /// By default, yaml-cpp will throw and exception if the parsing fails.\n  /// This function was written to *not* throw exceptions. Hence, decode always\n  /// returns true, but when it fails, the shared pointer will be null.\n  static bool decode(const Node& node, std::shared_ptr<vk::cameras::CameraGeometryBase>& camera);\n  static Node encode(const std::shared_ptr<vk::cameras::CameraGeometryBase>& camera);\n};\n\ntemplate<>\nstruct convert<vk::cameras::CameraGeometryBase> {\n  static bool decode(const Node& node, vk::cameras::CameraGeometryBase& camera);\n  static Node encode(const vk::cameras::CameraGeometryBase& camera);\n};\n\n}  // namespace YAML\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras/yaml/ncamera-yaml-serialization.h",
    "content": "#pragma once\n\n#include <glog/logging.h>\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\nnamespace vk {\nnamespace cameras {\nclass NCamera;\n}  // namespace cameras\n}  // namespace vk\n\nnamespace YAML {\n\ntemplate<>\nstruct convert<std::shared_ptr<vk::cameras::NCamera>> {\n  /// This function will attempt to parse an ncamera from the yaml node.\n  /// By default, yaml-cpp will throw an exception if the parsing fails.\n  /// This function was written to *not* throw exceptions. Hence, decode always\n  /// returns true, but when it fails, the shared pointer will be null.\n  static bool decode(const Node& node, std::shared_ptr<vk::cameras::NCamera>& ncamera);\n  static Node encode(const std::shared_ptr<vk::cameras::NCamera>& ncamera);\n};\n\ntemplate<>\nstruct convert<vk::cameras::NCamera> {\n  static bool decode(const Node& node, vk::cameras::NCamera& ncamera);\n  static Node encode(const vk::cameras::NCamera& ncamera);\n};\n\n}  // namespace YAML\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/include/vikit/cameras.h",
    "content": "#pragma once\n\n// geometry\n/*\n#include <vikit/cameras/camera_geometry_base.h>\n#include <vikit/cameras/camera_geometry.h>\n*/\n\n// distortion models\n/*\n#include <vikit/cameras/no_distortion.h>\n#include <vikit/cameras/atan_distortion.h>\n#include <vikit/cameras/equidistant_distortion.h>\n#include <vikit/cameras/radial_tangential_distortion.h>\n\n// projections\n#include <vikit/cameras/pinhole_projection.h>\n*/\n\nnamespace vk {\nnamespace cameras {\n\ntemplate <typename ProjectionType>\nclass CameraGeometry;\n\ntemplate <typename DistrortionType>\nclass PinholeProjection;\n\nclass AtanDistortion;\nclass EquidistantDistortion;\nclass NoDistortion;\nclass RadialTangentialDistortion;\n\ntypedef CameraGeometry<PinholeProjection<NoDistortion>> PinholeGeometry;\ntypedef CameraGeometry<PinholeProjection<AtanDistortion>> PinholeAtanGeometry;\ntypedef CameraGeometry<PinholeProjection<EquidistantDistortion>>\n    PinholeEquidistantGeometry;\ntypedef CameraGeometry<PinholeProjection<RadialTangentialDistortion>>\n    PinholeRadTanGeometry;\nclass OmniGeometry;\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>vikit_cameras</name>\n  <version>0.0.0</version>\n  <description>The vikit_cameras package</description>\n  <maintainer email=\"forster@ifi.uzh.ch\">cforster</maintainer>\n  <license>GPLv3</license>\n  \n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>eigen_catkin</depend>\n  <depend>eigen_checks</depend>\n  <depend>cv_bridge</depend>\n  <depend>glog_catkin</depend>\n  <depend>minkindr</depend>\n  <depend>svo_cmake</depend>\n  <depend>vikit_common</depend>\n  <depend>yaml-cpp</depend>\n\n  <test_depend>gtest</test_depend>\n\n</package>\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/camera_factory.cpp",
    "content": "#include \"vikit/cameras/camera_factory.h\"\n\n#include <Eigen/Geometry>\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n#include <vikit/cameras.h>\n\n#include \"vikit/cameras/atan_distortion.h\"\n#include \"vikit/cameras/camera_geometry.h\"\n#include \"vikit/cameras/equidistant_distortion.h\"\n#include \"vikit/cameras/no_distortion.h\"\n#include \"vikit/cameras/pinhole_projection.h\"\n#include \"vikit/cameras/radial_tangential_distortion.h\"\n\nnamespace vk {\nnamespace cameras {\nnamespace factory {\n\nCameraGeometryBase::Ptr makePinholeCamera(\n    const Eigen::VectorXd& intrinsics, uint32_t width, uint32_t height)\n{\n  CameraGeometryBase::Ptr cam = std::make_shared<PinholeGeometry>(\n        width, height,\n        PinholeProjection<NoDistortion>(\n          intrinsics, NoDistortion()));\n  return cam;\n}\n\nCameraGeometryBase::Ptr loadFromYAML(\n    const std::string& filename,\n    const std::string& cam_name)\n{\n  YAML::Node data = YAML::LoadFile(filename);\n  if(!data)\n  {\n    std::cerr << \"Could not load camera from file: \" << filename << std::endl;\n    return nullptr;\n  }\n\n  // The YAML File may contain multiple cameras, specify which one to load\n  data = data[cam_name];\n  if(!data)\n  {\n    std::cerr << \"Camera with name '\"<< cam_name << \"' does not exist in \"\n              << \"file: \" << filename << std::endl;\n    return nullptr;\n  }\n\n  // load imu camera transformation\n  Transformation T_body_cam; // identity by default\n  if(data[\"T_body_cam\"].IsDefined())\n  {\n    T_body_cam = Transformation(\n        Eigen::Quaterniond(\n            data[\"T_body_cam\"][\"qw\"].as<double>(),\n            data[\"T_body_cam\"][\"qx\"].as<double>(),\n            data[\"T_body_cam\"][\"qy\"].as<double>(),\n            data[\"T_body_cam\"][\"qz\"].as<double>()),\n        Eigen::Vector3d(\n            data[\"T_body_cam\"][\"tx\"].as<double>(),\n            data[\"T_body_cam\"][\"ty\"].as<double>(),\n            data[\"T_body_cam\"][\"tz\"].as<double>()));\n  }\n  else if(data[\"T_cam_body\"].IsDefined())\n  {\n    T_body_cam = Transformation(\n        Eigen::Quaterniond(\n            data[\"T_cam_body\"][\"qw\"].as<double>(),\n            data[\"T_cam_body\"][\"qx\"].as<double>(),\n            data[\"T_cam_body\"][\"qy\"].as<double>(),\n            data[\"T_cam_body\"][\"qz\"].as<double>()),\n        Eigen::Vector3d(\n            data[\"T_cam_body\"][\"tx\"].as<double>(),\n            data[\"T_cam_body\"][\"ty\"].as<double>(),\n            data[\"T_cam_body\"][\"tz\"].as<double>())).inverse();\n  }\n\n  // load camera\n  CameraGeometryBase::Ptr cam;\n  std::string cam_model = data[\"cam_model\"].as<std::string>();\n  if(cam_model == \"PinholeRadialTangential\")\n  {\n    double d0 = data[\"cam_d0\"].IsDefined() ? data[\"cam_d0\"].as<double>() : 0.0;\n    double d1 = data[\"cam_d1\"].IsDefined() ? data[\"cam_d1\"].as<double>() : 0.0;\n    double d2 = data[\"cam_d2\"].IsDefined() ? data[\"cam_d2\"].as<double>() : 0.0;\n    double d3 = data[\"cam_d3\"].IsDefined() ? data[\"cam_d3\"].as<double>() : 0.0;\n    if(d0 == 0 && d1 == 0 && d2 == 0 && d3 == 0)\n    {\n      cam_model = \"PinholeNoDistortion\";\n    }\n    else\n    {\n      cam.reset(new PinholeRadTanGeometry(\n                  data[\"cam_width\"].as<int>(),\n                  data[\"cam_height\"].as<int>(),\n                  PinholeProjection<RadialTangentialDistortion>(\n                    data[\"cam_fx\"].as<double>(),\n                    data[\"cam_fy\"].as<double>(),\n                    data[\"cam_cx\"].as<double>(),\n                    data[\"cam_cy\"].as<double>(),\n                    RadialTangentialDistortion(d0, d1, d2, d3))));\n    }\n  }\n  if(cam_model == \"PinholeNoDistortion\")\n  {\n    cam.reset(new PinholeGeometry(\n                data[\"cam_width\"].as<int>(),\n                data[\"cam_height\"].as<int>(),\n                PinholeProjection<NoDistortion>(\n                  data[\"cam_fx\"].as<double>(),\n                  data[\"cam_fy\"].as<double>(),\n                  data[\"cam_cx\"].as<double>(),\n                  data[\"cam_cy\"].as<double>(),\n                  NoDistortion())));\n  }\n  else if(cam_model == \"PinholeEquidistant\")\n  {\n    cam.reset(new PinholeEquidistantGeometry(\n                data[\"cam_width\"].as<int>(),\n                data[\"cam_height\"].as<int>(),\n                PinholeProjection<EquidistantDistortion>(\n                  data[\"cam_fx\"].as<double>(),\n                  data[\"cam_fy\"].as<double>(),\n                  data[\"cam_cx\"].as<double>(),\n                  data[\"cam_cy\"].as<double>(),\n                  EquidistantDistortion(\n                    data[\"cam_d0\"].as<double>(),\n                    data[\"cam_d1\"].as<double>(),\n                    data[\"cam_d2\"].as<double>(),\n                    data[\"cam_d3\"].as<double>()))));\n  }\n  else if(cam_model == \"PinholeAtan\")\n  {\n    cam.reset(new PinholeAtanGeometry(\n                data[\"cam_width\"].as<int>(),\n                data[\"cam_height\"].as<int>(),\n                PinholeProjection<AtanDistortion>(\n                  data[\"cam_fx\"].as<double>(),\n                  data[\"cam_fy\"].as<double>(),\n                  data[\"cam_cx\"].as<double>(),\n                  data[\"cam_cy\"].as<double>(),\n                  AtanDistortion(\n                    data[\"cam_d0\"].as<double>()))));\n  }\n  else if(cam_model == \"Pinhole\")\n  {\n    std::cerr << \"ERROR: Camera Factory: Select between 'PinholeNoDistortion' \"\n              << \"and 'PinholeRadialTangential'.\" << std::endl;\n  }\n  else if(cam_model == \"OCam\")\n  {\n    std::cerr << \"ERROR: Camera Factory: OCam model not yet implemented.\"\n              << std::endl;\n  }\n  else if(cam_model != \"PinholeRadialTangential\")\n  {\n    std::cerr << \"ERROR: Camera Factory: Camera model '\"<< cam_model\n              << \"' doesn't exist.\" << std::endl;\n  }\n\n  cam->setLabel(cam_name);\n\n  return cam;\n}\n\n} // namespace factory\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/camera_geometry_base.cpp",
    "content": "#include \"vikit/cameras/camera_geometry_base.h\"\n\n#include <string>\n#include <utility>\n\n#include <glog/logging.h>\n#include <opencv2/highgui/highgui.hpp>\n\n#include <vikit/cameras/yaml/camera-yaml-serialization.h>\n#include <aslam/common/yaml-serialization.h>\n#include <vikit/path_utils.h>\n\nnamespace vk {\nnamespace cameras {\n\nCameraGeometryBase::CameraGeometryBase(const int width, const int height)\n  : width_(width)\n  , height_(height)\n{}\n\nCameraGeometryBase::Ptr CameraGeometryBase::loadFromYaml(\n    const std::string& yaml_file)\n{\n  try {\n    YAML::Node doc = YAML::LoadFile(yaml_file.c_str());\n    CameraGeometryBase::Ptr cam = doc.as<CameraGeometryBase::Ptr>();\n\n    std::string basename = vk::path_utils::getBaseName(yaml_file);\n    if(basename.empty())\n    {\n      return cam;\n    }\n    const YAML::Node& mask = doc[\"mask\"];\n    if(mask)\n    {\n      cam->loadMask(basename + \"/\" + mask.as<std::string>());\n    }\n    return cam;\n  } catch (const std::exception& ex) {\n    LOG(ERROR) << \"Failed to load Camera from file \" << yaml_file << \" with the error: \\n\"\n               << ex.what();\n  }\n  // Return nullptr in the failure case.\n  return CameraGeometryBase::Ptr();\n}\n\nvoid CameraGeometryBase::backProject3(\n      const Eigen::Ref<const Eigen::Matrix2Xd>& keypoints,\n      Eigen::Matrix3Xd* out_bearing_vectors, std::vector<bool>* success) const\n{\n  const int num_keypoints = keypoints.cols();\n  CHECK_NOTNULL(out_bearing_vectors)->resize(Eigen::NoChange, num_keypoints);\n  CHECK_NOTNULL(success)->resize(num_keypoints);\n\n  for (int i = 0; i < num_keypoints; ++i) {\n    Eigen::Vector3d bearing_vector;\n    (*success)[i] = backProject3(keypoints.col(i), &bearing_vector);\n    out_bearing_vectors->col(i) = bearing_vector;\n  }\n}\n\nvoid CameraGeometryBase::setMask(const cv::Mat& mask) {\n  CHECK_EQ(height_, mask.rows);\n  CHECK_EQ(width_,  mask.cols);\n  CHECK_EQ(mask.type(), CV_8UC1);\n  mask_ = mask;\n}\n\nvoid CameraGeometryBase::loadMask(const std::string& mask_file)\n{\n  cv::Mat mask(cv::imread(mask_file, 0));\n  if(mask.data)\n    setMask(mask);\n  else\n    LOG(FATAL) << \"Unable to load mask file.\";\n}\n\nbool CameraGeometryBase::isMasked(\n    const Eigen::Ref<const Eigen::Vector2d>& keypoint) const\n{\n  return keypoint[0] < 0.0 ||\n         keypoint[0] >= static_cast<double>(width_) ||\n         keypoint[1] < 0.0 ||\n         keypoint[1] >= static_cast<double>(height_) ||\n         (!mask_.empty() &&\n           mask_.at<uint8_t>(static_cast<int>(keypoint[1]),\n                             static_cast<int>(keypoint[0])) == 0);\n}\n\nEigen::Vector2d CameraGeometryBase::createRandomKeypoint() const\n{\n  Eigen::Vector2d out;\n  do\n  {\n    out.setRandom();\n    out(0) = std::abs(out(0)) * imageWidth();\n    out(1) = std::abs(out(1)) * imageHeight();\n  }\n  while (isMasked(out));\n\n  return out;\n}\n\n} // namespace cameras\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/camera_yaml_serialization.cpp",
    "content": "#include \"vikit/cameras/yaml/camera-yaml-serialization.h\"\n\n#include <aslam/common/yaml-serialization.h>\n#include <vikit/cameras.h>\n\n#include \"vikit/cameras/camera_geometry_base.h\"\n#include \"vikit/cameras/atan_distortion.h\"\n#include \"vikit/cameras/camera_geometry.h\"\n#include \"vikit/cameras/equidistant_distortion.h\"\n#include \"vikit/cameras/no_distortion.h\"\n#include \"vikit/cameras/pinhole_projection.h\"\n#include \"vikit/cameras/radial_tangential_distortion.h\"\n#include \"vikit/cameras/omni_geometry.h\"\n\nnamespace YAML {\n\nbool convert<std::shared_ptr<vk::cameras::CameraGeometryBase> >::decode(\n    const Node& node,\n    vk::cameras::CameraGeometryBase::Ptr& camera) {\n  camera.reset();\n  try {\n    if(!node.IsMap()) {\n      LOG(ERROR) << \"Unable to get parse the camera because the node is not a map.\";\n      return true;\n    }\n\n    std::string camera_type;\n    unsigned image_width;\n    unsigned image_height;\n    Eigen::VectorXd intrinsics;\n    const YAML::Node distortion_config = node[\"distortion\"];\n    std::string distortion_type;\n    Eigen::VectorXd distortion_parameters;\n\n    if(!distortion_config)\n    {\n      distortion_type = \"none\";\n    }\n\n    if(YAML::safeGet(distortion_config, \"type\", &distortion_type) &&\n       YAML::safeGet(distortion_config, \"parameters\", &distortion_parameters) &&\n       YAML::safeGet(node, \"type\", &camera_type) &&\n       YAML::safeGet(node, \"image_width\", &image_width) &&\n       YAML::safeGet(node, \"image_height\", &image_height) &&\n       YAML::safeGet(node, \"intrinsics\", &intrinsics))\n    {\n      // TODO: implement Projection::areParametersValid();\n\n      if(camera_type == \"pinhole\" && distortion_type == \"none\")\n      {\n        std::cout << \"load pinhole camera without distortion\" << std::endl;\n        camera.reset(new vk::cameras::PinholeGeometry(\n                    image_width, image_height,\n                    vk::cameras::PinholeProjection<vk::cameras::NoDistortion>(\n                      intrinsics,\n                      vk::cameras::NoDistortion())));\n      }\n      else if(camera_type == \"pinhole\" && distortion_type == \"radial-tangential\")\n      {\n        camera.reset(new vk::cameras::PinholeRadTanGeometry(\n                    image_width, image_height,\n                    vk::cameras::PinholeProjection<vk::cameras::RadialTangentialDistortion>(\n                      intrinsics,\n                      vk::cameras::RadialTangentialDistortion(distortion_parameters))));\n      }\n      else if(camera_type == \"pinhole\" && distortion_type == \"equidistant\")\n      {\n        camera.reset(new vk::cameras::PinholeEquidistantGeometry(\n                    image_width, image_height,\n                    vk::cameras::PinholeProjection<vk::cameras::EquidistantDistortion>(\n                      intrinsics,\n                      vk::cameras::EquidistantDistortion(distortion_parameters))));\n      }\n      else if(camera_type == \"pinhole\" && distortion_type == \"fisheye\")\n      {\n        camera.reset(new vk::cameras::PinholeAtanGeometry(\n                    image_width, image_height,\n                    vk::cameras::PinholeProjection<vk::cameras::AtanDistortion>(\n                      intrinsics,\n                      vk::cameras::AtanDistortion(distortion_parameters))));\n      }\n      else if(camera_type == \"omni\")\n      {\n        camera.reset(new vk::cameras::OmniGeometry(\n                    image_width, image_height, intrinsics));\n      }\n      else\n      {\n        LOG(ERROR) << \"Unknown camera and distortion combination!\";\n      }\n    }\n\n    if(node[\"label\"]) {\n      camera->setLabel(node[\"label\"].as<std::string>());\n    }\n  } catch(const std::exception& e) {\n    LOG(ERROR) << \"Yaml exception during parsing: \" << e.what();\n    camera.reset();\n    return true;\n  }\n  return true;\n}\n\nNode convert<vk::cameras::CameraGeometryBase::Ptr>::encode(\n    const vk::cameras::CameraGeometryBase::Ptr& camera) {\n  return convert<vk::cameras::CameraGeometryBase>::encode(*CHECK_NOTNULL(camera.get()));\n}\n\nbool convert<vk::cameras::CameraGeometryBase>::decode(\n    const Node& /*node*/, vk::cameras::CameraGeometryBase& /*camera*/) {\n  LOG(FATAL) << \"Not implemented!\";\n  return false;\n}\n\nnamespace internal {\n\ntemplate <typename DistortionType>\nvoid encodeDistortion(const DistortionType& distortion, Node* distortion_node);\n\ntemplate <>\nvoid encodeDistortion(\n    const vk::cameras::NoDistortion& distortion, Node* distortion_node)\n{\n  CHECK_NOTNULL(distortion_node);\n  (*distortion_node)[\"type\"] = \"none\";\n  (*distortion_node)[\"parameters\"] = Eigen::VectorXd(0, 1);\n}\n\ntemplate <>\nvoid encodeDistortion(\n    const vk::cameras::RadialTangentialDistortion& distortion,\n    Node* distortion_node)\n{\n  CHECK_NOTNULL(distortion_node);\n  (*distortion_node)[\"type\"] = \"radial-tangential\";\n  Eigen::VectorXd parameters(4, 1);\n  parameters << distortion.k1_, distortion.k2_, distortion.p1_, distortion.p2_;\n  (*distortion_node)[\"parameters\"] = parameters;\n}\n\ntemplate <>\nvoid encodeDistortion(\n    const vk::cameras::EquidistantDistortion& distortion,\n    Node* distortion_node)\n{\n  CHECK_NOTNULL(distortion_node);\n  (*distortion_node)[\"type\"] = \"equidistant\";\n  Eigen::VectorXd parameters(4, 1);\n  parameters << distortion.k1_, distortion.k2_, distortion.k3_, distortion.k4_;\n  (*distortion_node)[\"parameters\"] = parameters;\n}\n\ntemplate <>\nvoid encodeDistortion(\n    const vk::cameras::AtanDistortion& distortion,\n    Node* distortion_node)\n{\n  CHECK_NOTNULL(distortion_node);\n  (*distortion_node)[\"type\"] = \"fisheye\";\n  Eigen::VectorXd parameters(1, 1);\n  parameters << distortion.s_;\n  (*distortion_node)[\"parameters\"] = parameters;\n}\n\ntemplate <typename DistortionType>\nbool encodePinhole(const vk::cameras::CameraGeometryBase& camera,\n                             Node* camera_node)\n{\n  typedef vk::cameras::PinholeProjection<DistortionType> Projection;\n  typedef const vk::cameras::CameraGeometry<Projection>* ConstGeometryPtr;\n\n  CHECK_NOTNULL(camera_node);\n  if (ConstGeometryPtr pinhole_camera = dynamic_cast<ConstGeometryPtr>(&camera))\n  {\n    (*camera_node)[\"type\"] = \"pinhole\";\n    Eigen::VectorXd intrinsics(4, 1);\n    const Projection* projection =\n        pinhole_camera->template projection<Projection>();\n    intrinsics << projection->fx_, projection->fy_, projection->cx_,\n        projection->cy_;\n    (*camera_node)[\"intrinsics\"] = intrinsics;\n\n    Node distortion_node;\n    encodeDistortion(projection->distortion_, &distortion_node);\n    (*camera_node)[\"distortion\"] = distortion_node;\n\n    return true;\n  }\n\n  return false;\n}\n\n}  // namespace internal\n\nNode convert<vk::cameras::CameraGeometryBase>::encode(\n    const vk::cameras::CameraGeometryBase& camera)\n{\n  Node camera_node;\n\n  camera_node[\"label\"] = camera.getLabel();\n  camera_node[\"image_height\"] = camera.imageHeight();\n  camera_node[\"image_width\"] = camera.imageWidth();\n\n  if (!internal::encodePinhole<vk::cameras::NoDistortion>(\n      camera, &camera_node) &&\n      !internal::encodePinhole<vk::cameras::RadialTangentialDistortion>(\n          camera, &camera_node) &&\n          !internal::encodePinhole<vk::cameras::EquidistantDistortion>(\n              camera, &camera_node) &&\n              !internal::encodePinhole<vk::cameras::AtanDistortion>(\n                  camera, &camera_node))\n  {\n    std::ostringstream oss;\n    camera.printParameters(oss);\n    LOG(FATAL) << \"Camera encoding currently not supported, camera is \"\n        << std::endl << oss.str();\n  }\n\n  return camera_node;\n}\n\n}  // namespace YAML\n\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/equidistant_fisheye_geometry.cpp",
    "content": "#include \"vikit/cameras/equidistant_fisheye_geometry.h\"\n\nnamespace vk {\nnamespace cameras {\n\nEquidistantFisheyeGeometry::EquidistantFisheyeGeometry(\n      const int width, const int height, const double focal_length,\n      const Eigen::Vector2d& principal_point, const double radius)\n: EquidistantFisheyeGeometry(width, height, EquidistantFisheyeProjection(\n    focal_length, principal_point), radius)\n{}\n\nEquidistantFisheyeGeometry::EquidistantFisheyeGeometry(\n    const int width, const int height,\n    const EquidistantFisheyeProjection& projection, const double radius)\n: CameraGeometry<EquidistantFisheyeProjection>(width, height, projection)\n{\n  cv::Mat mask = cv::Mat(imageHeight(), imageWidth(), CV_8UC1);\n  for(uint32_t i=0; i<imageHeight(); i++) {\n    for(uint32_t j=0; j<imageWidth(); j++) {\n      int64_t h_dist = static_cast<int64_t>(i) -\n          static_cast<int64_t>(projection.principal_point()[1]);\n      int64_t w_dist = static_cast<int64_t>(j) -\n          static_cast<int64_t>(projection.principal_point()[0]);\n      double dist_squared = std::pow(h_dist, 2) + std::pow(w_dist, 2);\n      if (dist_squared > radius * radius)\n        mask.at<uint8_t>(i, j) = 0;\n      else\n        mask.at<uint8_t>(i, j) = 1;\n    }\n  }\n  setMask(mask);\n}\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/equidistant_fisheye_projection.cpp",
    "content": "#include \"vikit/cameras/equidistant_fisheye_projection.h\"\n\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\n// May later be generalized to any distortion once a use case exists.\nEquidistantFisheyeProjection::EquidistantFisheyeProjection(\n    double focal_length, Eigen::Vector2d principal_point)\n: focal_length_(focal_length), principal_point_(principal_point)\n{\n  CHECK_NE(focal_length_, 0.);\n}\n\nbool EquidistantFisheyeProjection::backProject3(\n    const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n    Eigen::Vector3d* out_bearing_vector) const\n{\n  CHECK_NOTNULL(out_bearing_vector);\n\n  constexpr double kEpsilon = 1e-10;\n  Eigen::Vector2d p_c = keypoint - principal_point_;\n  const double r = p_c.norm();\n  if(fabs(r) < kEpsilon)\n  {\n    *out_bearing_vector << 0.0, 0.0, 1.0;\n    return true;\n  }\n\n  const double theta = r / focal_length_;\n  const double x = p_c[0];\n  const double y = p_c[1];\n  const double sin_theta_by_r = sin(theta) / r;\n  *out_bearing_vector << x * sin_theta_by_r, y * sin_theta_by_r, cos(theta);\n  return true;\n}\n\nvoid EquidistantFisheyeProjection::project3(\n    const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n    Eigen::Vector2d* out_keypoint,\n    Eigen::Matrix<double, 2, 3>* out_jacobian_point) const\n{\n  CHECK_NOTNULL(out_keypoint);\n\n  const double kEpsilon = 1e-10;\n\n  const double x = point_3d[0];\n  const double y = point_3d[1];\n  const double z = point_3d[2];\n\n  const double x2 = x * x;\n  const double y2 = y * y;\n  const double xy_norm2 = x2 + y2;\n  const double xy_norm = std::sqrt(xy_norm2);\n  const double xyz_norm2 = xy_norm2 + std::pow(z,2);\n  const double xyz_norm = std::sqrt(xyz_norm2);\n\n  CHECK_GE(xyz_norm, kEpsilon);\n\n  double theta;\n  if(fabs(xy_norm) < kEpsilon)\n  {\n    theta = 0.;\n    (*out_keypoint) = principal_point_;\n  }\n  else\n  {\n    theta = std::acos(z / xyz_norm);\n    const double r = focal_length_ * theta;\n\n    (*out_keypoint) = principal_point_ + r / xy_norm * point_3d.head<2>();\n  }\n\n  if(out_jacobian_point)\n  {\n    const double R = xyz_norm;\n    const double rho = xy_norm;\n    const double f = focal_length_;\n    const double rho2 = xy_norm2;\n    const double R2 = xyz_norm2;\n\n    const double duf_dx = f / rho * (theta - x2*theta/rho2 + z*x2/(rho*R2));\n    const double duf_dy = f*x*y/rho2 * (z/R2 - theta/rho);\n    const double duf_dz = -x*f/rho2 * (1-z*z/R2);\n\n    const double dvf_dx = duf_dy;\n    const double dvf_dy = f / rho * (theta - y2*theta/rho2 + z*y2/(rho*R2));\n    const double dvf_dz = -y*f/rho2 * (1-z*z/R2);\n\n    (*out_jacobian_point) << duf_dx, duf_dy, duf_dz,\n                             dvf_dx, dvf_dy, dvf_dz;\n  }\n}\n\ndouble EquidistantFisheyeProjection::errorMultiplier() const\n{\n  // TODO(tcies) What is this?\n  return 1.;\n}\n\ndouble EquidistantFisheyeProjection::getAngleError(double img_err) const\n{\n  return img_err / focal_length_;\n}\n\nvoid EquidistantFisheyeProjection::print(std::ostream& out) const\n{\n  out << \"  Projection = Equidistant Fisheye\" << std::endl;\n  out << \"  Focal length = (\" << focal_length_ << std::endl;\n  out << \"  Principal point = \" << principal_point_.transpose() << std::endl;\n}\n\nEigen::VectorXd EquidistantFisheyeProjection::getIntrinsicParameters() const\n{\n  Eigen::VectorXd intrinsics(3);\n  intrinsics(0) = focal_length_;\n  intrinsics(1) = principal_point_(0);\n  intrinsics(2) = principal_point_(1);\n  return intrinsics;\n}\n\nEigen::VectorXd EquidistantFisheyeProjection::getDistortionParameters() const\n{\n  Eigen::VectorXd distortion;\n  return distortion;\n}\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/ncamera.cpp",
    "content": "#include <vikit/cameras/ncamera.h>\n\n#include <string>\n#include <utility>\n#include <glog/logging.h>\n\n#include <vikit/cameras/camera_geometry_base.h>\n#include <vikit/cameras/yaml/ncamera-yaml-serialization.h>\n#include <aslam/common/yaml-serialization.h>\n#include <vikit/path_utils.h>\n\nnamespace vk {\nnamespace cameras {\n\nNCamera::NCamera(\n    const TransformationVector& T_C_B,\n    const std::vector<Camera::Ptr>& cameras,\n    const std::string& label)\n    : T_C_B_(T_C_B)\n    , cameras_(cameras)\n    , label_(label)\n{\n  initInternal();\n}\n\nNCamera::Ptr NCamera::loadFromYaml(const std::string& yaml_file)\n{\n  try {\n    YAML::Node doc = YAML::LoadFile(yaml_file.c_str());\n    NCamera::Ptr ncam = doc.as<NCamera::Ptr>();\n\n    std::string basename = vk::path_utils::getBaseName(yaml_file);\n    if(basename.empty())\n    {\n      return ncam;\n    }\n\n    const YAML::Node& cameras_node = doc[\"cameras\"];\n    CHECK_EQ(cameras_node.size(), ncam->numCameras())\n        << \"YAML file and NCamera are not consistent.\";\n    for(size_t i=0; i<cameras_node.size(); i++)\n    {\n      const YAML::Node& cam_node = (cameras_node[i])[\"camera\"];\n      const YAML::Node& mask = cam_node[\"mask\"];\n      Camera::Ptr cam = ncam->getCameraShared(i);\n      if(mask)\n      {\n        cam->loadMask(basename + \"/\" + mask.as<std::string>());\n      }\n    }\n\n    return ncam;\n  } catch (const std::exception& ex) {\n    LOG(ERROR) << \"Failed to load NCamera from file \" << yaml_file << \" with the error: \\n\"\n               << ex.what();\n  }\n  // Return nullptr in the failure case.\n  return NCamera::Ptr();\n}\n\nvoid NCamera::initInternal()\n{\n  CHECK_EQ(cameras_.size(), T_C_B_.size());\n  for (size_t i = 0; i < cameras_.size(); ++i)\n  {\n    CHECK_NOTNULL(cameras_[i].get());\n  }\n}\n\nconst Transformation& NCamera::get_T_C_B(size_t camera_index) const\n{\n  CHECK_LT(camera_index, cameras_.size());\n  return T_C_B_[camera_index];\n}\n\nconst TransformationVector& NCamera::getTransformationVector() const\n{\n  return T_C_B_;\n}\n\nconst Camera& NCamera::getCamera(size_t camera_index) const\n{\n  CHECK_LT(camera_index, cameras_.size());\n  CHECK_NOTNULL(cameras_[camera_index].get());\n  return *cameras_[camera_index];\n}\n\nCamera::Ptr NCamera::getCameraShared(size_t camera_index)\n{\n  CHECK_LT(camera_index, cameras_.size());\n  return cameras_[camera_index];\n}\n\nCamera::ConstPtr NCamera::getCameraShared(size_t camera_index) const\n{\n  CHECK_LT(camera_index, cameras_.size());\n  return cameras_[camera_index];\n}\n\nvoid NCamera::printParameters(std::ostream& out, const std::string& s) const\n{\n  out << s << std::endl;\n  for(size_t i=0; i<cameras_.size(); ++i)\n  {\n    out << \"Camera #\" << i << std::endl;\n    cameras_[i]->printParameters(out, \"\");\n    out << \"  T_C_B = \" << T_C_B_.at(i) << std::endl;\n  }\n}\n\nconst std::vector<Camera::Ptr>& NCamera::getCameraVector() const\n{\n  return cameras_;\n}\n\n} // namespace cameras\n} // namespace vikit\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/ncamera_yaml_serialization.cpp",
    "content": "#include <vikit/cameras.h>\n#include <vikit/cameras/ncamera.h>\n#include <vikit/cameras/yaml/camera-yaml-serialization.h>\n#include <vikit/cameras/yaml/ncamera-yaml-serialization.h>\n#include <aslam/common/memory.h>\n#include <aslam/common/yaml-serialization.h>\n\nnamespace YAML {\n\nbool convert<std::shared_ptr<vk::cameras::NCamera> >::decode(\n    const Node& node,\n    vk::cameras::NCamera::Ptr& ncamera) {\n  ncamera.reset();\n  try {\n    if (!node.IsMap()) {\n      LOG(ERROR) << \"Unable to parse the ncamera because the node is not a map.\";\n      return true;\n    }\n\n    // Parse the label.\n    std::string label = \"\";\n    if (!YAML::safeGet<std::string>(node, \"label\", &label)) {\n      LOG(ERROR) << \"Unable to get the label for the ncamera.\";\n      return true;\n    }\n\n    /*\n    // Parse the id.\n    vk::cameras::NCameraId ncam_id;\n    std::string id_string;\n    if (!node[\"id\"] || !YAML::safeGet<std::string>(node, \"id\", &id_string)) {\n      LOG(WARNING) << \"Unable to get the id for the ncamera. Generating new random id.\";\n      ncam_id.randomize();\n    } else {\n      ncam_id.fromHexString(id_string);\n    }\n    */\n\n    // Parse the cameras.\n    const Node& cameras_node = node[\"cameras\"];\n    if (!cameras_node.IsSequence()) {\n      LOG(ERROR) << \"Unable to parse the cameras because the camera node is not a sequence.\";\n      return true;\n    }\n\n    size_t num_cameras = cameras_node.size();\n    if (num_cameras == 0) {\n      LOG(ERROR) << \"Number of cameras is 0.\";\n      return true;\n    }\n\n    vk::cameras::TransformationVector T_Ci_B;\n    typedef std::shared_ptr<vk::cameras::Camera> CameraPtr;\n    std::vector<CameraPtr> cameras;\n    for (size_t camera_index = 0; camera_index < num_cameras; ++camera_index) {\n      // Decode the camera\n      const Node& camera_node = cameras_node[camera_index];\n      if (!camera_node) {\n        LOG(ERROR) << \"Unable to get camera node for camera \" << camera_index;\n        return true;\n      }\n      if (!camera_node.IsMap()) {\n        LOG(ERROR) << \"Camera node for camera \" << camera_index << \" is not a map.\";\n        return true;\n      }\n\n      CameraPtr camera;\n      if (!YAML::safeGet(camera_node, \"camera\", &camera)) {\n        LOG(ERROR) << \"Unable to retrieve camera \" << camera_index;\n        return true;\n      }\n\n      // Get the transformation matrix T_B_C (takes points from the frame C to frame B).\n      Eigen::Matrix4d T_B_C_raw;\n      if (!YAML::safeGet(camera_node, \"T_B_C\", &T_B_C_raw)) {\n        LOG(ERROR) << \"Unable to get extrinsic transformation T_B_C for camera \" << camera_index;\n        return true;\n      }\n      // This call will fail hard if the matrix is not a rotation matrix.\n      vk::cameras::Quaternion q_B_C = vk::cameras::Quaternion(\n          static_cast<Eigen::Matrix3d>(T_B_C_raw.block<3,3>(0,0)));\n      vk::cameras::Transformation T_B_C(q_B_C, T_B_C_raw.block<3,1>(0,3));\n\n      // Fill in the data in the ncamera.\n      cameras.push_back(camera);\n      T_Ci_B.push_back(T_B_C.inverse());\n    }\n\n    // Create the ncamera and fill in all the data.\n    ncamera.reset(new vk::cameras::NCamera(T_Ci_B, cameras, label));\n  } catch (const std::exception& ex) {\n    LOG(ERROR) << \"Yaml exception during parsing: \" << ex.what();\n    ncamera.reset();\n    return true;\n  }\n  return true;\n}\n\nNode convert<std::shared_ptr<vk::cameras::NCamera> >::encode(\n    const std::shared_ptr<vk::cameras::NCamera>& ncamera) {\n  return convert<vk::cameras::NCamera>::encode(*CHECK_NOTNULL(ncamera.get()));\n}\n\nbool convert<vk::cameras::NCamera>::decode(const Node& /*node*/, vk::cameras::NCamera& /*ncamera*/) {\n  LOG(FATAL) << \"Not implemented!\";\n  return false;\n}\n\nNode convert<vk::cameras::NCamera>::encode(const vk::cameras::NCamera& ncamera) {\n  Node ncamera_node;\n\n  ncamera_node[\"label\"] = ncamera.getLabel();\n  /*\n  if(ncamera.getId().isValid()) {\n    ncamera_node[\"id\"] = ncamera.getId().hexString();\n  }\n  */\n\n  Node cameras_node;\n  size_t num_cameras = ncamera.numCameras();\n  for (size_t camera_index = 0; camera_index < num_cameras; ++camera_index) {\n    Node camera_node;\n    camera_node[\"camera\"] = ncamera.getCamera(camera_index);\n    camera_node[\"T_B_C\"] = ncamera.get_T_C_B(camera_index).inverse().getTransformationMatrix();\n    cameras_node.push_back(camera_node);\n  }\n\n  ncamera_node[\"cameras\"] = cameras_node;\n\n  return ncamera_node;\n}\n\n}  // namespace YAML\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/omni_geometry.cpp",
    "content": "#include \"vikit/cameras/omni_geometry.h\"\n\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\nOmniGeometry::OmniGeometry(\n    const int width, const int height,\n    const Eigen::Matrix<double, 5, 1>& polynomial,\n    const Eigen::Vector2d& principal_point, const Eigen::Vector3d& distortion,\n    const Eigen::Matrix<double, 12, 1>& inverse_polynomial,\n    const Eigen::Vector2d& mask_relative_radii)\n: CameraGeometry(width, height, OmniProjection(\n    polynomial, principal_point, distortion, inverse_polynomial))\n{\n  if (mask_relative_radii != kDontMask)\n  {\n    CHECK_GE(mask_relative_radii(0), 0.0);\n    CHECK_LE(mask_relative_radii(1), 1.0);\n    CHECK_LT(mask_relative_radii(0), mask_relative_radii(1));\n    CHECK_GE(width, height) << \"Only cameras whose width is larger than its \"\n        << \"height are supported\";\n\n    const int radius = height/2;\n    const double low_radius_sqaured =\n        std::pow(radius * mask_relative_radii(0), 2);\n    const double high_radius_squared =\n        std::pow(radius * mask_relative_radii(1), 2);\n\n    // NOTE: opencv accept rows and column\n    cv::Mat mask(height, width, CV_8UC1, cv::Scalar(0));\n\n    // Loop and set mask: 0 masked / 1 valid.\n    Eigen::Vector2i i;\n    for(i(0) = 0; i(0) < width; ++i(0))\n      for(i(1) = 0; i(1) < height; ++i(1)) {\n        Eigen::Vector2i p_c = i - principal_point.cast<int>();\n        const double dist_squared = p_c.squaredNorm();\n        if (dist_squared > high_radius_squared ||\n            dist_squared < low_radius_sqaured)\n        {\n          mask.at<uint8_t>(i(1), i(0)) = 0;\n        }\n        else\n        {\n          mask.at<uint8_t>(i(1), i(0)) = 1;\n        }\n      }\n\n    setMask(mask);\n  }\n}\n\n// Version which does not apply a mask.\nOmniGeometry::OmniGeometry(\n    const int width, const int height,\n    const Eigen::Matrix<double, 5, 1>& polynomial,\n    const Eigen::Vector2d& principal_point, const Eigen::Vector3d& distortion,\n    const Eigen::Matrix<double, 12, 1>& inverse_polynomial)\n: OmniGeometry(width, height, polynomial, principal_point, distortion,\n               inverse_polynomial, kDontMask)\n{}\n\n// directly from intrinsics\nOmniGeometry::OmniGeometry(\n    const int width, const int height,\n    const Eigen::VectorXd &intrinsics)\n: OmniGeometry(width, height,\n               intrinsics.block<5, 1>(0, 0),\n               intrinsics.block<2, 1>(5, 0),\n               intrinsics.block<3, 1>(7, 0),\n               intrinsics.block<12, 1>(10, 0),\n               intrinsics.block<2, 1>(22,0))\n{}\n\nconst Eigen::Vector2d OmniGeometry::kDontMask = Eigen::Vector2d::Zero();\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/src/omni_projection.cpp",
    "content": "#include \"vikit/cameras/omni_projection.h\"\n\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace cameras {\n\nnamespace omni_projection {\nEigen::Matrix2d distortionToAffineCorrection(const Eigen::Vector3d& distortion)\n{\n  Eigen::Matrix2d result;\n  // The output of the calibration toolbox is row-major (Matlab), therefore we\n  // need to transpose here to get col-major.\n  result << 1.0, distortion(2), distortion(1), distortion(0);\n  return result;\n}\n}  // namespace omni_projection\n\nOmniProjection::OmniProjection(\n    const Eigen::Matrix<double, 5, 1>& polynomial,\n    const Eigen::Vector2d& principal_point, const Eigen::Vector3d& distortion,\n    const Eigen::Matrix<double, 12, 1>& inverse_polynomial)\n: polynomial_(polynomial), principal_point_(principal_point),\n  inverse_polynomial_(inverse_polynomial),\n  affine_correction_(omni_projection::distortionToAffineCorrection(distortion)),\n  affine_correction_inverse_(affine_correction_.inverse())\n{}\n\nbool OmniProjection::backProject3(\n    const Eigen::Ref<const Eigen::Vector2d>& keypoint,\n    Eigen::Vector3d* out_bearing_vector) const\n{\n  CHECK_NOTNULL(out_bearing_vector);\n  const Eigen::Vector2d rectified =\n      affine_correction_inverse_ * (keypoint - principal_point_);\n  const double rho = rectified.norm();\n\n  out_bearing_vector->head<2>() = rectified;\n\n  (*out_bearing_vector)(2) = polynomial_(4);\n  (*out_bearing_vector)(2) = polynomial_(3) + (*out_bearing_vector)(2) * rho;\n  (*out_bearing_vector)(2) = polynomial_(2) + (*out_bearing_vector)(2) * rho;\n  (*out_bearing_vector)(2) = polynomial_(1) + (*out_bearing_vector)(2) * rho;\n  (*out_bearing_vector)(2) = polynomial_(0) + (*out_bearing_vector)(2) * rho;\n  (*out_bearing_vector)(2) = (-1.0) * (*out_bearing_vector)(2);\n\n  out_bearing_vector->normalize();\n  return true;\n}\n\nvoid OmniProjection::project3(\n    const Eigen::Ref<const Eigen::Vector3d>& point_3d,\n    Eigen::Vector2d* out_keypoint,\n    Eigen::Matrix<double, 2, 3>* out_jacobian_point) const\n{\n  CHECK_NOTNULL(out_keypoint);\n\n  const double x = point_3d[0];\n  const double y = point_3d[1];\n  const double z = -point_3d[2];\n  const double xy_norm2 = std::pow(x, 2) + std::pow(y, 2);\n  const double xy_norm = std::sqrt(xy_norm2);\n  const double z_by_xy_norm = z / xy_norm;\n  const double theta = std::atan(z_by_xy_norm);\n\n  Eigen::Matrix<double, kInversePolynomialOrder, 1> theta_powers;\n  theta_powers[0] = 1.0;\n  for(int i=1; i<theta_powers.size(); ++i)\n  {\n    theta_powers[i] = theta_powers[i-1]*theta;\n  }\n\n  const double rho = inverse_polynomial_.dot(theta_powers);\n\n  Eigen::Vector2d raw_uv;\n  raw_uv(0) = x / xy_norm * rho;\n  raw_uv(1) = y / xy_norm * rho;\n\n  (*out_keypoint) = affine_correction_ * raw_uv + principal_point_;\n\n  if(out_jacobian_point) {\n    // rho w.r.t theta\n    double drho_dtheta = 0;\n    for(int i=1; i < kInversePolynomialOrder; i++)\n    {\n      drho_dtheta += i * inverse_polynomial_[i] * theta_powers[i-1];\n    }\n    // theta w.r.t x y z\n    const double xyz_norm_sqr = xy_norm2 + std::pow(z,2);\n    const double dtheta_dx = (-1.0*x*z_by_xy_norm) / (xyz_norm_sqr);\n    const double dtheta_dy = (-1.0*y*z_by_xy_norm) / (xyz_norm_sqr);\n    const double dtheta_dz = xy_norm / (xyz_norm_sqr);\n    // rho w.r.t x y z\n    const double drho_dx = drho_dtheta * dtheta_dx;\n    const double drho_dy = drho_dtheta * dtheta_dy;\n    const double drho_dz = drho_dtheta * dtheta_dz;\n    // uv_raw w.r.t x y z\n    const double xy_sqr = xy_norm2;\n    double duraw_dx = (xy_norm-x*x/xy_norm)/xy_sqr*rho + drho_dx*x/xy_norm;\n    double duraw_dy = (-1.0*x*y/xy_norm)/xy_sqr*rho + drho_dy*x/xy_norm;\n    double duraw_dz = drho_dz*x/xy_norm;\n    double dvraw_dx = (-1.0*x*y/xy_norm)/xy_sqr*rho + drho_dx*y/xy_norm;\n    double dvraw_dy = (xy_norm-y*y/xy_norm)/xy_sqr*rho + drho_dy*y/xy_norm;\n    double dvraw_dz = drho_dz*y/xy_norm;\n    (*out_jacobian_point) << duraw_dx, duraw_dy, -duraw_dz,\n        dvraw_dx, dvraw_dy, -dvraw_dz;\n\n    // uv w.r.t x y z\n    (*out_jacobian_point) = affine_correction_ * (*out_jacobian_point);\n  }\n}\n\ndouble OmniProjection::errorMultiplier() const\n{\n  return 1.0;\n}\n\ndouble OmniProjection::getAngleError(double img_err) const\n{\n  Eigen::Vector3d center_f;\n  backProject3(principal_point_, &center_f);\n  const Eigen::Vector2d offset_x(\n      principal_point_(0) + img_err, principal_point_(1));\n  Eigen::Vector3d offset_x_f;\n  backProject3(offset_x, &offset_x_f);\n  const Eigen::Vector2d offset_y(\n      principal_point_(0), principal_point_(1) + img_err);\n  Eigen::Vector3d offset_y_f;\n  backProject3(offset_y, &offset_y_f);\n\n  const double theta_x = std::acos(center_f.dot(offset_x_f));\n  const double theta_y = std::acos(center_f.dot(offset_y_f));\n\n  return (theta_x+theta_y) / 2.0;\n}\n\nvoid OmniProjection::print(std::ostream& out) const\n{\n  out << \"  Projection = Omni\" << std::endl;\n  out << \"  Polynomial = \" << polynomial_.transpose() << std::endl;\n  out << \"  Principal point = \" << principal_point_.transpose() << std::endl;\n  out << \"  Inverse polynomial = \" << inverse_polynomial_.transpose()\n      << std::endl;\n  out << \"  Affine correction = \" << std::endl << affine_correction_\n      << std::endl;\n  out << \"  Affine correction inverse = \" << std::endl\n      << affine_correction_inverse_ << std::endl;\n}\n\nEigen::VectorXd OmniProjection::getIntrinsicParameters() const\n{\n  Eigen::VectorXd intrinsics(7);\n  for(int idx = 0; idx < 5; idx++)\n  {\n    intrinsics(idx) = polynomial_(idx);\n  }\n\n  intrinsics(5) = principal_point_(0);\n  intrinsics(6) = principal_point_(1);\n\n  return intrinsics;\n}\n\nEigen::VectorXd OmniProjection::getDistortionParameters() const\n{\n  Eigen::VectorXd distortion(4);\n  distortion(0) = affine_correction_(0,0);\n  distortion(1) = affine_correction_(0,1);\n  distortion(2) = affine_correction_(1,0);\n  distortion(3) = affine_correction_(1,1);\n  return distortion;\n}\n\n}  // namespace cameras\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_cam.yaml",
    "content": "distortion:\n  parameters:\n    cols: 1\n    rows: 0\n    data: []\n  type: none\nimage_height: 376\nimage_width: 1241\nintrinsics:\n  cols: 1\n  data: [7.188560000000e+02, 7.188560000000e+02, 6.071928000000e+02, 1.852157000000e+02]\n  rows: 4\nlabel: cam0\nline-delay-nanoseconds: 0\ntype: pinhole"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_kitti.yaml",
    "content": "cameras:\n- camera:\n    distortion:\n      parameters:\n        cols: 1\n        rows: 0\n        data: []\n      type: none\n    image_height: 376\n    image_width: 1241\n    intrinsics:\n      cols: 1\n      data: [7.188560000000e+02, 7.188560000000e+02, 6.071928000000e+02, 1.852157000000e+02]\n      rows: 4\n    label: cam0\n    line-delay-nanoseconds: 0\n    type: pinhole\n  T_B_C:\n    cols: 4\n    rows: 4\n    data: [1, 0, 0, 0,\n           0, 1, 0, 0,\n           0, 0, 1, 0,\n           0, 0, 0, 0]\n- camera:\n    distortion:\n      parameters:\n        cols: 1\n        rows: 0\n        data: []\n      type: none\n    image_height: 376\n    image_width: 1241\n    intrinsics:\n      cols: 1\n      data: [7.188560000000e+02, 7.188560000000e+02, 6.071928000000e+02, 1.852157000000e+02]\n      rows: 4\n    label: cam1\n    line-delay-nanoseconds: 0\n    type: pinhole\n  T_B_C:\n    cols: 4\n    rows: 4\n    data: [1, 0, 0, 0.53716571886,\n           0, 1, 0, 0,\n           0, 0, 1, 0,\n           0, 0, 0, 0]\n\nlabel: /kitti_camera"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_omni.yaml",
    "content": "distortion:\n  parameters:\n    cols: 1\n    rows: 0\n    data: []\n  type: none\nimage_height: 480\nimage_width: 752\nintrinsics:\n  cols: 1\n  data: [-69.6915, 0.000000e+00, 5.4772e-4, 2.1371e-5, -8.7523e-9, 320.0, 240.0, 1.0, 0.0, 0.0, 142.7468, 104.8486, 7.3973, 17.4581, 12.6308, -4.3751, 6.9093, 10.9703, -0.6053, -3.9119, -1.0675, 0.0, 0.0, 1.0]\n  rows: 24\nlabel: cam0\nline-delay-nanoseconds: 0\ntype: omni\nmask: test_mask.png\nT_B_C:\n  cols: 4\n  rows: 4\n  data: [1, 0, 0, 0,\n         0, 1, 0, 0,\n         0, 0, 1, 0,\n         0, 0, 0, 0]\n\n"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_pinhole_atan.yaml",
    "content": "cam0:\n  cam_model: PinholeAtan\n  cam_width: 752\n  cam_height: 480\n  cam_fx: 0.514243\n  cam_fy: 0.802408\n  cam_cx: 0.472366\n  cam_cy: 0.553086\n  cam_d0: 0.934479\n  T_cam_body: \n    tx: 0.0\n    ty: 0.0\n    tz: -0.02\n    qx: -1.0\n    qy: 0.0\n    qz: 0.0\n    qw: 0.0"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_pinhole_equidistant.yaml",
    "content": "cam0:\n  cam_model: PinholeEquidistant\n  cam_width: 752\n  cam_height: 480\n  cam_fx: 463.34128261574796\n  cam_fy: 461.90887721986877\n  cam_cx: 361.5557340721321\n  cam_cy: 231.13558880965206\n  cam_d0: -0.0027973061697674074\n  cam_d1: 0.024145501123661265\n  cam_d2: -0.04304211254137983\n  cam_d3: 0.031185314072573474\n  T_cam_base:\n    tx: 0.0696284\n    ty: -0.0143884\n    tz: -0.00211433\n    qx: 0.00236363\n    qy: -0.00449622\n    qz: -0.701244\n    qw: 0.712903"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_pinhole_nodistortion.yaml",
    "content": "cam0:\n  cam_model: PinholeNoDistortion\n  cam_width: 752\n  cam_height: 480\n  cam_fx: 315.5 # approximately 100deg field of view\n  cam_fy: 315.5\n  cam_cx: 376.0\n  cam_cy: 240.0\n  T_cam_body:\n    tx: 0.0\n    ty: 0.0\n    tz: 0.0\n    qx: 0.0\n    qy: 0.0\n    qz: 0.0\n    qw: 1.0"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/data/calib_pinhole_radtan.yaml",
    "content": "cam0:\n  cam_model: PinholeRadialTangential\n  cam_width: 752\n  cam_height: 480\n  cam_fx: 465.2005090331355\n  cam_fy: 465.4821196969644\n  cam_cx: 407.7552059925612\n  cam_cy: 244.36152062408814\n  cam_d0: -0.3091674142711387\n  cam_d1: 0.10905899434862235\n  cam_d2: 9.527033720237582e-05\n  cam_d3: -0.0005776582308113238\n  T_cam_body:\n    tx: 0.0725808\n    ty: -0.0107534\n    tz: -0.0101489\n    qx: -0.00324194\n    qy: -0.00269663\n    qz: 0.999969\n    qw: 0.00659526"
  },
  {
    "path": "svo_vikit/vikit_cameras/test/test_cameras.cpp",
    "content": "#include \"vikit/cameras.h\"\n#include \"vikit/cameras/atan_distortion.h\"\n#include \"vikit/cameras/camera_factory.h\"\n#include \"vikit/cameras/equidistant_distortion.h\"\n#include \"vikit/cameras/ncamera.h\"\n#include \"vikit/cameras/radial_tangential_distortion.h\"\n#include <vikit/cameras/equidistant_fisheye_geometry.h>\n#include \"vikit/cameras/omni_geometry.h\"\n\n#include <gtest/gtest.h>\n\n#include <aslam/common/entrypoint.h>\n#include <aslam/common/numdiff-jacobian-tester.h>\n#include <vikit/path_utils.h>\n\nclass CamerasTest: public ::testing::Test\n{\nprotected:\n  virtual void SetUp()\n  {\n    data_dir_ = vk::path_utils::getBaseName(__FILE__) + \"/data\";\n    omni_cam_ = vk::cameras::CameraGeometryBase::loadFromYaml(data_dir_+\"/calib_omni.yaml\");\n    CHECK(!data_dir_.empty()) << \"Fail to extract data directory.\";\n    CHECK(omni_cam_) << \"Fail to load omni cameras\";\n  }\n\n  // virtual void TearDown();\n\n  std::string data_dir_;\n  vk::cameras::CameraGeometryBase::Ptr omni_cam_;\n\n};\n\nTEST_F(CamerasTest, AtanDistortion)\n{\n  double x = 0.5, y = 0.8;\n  vk::cameras::AtanDistortion distortion_model(0.934479);\n  distortion_model.distort(x, y);\n  distortion_model.undistort(x, y);\n  EXPECT_NEAR(x, 0.5, 1e-10);\n  EXPECT_NEAR(y, 0.8, 1e-10);\n}\n\nTEST_F(CamerasTest, EquidistantDistortion)\n{\n  double x = 0.5, y = 0.8;\n  vk::cameras::EquidistantDistortion distortion_model(\n        -0.0027, 0.0241, -0.0430, 0.0311);\n  distortion_model.distort(x, y);\n  std::cout << \"x = \" << x << \", y = \" << y << std::endl;\n  distortion_model.undistort(x, y);\n  EXPECT_NEAR(x, 0.5, 1e-10);\n  EXPECT_NEAR(y, 0.8, 1e-10);\n\n  struct EqJacobianFunctor: public aslam::common::NumDiffFunctor<2, 2>\n  {\n    EqJacobianFunctor(const vk::cameras::EquidistantDistortion& dist)\n      : dist_(dist)\n    {};\n    virtual ~EqJacobianFunctor() {};\n    bool functional(\n          const typename NumDiffFunctor::InputType& x,\n          typename NumDiffFunctor::ValueType& fvec,\n          typename NumDiffFunctor::JacobianType* Jout) const\n    {\n        fvec = dist_.distort(x);\n        if (Jout)\n        {\n          (*Jout) = dist_.jacobian(x);\n        }\n        return true;\n    };\n\n    const vk::cameras::EquidistantDistortion& dist_;\n  };\n  constexpr double kStepSize = 1e-4;\n  constexpr double kEpsJacobian = 1e-4;\n  TEST_JACOBIAN_FINITE_DIFFERENCE(\n        EqJacobianFunctor, Eigen::Vector2d(x, y),\n        kStepSize, kEpsJacobian, distortion_model);\n}\n\nTEST_F(CamerasTest, RadialTangentialDistortion)\n{\n  double x = 0.5, y = 0.8;\n  vk::cameras::RadialTangentialDistortion distortion_model(\n        -0.3, 0.1, 9.52e-05, -0.00057);\n  distortion_model.distort(x, y);\n  distortion_model.undistort(x, y);\n  // NOTE: with radtan we don't achieve same precision with only five iterations\n  // at this pose (0.5, 0.8) far from image center\n  EXPECT_NEAR(x, 0.5, 1e-2);\n  EXPECT_NEAR(y, 0.8, 1e-2);\n\n  struct RadialTangentialJacobianFunctor: public aslam::common::NumDiffFunctor<2, 2>\n  {\n    RadialTangentialJacobianFunctor(const vk::cameras::RadialTangentialDistortion& dist)\n      : dist_(dist)\n    {};\n    virtual ~RadialTangentialJacobianFunctor() {};\n    bool functional(\n          const typename NumDiffFunctor::InputType& x,\n          typename NumDiffFunctor::ValueType& fvec,\n          typename NumDiffFunctor::JacobianType* Jout) const\n    {\n        fvec = dist_.distort(x);\n        if (Jout)\n        {\n          (*Jout) = dist_.jacobian(x);\n        }\n        return true;\n    };\n\n    const vk::cameras::RadialTangentialDistortion& dist_;\n  };\n  constexpr double kStepSize = 1e-4;\n  constexpr double kEpsJacobian = 1e-4;\n  TEST_JACOBIAN_FINITE_DIFFERENCE(\n        RadialTangentialJacobianFunctor, Eigen::Vector2d(x, y),\n        kStepSize, kEpsJacobian, distortion_model);\n}\n\nTEST_F(CamerasTest, CameraFactoryNoDistortion)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam1 =\n      vk::cameras::factory::loadFromYAML(\n        data_dir_+\"/calib_pinhole_nodistortion.yaml\", \"cam0\");\n  cam1->printParameters(std::cout, \"Test Load Camera No Distortion:\");\n}\n\nTEST_F(CamerasTest, CameraFactoryAtan)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam1 =\n      vk::cameras::factory::loadFromYAML(\n        data_dir_+\"/calib_pinhole_atan.yaml\", \"cam0\");\n  cam1->printParameters(std::cout, \"Test Load Camera Atan:\");\n}\n\nTEST_F(CamerasTest, CameraFactoryEquidistant)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam1 =\n      vk::cameras::factory::loadFromYAML(\n        data_dir_+\"/calib_pinhole_equidistant.yaml\", \"cam0\");\n  cam1->printParameters(std::cout, \"Test Load Camera Equidistant:\");\n}\n\nTEST_F(CamerasTest, CameraFactoryRadTan)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam1 =\n      vk::cameras::factory::loadFromYAML(\n        data_dir_+\"/calib_pinhole_radtan.yaml\", \"cam0\");\n  cam1->printParameters(std::cout, \"Test Load Camera Radial Tangential:\");\n}\n\nTEST_F(CamerasTest, CameraYaml)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam =\n      vk::cameras::CameraGeometryBase::loadFromYaml(data_dir_ + \"/calib_cam.yaml\");\n  CHECK_NOTNULL(cam.get());\n}\n\nTEST_F(CamerasTest, CameraProjection)\n{\n  vk::cameras::CameraGeometryBase::Ptr cam =\n      vk::cameras::CameraGeometryBase::loadFromYaml(data_dir_ + \"/calib_cam.yaml\");\n\n  Eigen::Vector3d xyz(0.1, 0.2, 2.0), xyz_res;\n  Eigen::Vector2d px;\n  cam->project3(xyz, &px);\n  cam->backProject3(px, &xyz_res);\n  EXPECT_NEAR((xyz/xyz[2]-xyz_res).norm(), 0.0, 0.00000001);\n  CHECK_NOTNULL(cam.get());\n}\n\nTEST_F(CamerasTest, NCameraYamlStereo)\n{\n  vk::cameras::NCamera::Ptr ncam =\n      vk::cameras::NCamera::loadFromYaml(data_dir_ + \"/calib_kitti.yaml\");\n  CHECK_NOTNULL(ncam.get());\n}\n\nTEST(CameraTest, EquidistantProjection)\n{\n  const double f = 350;\n  vk::cameras::Camera::Ptr cam =\n      std::make_shared<vk::cameras::EquidistantFisheyeGeometry>(640, 480, f,\n                                                                Eigen::Vector2d(320, 240),\n                                                                320);\n  // Forward\n  Eigen::Vector2d projected;\n  cam->project3(Eigen::Vector3d(10.0, 20.0, 15.0), &projected);\n  EXPECT_NEAR(projected[0],473.38230111, 1e-7);\n  EXPECT_NEAR(projected[1], 546.76460222, 1e-7);\n\n  cam->project3(Eigen::Vector3d(0.0, 0.0, 15.0), &projected);\n  EXPECT_NEAR(projected[0], 320.0, 1e-7);\n  EXPECT_NEAR(projected[1], 240.0, 1e-7);\n\n  EXPECT_DEATH(cam->project3(Eigen::Vector3d(0.0, 0.0, 0.0), &projected), \"\");\n\n  // Backward\n  Eigen::Vector3d ray;\n  cam->backProject3(Eigen::Vector2d(20, 190), &ray);\n  EXPECT_NEAR(ray[0], -0.7532713858288931, 1e-7);\n  EXPECT_NEAR(ray[1], -0.12554523097148218, 1e-7);\n  EXPECT_NEAR(ray[2], 0.6456164606573597, 1e-7);\n\n  cam->backProject3(Eigen::Vector2d(320, 240), &ray);\n  EXPECT_NEAR(ray[0], 0, 1e-7);\n  EXPECT_NEAR(ray[1], 0, 1e-7);\n  EXPECT_NEAR(ray[2], 1, 1e-7);\n}\n\nTEST_F(CamerasTest, OmniCameraInitialization)\n{\n  vk::cameras::CameraGeometryBase::Ptr omni_cam =\n      vk::cameras::CameraGeometryBase::loadFromYaml(data_dir_ + \"/calib_omni.yaml\");\n  CHECK_NOTNULL(omni_cam.get());\n  omni_cam->printParameters(std::cout, \"Test omni cameras:\");\n}\n\nTEST_F(CamerasTest, OmniCameraBackprojection)\n{\n  constexpr double kEpsBackprojection = 1e-5;\n  const Eigen::Vector2d keypoint(400.0, 300.0);\n  const Eigen::Vector3d expected_bearing(\n        0.733011271294813, 0.549758453471110, 0.400574735838165);\n\n  Eigen::Vector3d bearing;\n  omni_cam_->backProject3(keypoint, &bearing);\n  EXPECT_TRUE(EIGEN_MATRIX_NEAR(expected_bearing, bearing, kEpsBackprojection));\n}\n\nTEST_F(CamerasTest, OmniCameraProjection)\n{\n  constexpr double kEpsProjection = 1e-4;\n  const Eigen::Vector3d landmark(1.0, 1.0, -1.0);\n  const Eigen::Vector2d expected_keypoint(\n        4.729118411664447e+02, 3.929118411664447e+02);\n\n  Eigen::Vector2d keypoint;\n  omni_cam_->project3(landmark, &keypoint);\n  EXPECT_TRUE(EIGEN_MATRIX_NEAR(expected_keypoint, keypoint, kEpsProjection));\n}\n\nTEST_F(CamerasTest, OmniCameraJacobian)\n{\n  struct OmniJacobianFunctor: public aslam::common::NumDiffFunctor<2, 3>\n  {\n    OmniJacobianFunctor(vk::cameras::OmniGeometry::Ptr cam)\n      : cam_(cam)\n    {};\n    virtual ~OmniJacobianFunctor() {};\n    bool functional(\n          const typename NumDiffFunctor::InputType& x,\n          typename NumDiffFunctor::ValueType& fvec,\n          typename NumDiffFunctor::JacobianType* Jout) const\n    {\n        cam_->project3(x, &fvec, Jout);\n        return true;\n    };\n\n    vk::cameras::OmniGeometry::Ptr cam_;\n  };\n\n  constexpr double kStepSize = 1e-4;\n  constexpr double kEpsJacobian = 1e-4;\n  const Eigen::Vector3d landmark(0.5, 0.2, -1.0);\n  TEST_JACOBIAN_FINITE_DIFFERENCE(\n        OmniJacobianFunctor, landmark, kStepSize, kEpsJacobian, omni_cam_);\n}\n\nVIKIT_UNITTEST_ENTRYPOINT\n"
  },
  {
    "path": "svo_vikit/vikit_common/CMakeLists.txt",
    "content": "project(vikit_common)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\nfind_package(OpenCV REQUIRED)\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/vikit/blender_utils.h\n  include/vikit/math_utils.h\n  include/vikit/performance_monitor.h\n  include/vikit/ringbuffer.h\n  include/vikit/sample.h\n  include/vikit/timer.h\n  include/vikit/user_input_thread.h\n  include/vikit/vision.h\n  include/vikit/homography_decomp.h\n  include/vikit/homography.h\n  include/vikit/path_utils.h\n  include/vikit/csv_utils.h\n  include/aslam/common/entrypoint.h\n  include/aslam/common/macros.h\n  include/aslam/common/memory.h\n  include/aslam/common/pose-types.h\n  include/aslam/common/yaml-serialization.h\n  include/aslam/common/yaml-serialization-eigen.h\n  )\n\nset(SOURCES\n  src/homography.cpp\n  src/math_utils.cpp\n  src/performance_monitor.cpp\n  src/sample.cpp\n  src/user_input_thread.cpp\n  src/vision.cpp\n  )\n\n# Create vikit shared library\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\ntarget_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})\n################################################################################\n# Unit tests\ncatkin_add_gtest(homography test/test_homography.cpp)\ntarget_link_libraries(homography gtest ${PROJECT_NAME})\n\ncatkin_add_gtest(math_utils test/test_math_utils.cpp)\ntarget_link_libraries(math_utils gtest ${PROJECT_NAME})\n\n################################################################################\n# Other tests\ncs_add_executable(vikit_test_timer test/test_timer.cpp)\ntarget_link_libraries(vikit_test_timer ${PROJECT_NAME})\n\ncs_add_executable(vikit_test_common test/test_common.cpp)\ntarget_link_libraries(vikit_test_common ${PROJECT_NAME})\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/entrypoint.h",
    "content": "#pragma once\n\n#include <gtest/gtest.h>\n#include <gflags/gflags.h>\n#include <glog/logging.h>\n\n#define VIKIT_UNITTEST_ENTRYPOINT\\\n  int main(int argc, char** argv) {\\\n  ::testing::InitGoogleTest(&argc, argv);\\\n  google::InitGoogleLogging(argv[0]);\\\n  google::InstallFailureSignalHandler();\\\n  ::testing::FLAGS_gtest_death_test_style = \"threadsafe\";\\\n  FLAGS_alsologtostderr = true; \\\n  FLAGS_colorlogtostderr = true; \\\n  return RUN_ALL_TESTS();\\\n}\n\n// Let the Eclipse parser see the macro.\n#ifndef TEST\n#define TEST(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef TEST_F\n#define TEST_F(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef TEST_P\n#define TEST_P(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef TYPED_TEST\n#define TYPED_TEST(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef TYPED_TEST_P\n#define TYPED_TEST_P(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef TYPED_TEST_CASE\n#define TYPED_TEST_CASE(a, b) int Test_##a##_##b()\n#endif\n\n#ifndef REGISTER_TYPED_TEST_CASE_P\n#define REGISTER_TYPED_TEST_CASE_P(a, ...)  int Test_##a()\n#endif\n\n#ifndef INSTANTIATE_TYPED_TEST_CASE_P\n#define INSTANTIATE_TYPED_TEST_CASE_P(a, ...) int Test_##a()\n#endif\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/macros.h",
    "content": "#ifndef ASLAM_COMMON_MACROS_H_\n#define ASLAM_COMMON_MACROS_H_\n\n#include <memory>\n\n#define ASLAM_DISALLOW_EVIL_CONSTRUCTORS(TypeName)     \\\n  TypeName(const TypeName&) = delete;                  \\\n  void operator=(const TypeName&) = delete\n\n#define ASLAM_POINTER_TYPEDEFS(TypeName)               \\\n  typedef std::unique_ptr<TypeName> UniquePtr;         \\\n  typedef std::shared_ptr<TypeName> Ptr;               \\\n  typedef std::shared_ptr<const TypeName> ConstPtr\n\n/// Extract the type from an expression which wraps a type inside braces. This\n/// is done to protect the commas in some types.\ntemplate<typename T> struct ArgumentType;\ntemplate<typename T, typename U> struct ArgumentType<T(U)> { typedef U Type; };\n#define GET_TYPE(TYPE) ArgumentType<void(TYPE)>::Type\n\n#endif  // ASLAM_COMMON_MACROS_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/memory.h",
    "content": "#ifndef ASLAM_MEMORY_HELPERS_H_\n#define ASLAM_MEMORY_HELPERS_H_\n\n#include <functional>\n#include <map>\n#include <memory>\n#include <type_traits>\n#include <unordered_map>\n#include <utility>\n\n#include <Eigen/Core>\n#include <Eigen/StdVector>\n\nnamespace aslam {\n\ntemplate<template<typename, typename> class Container, typename Type>\nstruct Aligned {\n  typedef Container<Type, Eigen::aligned_allocator<Type> > type;\n};\n\ntemplate<typename KeyType, typename ValueType>\nstruct AlignedUnorderedMap {\n  typedef std::unordered_map<KeyType, ValueType,\n      std::hash<KeyType>, std::equal_to<KeyType>,\n      Eigen::aligned_allocator<std::pair<const KeyType, ValueType> > > type;\n};\n\ntemplate<typename KeyType, typename ValueType>\nstruct AlignedMap {\n  typedef std::map<KeyType, ValueType,\n      std::less<KeyType>,\n      Eigen::aligned_allocator<std::pair<const KeyType, ValueType> > > type;\n};\n\n/// \\brief Aligned allocator to be used like std::make_shared\n///\n/// To be used like:\n///   std::shared_ptr my_ptr = aligned_shared<aslam::RadTanDistortion>(params);\ntemplate<typename Type, typename ... Arguments>\ninline std::shared_ptr<Type> aligned_shared(Arguments&&... arguments) {\n  typedef typename std::remove_const<Type>::type TypeNonConst;\n  return std::allocate_shared<Type>(Eigen::aligned_allocator<TypeNonConst>(),\n                                    std::forward<Arguments>(arguments)...);\n}\n\n} // namespace aslam\n\n#endif  // ASLAM_MEMORY_HELPERS_H_\n\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/numdiff-jacobian-tester.h",
    "content": "#pragma once\n\n#include <Eigen/Dense>\n#include <eigen-checks/gtest.h>\n#include <glog/logging.h>\n\nnamespace aslam {\nnamespace common {\n\n// Enable/disable debug outputs.\n#define NUMDIFF_DEBUG_OUTPUT false\n\n/// \\def TEST_JACOBIAN_FINITE_DIFFERENCE(FUNCTOR_TYPE, X, STEP, TOLERANCE, ...)\n///  Test macro and numerical differentiator to unit test Jacobian implementations.\n///  @param[in] FUNCTOR_TYPE Functor that wraps the value and symbolic Jacobian generating function\n///                          to the required form. See example below.\n///  @param[in] X Evaluation point. (struct Functor : public aslam::common::NumDiffFunctor<Nf, Nx>)\n///               Nf: output dimension, Nx: number of parameters --> dim(J)=(Nf x Nx)\n///  @param[in] STEP Step size used for the numerical differentiation. (Eigen::VectorXd)\n///  @param[in] TOLERANCE Tolerance used for comparing the numerical and symbolic Jacobian\n///                       evaluations. (double)\n///  @param[in] ... Argument list forwarded to Functor constructor. (__VA_ARGS__)\n///\n/// Example:\n/// @code\n///   struct Functor : public aslam::common::NumDiffFunctor<2, 3> {\n///    Functor(MyClass::Ptr my_class) : my_class_(my_class) {};\n///    virtual ~Functor() {};\n///\n///    void functional(const typename NumDiffFunctor::InputType& x,\n///                    typename NumDiffFunctor::ValueType& fvec,\n///                    typename NumDiffFunctor::JacobianType* Jout) const {\n///        fvec = getValue(x,my_class->params);\n///        Jout = my_class_->getAnalyticalJacobian(x, my_class->params);\n///    };\n///\n///    MyClass::Ptr my_class_;\n///  };\n///\n///  double stepsize = 1e-3;\n///  double test_tolerance = 1e-2;\n///  Eigen::Vector2d x0(0.0, 1.0); // Evaluation point\n///  TEST_JACOBIAN_FINITE_DIFFERENCE(Functor, x0, stepsize, tolerance, my_class_);\n///\n/// @endcode\n#define TEST_JACOBIAN_FINITE_DIFFERENCE(FUNCTOR_TYPE, X, STEP, TOLERANCE, ...) \\\n    do {\\\n      FUNCTOR_TYPE functor(__VA_ARGS__);                                 \\\n      typename aslam::common::NumericalDiffTraits<FUNCTOR_TYPE>::type numDiff(functor, STEP); \\\n      typename FUNCTOR_TYPE::JacobianType Jnumeric;                      \\\n      bool success = numDiff.getJacobianNumerical(X, Jnumeric);          \\\n      EXPECT_TRUE(success) << \"Num. differentiation failed!\";            \\\n      typename FUNCTOR_TYPE::JacobianType Jsymbolic;                     \\\n      success = functor.getJacobian(X, &Jsymbolic);                      \\\n      EXPECT_TRUE(success) << \"Getting analytical Jacobian failed!\";     \\\n      EXPECT_TRUE(EIGEN_MATRIX_NEAR(Jnumeric, Jsymbolic, TOLERANCE));    \\\n      VLOG(3) << \"Jnumeric: \" << Jnumeric << \"\\n\";                       \\\n      VLOG(3) << \"Jsymbolic: \" << Jsymbolic << \"\\n\";                     \\\n    } while (0)\n\n// Functor base for numerical differentiation.\ntemplate<int NY, int NX, typename _Scalar = double>\nstruct NumDiffFunctor {\n  // Type definitions.\n  enum {\n    InputsAtCompileTime = NX,\n    ValuesAtCompileTime = NY\n  };\n\n  typedef _Scalar Scalar;\n  typedef Eigen::Matrix<Scalar, InputsAtCompileTime, 1> InputType;\n  typedef Eigen::Matrix<Scalar, ValuesAtCompileTime, 1> ValueType;\n  typedef Eigen::Matrix<Scalar, ValuesAtCompileTime, InputsAtCompileTime> JacobianType;\n\n  NumDiffFunctor() {};\n  virtual ~NumDiffFunctor() {};\n\n  virtual bool functional(const typename NumDiffFunctor::InputType& x,\n                          typename NumDiffFunctor::ValueType& fvec,\n                          typename NumDiffFunctor::JacobianType* Jout) const = 0;\n\n  bool operator()(const InputType& x, ValueType& fvec) const {\n    return functional(x, fvec, nullptr);\n  };\n\n  bool getJacobian(const InputType& x,\n                   JacobianType* out_jacobian) const {\n    ValueType fvec;\n    return functional(x, fvec, out_jacobian);\n  };\n};\n\n/// Differentiation schemes for class NumericalDiff.\nenum NumericalDiffMode {\n  Forward,\n  Central,\n  CentralSecond\n};\n\n\n// The NumericalDiff class won't compile if ValuesAtCompileTime is zero.\n// This class can be chosen by template magic in this case.\ntemplate<typename _Functor, NumericalDiffMode mode = CentralSecond>\nclass ZeroNumericalDiff {\n public:\n  typedef _Functor Functor;\n  typedef typename Functor::Scalar Scalar;\n  typedef typename Functor::InputType InputType;\n  typedef typename Functor::ValueType ValueType;\n  typedef typename Functor::JacobianType JacobianType;\n  enum {\n    InputsAtCompileTime = _Functor::InputsAtCompileTime,\n    ValuesAtCompileTime = _Functor::ValuesAtCompileTime\n  };\n\n  ZeroNumericalDiff(const Functor& /* f */, Scalar /* _epsfcn */) {};\n  virtual ~ZeroNumericalDiff() {};\n  bool getJacobianNumerical(const InputType& /* _x */, JacobianType &/* jac */) const {\n    return true;\n  }\n};\n\n/// \\class NumericalDiff\n/// \\brief Modified numerical differentiation code from unsupported/Eigen library\ntemplate<typename _Functor, NumericalDiffMode mode = CentralSecond>\nclass NumericalDiff : public _Functor {\n public:\n  typedef _Functor Functor;\n  typedef typename Functor::Scalar Scalar;\n  typedef typename Functor::InputType InputType;\n  typedef typename Functor::ValueType ValueType;\n  typedef typename Functor::JacobianType JacobianType;\n\n  NumericalDiff(const Functor& f, Scalar _epsfcn = 0.)\n      : Functor(f),\n        epsfcn(_epsfcn) {}\n\n  enum {\n    InputsAtCompileTime = Functor::InputsAtCompileTime,\n    ValuesAtCompileTime = Functor::ValuesAtCompileTime\n  };\n\n  bool getJacobianNumerical(const InputType& _x, JacobianType &jac) const {\n    static_assert(InputsAtCompileTime > 0,\n                  \"Numerical Differentiation does not work for zero-sized Jacobians.\");\n    using std::sqrt;\n    using std::abs;\n    /* Local variables */\n    Scalar h;\n    const typename InputType::Index n = _x.size();\n    const Scalar eps = sqrt(((std::max)(epsfcn, Eigen::NumTraits<Scalar>::epsilon())));\n\n    // Build jacobian.\n    InputType x = _x;\n    ValueType val1, val2, val3, val4;\n    bool success = true;  // Success of value generating function.\n\n    for (int j = 0; j < n; ++j) {\n      h = eps * abs(x[j]);\n      if (h == 0.) {\n        h = eps;\n      }\n      switch (mode) {\n        case Forward:\n          success &= Functor::operator()(x, val1);\n          x[j] += h;\n          success &= Functor::operator()(x, val2);\n          x[j] = _x[j];\n          jac.col(j) = (val2 - val1) / h;\n          break;\n        case Central:\n          x[j] += h;\n          success &= Functor::operator()(x, val2);\n          x[j] -= 2 * h;\n          success &= Functor::operator()(x, val1);\n          x[j] = _x[j];\n          jac.col(j) = (val2 - val1) / (2 * h);\n          break;\n        case CentralSecond:\n          x[j] += 2.0 * h;\n          success &= Functor::operator()(x, val1);\n          x[j] -= h;\n          success &= Functor::operator()(x, val2);\n          x[j] -= 2.0 * h;\n          success &= Functor::operator()(x, val3);\n          x[j] -= h;\n          success &= Functor::operator()(x, val4);\n          x[j] = _x[j];\n          jac.col(j) = ((8.0 * val2) + val4 - val1 - (8.0 * val3)) / (h * 12.0);\n          break;\n        default:\n          eigen_assert(false);\n      };\n    }\n    return success;\n  }\n private:\n  Scalar epsfcn;\n  NumericalDiff& operator=(const NumericalDiff&);\n};\n\ntemplate<typename _Functor, NumericalDiffMode mode, int ValuesAtCompileTime>\nstruct NumericalDiffTraitsSelector {\n  typedef NumericalDiff<_Functor, mode> type;\n};\n\ntemplate<typename _Functor, NumericalDiffMode mode>\nstruct NumericalDiffTraitsSelector<_Functor, mode, 0> {\n  typedef ZeroNumericalDiff<_Functor, mode> type;\n};\n\ntemplate<typename _Functor, NumericalDiffMode mode = CentralSecond>\nstruct NumericalDiffTraits {\n  typedef typename NumericalDiffTraitsSelector<_Functor, mode, _Functor::InputsAtCompileTime>::type type;\n};\n\n}  // namespace common\n}  // namespace aslam\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/pose-types.h",
    "content": "#ifndef ASLAM_COMMON_POSE_TYPES_H_\n#define ASLAM_COMMON_POSE_TYPES_H_\n\n#include <vector>\n\n#include <aslam/common/memory.h>\n\n#include <kindr/minimal/position.h>\n#include <kindr/minimal/quat-transformation.h>\n#include <kindr/minimal/rotation-quaternion.h>\n\nnamespace aslam {\n\ntypedef kindr::minimal::QuatTransformation Transformation;\ntypedef Aligned<std::vector, Transformation>::type TransformationVector;\ntypedef kindr::minimal::RotationQuaternion Quaternion;\ntypedef kindr::minimal::AngleAxis AngleAxis;\ntypedef kindr::minimal::Position Position3D;\n\n// Types used in ceres error terms, where templating for Jet types\n// is necessary.\ntemplate <class Scalar>\nusing QuaternionTemplate = kindr::minimal::RotationQuaternionTemplate<Scalar>;\n\ntemplate <class Scalar>\nusing PositionTemplate = kindr::minimal::PositionTemplate<Scalar>;\n\n}  // namespace aslam\n\n#endif  // ASLAM_COMMON_POSE_TYPES_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/yaml-serialization-eigen.h",
    "content": "#ifndef ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_\n#define ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_\n\n#include <Eigen/Core>\n#include <glog/logging.h>\n#pragma GCC diagnostic ignored \"-Wdeprecated-declarations\"\n#include <yaml-cpp/yaml.h>\n#pragma diagnostic pop\n\nnamespace YAML {  // This has to be in the same namespace as the Emitter.\n// yaml serialization helper function for the Eigen3 Matrix object.\n// The matrix is a base class for dense matrices.\n// http://eigen.tuxfamily.org/dox-devel/TutorialMatrixClass.html\ntemplate <class Scalar_, int A_, int B_, int C_, int D_, int E_>\nstruct convert<Eigen::Matrix<Scalar_, A_, B_, C_, D_, E_> > {\n  template <class Scalar, int A, int B, int C, int D, int E>\n  static Node encode(const Eigen::Matrix<Scalar, A, B, C, D, E>& M) {\n    Node node;\n    typedef typename Eigen::Matrix<Scalar, A, B, C, D, E>::Index IndexType;\n    IndexType rows = M.rows();\n    IndexType cols = M.cols();\n    node[\"rows\"] = rows;\n    node[\"cols\"] = cols;\n    CHECK_GT(rows, 0);\n    CHECK_GT(cols, 0);\n    for (IndexType i = 0; i < rows; ++i) {\n      for (IndexType j = 0; j < cols; ++j) {\n        node[\"data\"].push_back(M(i, j));\n      }\n    }\n    return node;\n  }\n\n  template <class Scalar, int A, int B, int C, int D, int E>\n  static bool decode(const Node& node,\n                     Eigen::Matrix<Scalar, A, B, C, D, E>& M) {\n    if(!node.IsMap()) {\n      LOG(ERROR) << \"Unable to get parse the matrix because the node is not a map.\";\n      return false;\n    }\n\n    typedef typename Eigen::Matrix<Scalar, A, B, C, D, E>::Index IndexType;\n    IndexType rows = node[\"rows\"].as<IndexType>();\n    IndexType cols = node[\"cols\"].as<IndexType>();\n\n    if(rows != A || cols != B) {\n      LOG(ERROR) << \"The matrix is the wrong size (rows, cols). Wanted: (\" << A << \",\"\n          << B << \"), got (\" << rows << \", \" << cols << \")\";\n      return false;\n    }\n\n    size_t expected_size = M.rows() * M.cols();\n    if (!node[\"data\"].IsSequence()) {\n      LOG(ERROR) << \"The matrix data is not a sequence.\";\n      return false;\n    }\n    if(node[\"data\"].size() != expected_size) {\n      LOG(ERROR) << \"The data sequence is the wrong size. Wanted: \" << expected_size <<\n          \", got: \" << node[\"data\"].size();\n      return false;\n    }\n\n    YAML::const_iterator it = node[\"data\"].begin();\n    YAML::const_iterator it_end = node[\"data\"].end();\n    if (rows > 0 && cols > 0) {\n      for (IndexType i = 0; i < rows; ++i) {\n        for (IndexType j = 0; j < cols; ++j) {\n          CHECK(it != it_end);\n          M(i, j) = it->as<Scalar>();\n          ++it;\n        }\n      }\n    }\n    return true;\n  }\n\n  template <class Scalar, int B, int C, int D, int E>\n  static bool decode(const Node& node,\n                     Eigen::Matrix<Scalar, Eigen::Dynamic, B, C, D, E>& M) {\n    if(!node.IsMap()) {\n      LOG(ERROR) << \"Unable to get parse the matrix because the node is not a map.\";\n      return false;\n    }\n\n    typedef typename Eigen::Matrix<Scalar, Eigen::Dynamic, B, C, D, E>::Index\n        IndexType;\n    IndexType rows = node[\"rows\"].as<IndexType>();\n    IndexType cols = node[\"cols\"].as<IndexType>();\n\n    if(cols != B) {\n      LOG(ERROR) << \"The matrix is the wrong size (rows, cols). Wanted: (\" << rows << \",\"\n          << B << \"), got (\" << rows << \", \" << cols << \")\";\n      return false;\n    }\n\n    M.resize(rows, Eigen::NoChange);\n\n    size_t expected_size = M.rows() * M.cols();\n    if (!node[\"data\"].IsSequence()) {\n      LOG(ERROR) << \"The matrix data is not a sequence.\";\n      return false;\n    }\n    if(node[\"data\"].size() != expected_size) {\n      LOG(ERROR) << \"The data sequence is the wrong size. Wanted: \" << expected_size <<\n          \", got: \" << node[\"data\"].size();\n      return false;\n    }\n\n    YAML::const_iterator it = node[\"data\"].begin();\n    YAML::const_iterator it_end = node[\"data\"].end();\n    if (rows > 0 && cols > 0) {\n      for (IndexType i = 0; i < rows; ++i) {\n        for (IndexType j = 0; j < cols; ++j) {\n          CHECK(it != it_end);\n          M(i, j) = it->as<Scalar>();\n          ++it;\n        }\n      }\n    }\n    return true;\n  }\n\n  template <class Scalar, int A, int C, int D, int E>\n  static bool decode(const Node& node,\n                     Eigen::Matrix<Scalar, A, Eigen::Dynamic, C, D, E>& M) {\n    if(!node.IsMap()) {\n      LOG(ERROR) << \"Unable to get parse the matrix because the node is not a map.\";\n      return false;\n    }\n\n    typedef typename Eigen::Matrix<Scalar, A, Eigen::Dynamic, C, D, E>::Index\n        IndexType;\n    IndexType rows = node[\"rows\"].as<IndexType>();\n    IndexType cols = node[\"cols\"].as<IndexType>();\n\n    if(rows != A) {\n      LOG(ERROR) << \"The matrix is the wrong size (rows, cols). Wanted: (\" << A << \",\"\n          << cols << \"), got (\" << rows << \", \" << cols << \")\";\n      return false;\n    }\n\n    M.resize(Eigen::NoChange, cols);\n\n    size_t expected_size = M.rows() * M.cols();\n    if (!node[\"data\"].IsSequence()) {\n      LOG(ERROR) << \"The matrix data is not a sequence.\";\n      return false;\n    }\n    if(node[\"data\"].size() != expected_size) {\n      LOG(ERROR) << \"The data sequence is the wrong size. Wanted: \" << expected_size <<\n          \", got: \" << node[\"data\"].size();\n      return false;\n    }\n\n    YAML::const_iterator it = node[\"data\"].begin();\n    YAML::const_iterator it_end = node[\"data\"].end();\n    if (rows > 0 && cols > 0) {\n      for (IndexType i = 0; i < rows; ++i) {\n        for (IndexType j = 0; j < cols; ++j) {\n          CHECK(it != it_end);\n          M(i, j) = it->as<Scalar>();\n          ++it;\n        }\n      }\n    }\n    return true;\n  }\n\n  template <class Scalar, int C, int D, int E>\n  static bool decode(\n      const Node& node,\n      Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D, E>& M) {\n    if(!node.IsMap()) {\n      LOG(ERROR) << \"Unable to get parse the matrix because the node is not a map.\";\n      return false;\n    }\n\n    typedef typename Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, C, D,\n                                   E>::Index IndexType;\n    IndexType rows = node[\"rows\"].as<IndexType>();\n    IndexType cols = node[\"cols\"].as<IndexType>();\n\n    M.resize(rows, cols);\n\n    size_t expected_size = M.rows() * M.cols();\n    if (!node[\"data\"].IsSequence()) {\n      LOG(ERROR) << \"The matrix data is not a sequence.\";\n      return false;\n    }\n    if(node[\"data\"].size() != expected_size) {\n      LOG(ERROR) << \"The data sequence is the wrong size. Wanted: \" << expected_size <<\n          \", got: \" << node[\"data\"].size();\n      return false;\n    }\n    YAML::const_iterator it = node[\"data\"].begin();\n    YAML::const_iterator it_end = node[\"data\"].end();\n    if (rows > 0 && cols > 0) {\n      for (IndexType i = 0; i < rows; ++i) {\n        for (IndexType j = 0; j < cols; ++j) {\n          CHECK(it != it_end);\n          M(i, j) = it->as<Scalar>();\n          ++it;\n        }\n      }\n    }\n    return true;\n  }\n};\n}  // namespace YAML\n\n#endif  // ASLAM_CV_COMMON_EIGEN_YAML_SERIALIZATION_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/aslam/common/yaml-serialization.h",
    "content": "#ifndef ASLAM_CV_COMMON_YAML_SERIALIZATION_H_\n#define ASLAM_CV_COMMON_YAML_SERIALIZATION_H_\n\n#include <fstream>  // NOLINT\n#include <list>\n#include <queue>\n#include <string>\n#include <unordered_map>\n#include <unordered_set>\n#include <utility>\n#include <vector>\n\n#include <aslam/common/memory.h>\n#include <glog/logging.h>\n\n#include \"yaml-serialization-eigen.h\"\n\nnamespace YAML {\n\n/// \\brief A function to get a value from a YAML node with non-exception error handling.\n/// \\param[in] node The YAML node.\n/// \\param[in] key The key used to dereference the node (node[key]).\n/// \\param[out] value The return value.\n/// \\returns True if the value was filled in successfully. False otherwise.\ntemplate<typename ValueType>\nbool safeGet(const YAML::Node& node, const std::string& key, ValueType* value) {\n  CHECK_NOTNULL(value);\n  bool success = false;\n  if(!node.IsMap()) {\n    LOG(ERROR) << \"Unable to get Node[\\\"\" << key << \"\\\"] because the node is not a map\";\n  } else {\n    const YAML::Node sub_node = node[key];\n    if(sub_node) {\n      try {\n        *value = sub_node.as<ValueType>();\n        success = true;\n      } catch(const YAML::Exception& e) {\n        LOG(ERROR) << \"Error getting key \\\"\" << key << \"\\\" as type \"\n            << typeid(ValueType).name() << \": \" << e.what();\n      }\n    } else {\n      LOG(ERROR) << \"Key \\\"\" << key << \"\\\" does not exist\";\n    }\n  }\n  return success;\n}\n\n\ntemplate <class ValueType>\nstruct convert<std::queue<ValueType> > {\n  static Node encode(const std::queue<ValueType>& queue) {\n    Node node;\n    typename aslam::Aligned<std::vector, ValueType>::type tmp_v;\n    typename aslam::Aligned<std::queue, ValueType>::type q_cpy = queue;\n    while (!q_cpy.empty()) {\n      tmp_v.push_back(q_cpy.front());\n      q_cpy.pop();\n    }\n    node = tmp_v;\n    return node;\n  }\n\n  static bool decode(const Node& node, std::queue<ValueType>& queue) {\n    CHECK(node.IsSequence());\n    for (size_t i = 0; i < node.size(); ++i) {\n      ValueType tmp = node[i].as<ValueType>();\n      queue.push(tmp);\n    }\n    return true;\n  }\n};\n\ntemplate <class KeyType>\nstruct convert<std::unordered_set<KeyType> > {\n  static Node encode(const std::unordered_set<KeyType>& set) {\n    Node node;\n    for (const KeyType& value : set) {\n      node.push_back(value);\n    }\n    return node;\n  }\n\n  static bool decode(const Node& node, std::unordered_set<KeyType>& set) {\n    set.clear();\n    CHECK(node.IsSequence());\n    for (YAML::const_iterator it = node.begin(); it != node.end(); ++it) {\n      set.insert(it->as<KeyType>());\n    }\n    return true;\n  }\n};\n\ntemplate <class KeyType, class ValueType>\nstruct convert<std::unordered_map<KeyType, ValueType> > {\n  static Node encode(const std::unordered_map<KeyType, ValueType>& map) {\n    Node node;\n    for (const std::pair<KeyType, ValueType>& value : map) {\n      node[value.first] = value.second;\n    }\n    return node;\n  }\n\n  static bool decode(const Node& node,\n                     std::unordered_map<KeyType, ValueType>& map) {\n    map.clear();\n    for (YAML::const_iterator it = node.begin(); it != node.end(); ++it) {\n      map[it->first.as<KeyType>()] = it->second.as<ValueType>();\n    }\n    return true;\n  }\n};\n\ntemplate <typename ObjectType>\nvoid Save(const ObjectType& object, std::ostream* ofs) {\n  CHECK_NOTNULL(ofs);\n  assert(ofs->good());\n  YAML::Node out;\n  out = object;\n  *ofs << out;\n}\n\ntemplate <typename T>\nvoid Save(const T& object, const std::string& filename) {\n  std::ofstream ofs(filename.c_str());\n  Save(object, &ofs);\n}\n\ntemplate <typename ObjectType>\nbool Load(const std::string& filename, ObjectType* object) {\n  CHECK_NOTNULL(object);\n  std::ifstream ifs(filename.c_str());\n  if (!ifs.good()) {\n    return false;\n  }\n\n  try {\n    YAML::Node doc = YAML::LoadFile(filename.c_str());\n    (*object) = doc.as<ObjectType>();\n    return true;\n  }\n  catch (const std::exception& e) {  // NOLINT\n    LOG(ERROR) << \"Encountered exception while reading yaml \" << e.what();\n    return false;\n  }\n}\n}  // namespace YAML\n#endif  // ASLAM_CV_COMMON_YAML_SERIALIZATION_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/backtrace.h",
    "content": "#pragma once\n\n#include <cxxabi.h>\n#include <execinfo.h>\n#include <memory>\n#include <sstream>  // NOLINT\n#include <string>\n\nnamespace vk {\nnamespace common {\n\n// Adapted from http://panthema.net/2008/0901-stacktrace-demangled/ .\ninline std::string backtrace() {\n  constexpr size_t kBacktraceLimit = 64;\n  void* array[kBacktraceLimit];\n  size_t size;\n\n  size = ::backtrace(array, kBacktraceLimit);\n  // Causes\n  // http://valgrind.org/docs/manual/mc-manual.html#opt.show-mismatched-frees ,\n  // but that is ok.\n  std::unique_ptr<char * []> symbollist(backtrace_symbols(array, size));\n\n  if (size == 0u) {\n    return \"  Backtrace empty, possibly corrupt!\";\n  }\n\n  std::stringstream result;\n  for (size_t i = 1u; i < size; i++) {\n    char* begin_name = 0, *begin_offset = 0, *end_offset = 0;\n\n    // Find parentheses and +address offset surrounding the mangled name:\n    // ./module(function+0x15c) [0x8048a6d]\n    for (char* p = symbollist[i]; *p; ++p) {\n      if (*p == '(') {\n        begin_name = p;\n      } else if (*p == '+') {\n        begin_offset = p;\n      } else if (*p == ')' && begin_offset) {\n        end_offset = p;\n        break;\n      }\n    }\n\n    if (begin_name && begin_offset && end_offset && begin_name < begin_offset) {\n      *begin_name++ = '\\0';\n      *begin_offset++ = '\\0';\n      *end_offset = '\\0';\n\n      // Mangled name is now in [begin_name, begin_offset) and caller\n      // offset in [begin_offset, end_offset).\n      int status;\n      // Causes\n      // http://valgrind.org/docs/manual/mc-manual.html#opt.show-mismatched-frees\n      // but that is ok.\n      std::unique_ptr<char> demangled(\n          abi::__cxa_demangle(begin_name, nullptr, nullptr, &status));\n      if (status == 0) {\n        result << \"  \" << symbollist[i] << \" : \" << demangled.get() << \"+\"\n               << begin_offset << \"\\n\";\n      } else {\n        // Demangling failed. Output function name as a C function with\n        // no arguments.\n        result << \"  \" << symbollist[i] << \" : \" << begin_name << \"+\"\n               << begin_offset << \"\\n\";\n      }\n    } else {\n      // Couldn't parse the line? Print the whole line.\n      result << \"  \" << symbollist[i] << \"\\n\";\n    }\n  }\n\n  return result.str();\n}\n\n}  // namespace common\n}  // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/blender_utils.h",
    "content": "/*\n * blender_utils.h\n *\n *  Created on: Feb 13, 2014\n *      Author: cforster\n */\n\n#ifndef VIKIT_BLENDER_UTILS_H_\n#define VIKIT_BLENDER_UTILS_H_\n\n#include <list>\n#include <string>\n#include <glog/logging.h>\n#include <vikit/math_utils.h>\n#include <opencv2/core/core.hpp>\n#include <fstream>\n#include <Eigen/Core>\n\nnamespace vk {\nnamespace blender_utils {\n\nvoid loadBlenderDepthmap(\n    const std::string file_name,\n    const int img_width,\n    const int img_height,\n    cv::Mat& z_map)\n{\n  std::ifstream file_stream(file_name.c_str());\n  CHECK(file_stream.is_open()) << \"file '\" << file_name << \"' could not be opened.\";\n  z_map = cv::Mat(img_height, img_width, CV_32FC1);\n  float * img_ptr = z_map.ptr<float>();\n  float depth;\n  for(int y=0; y<img_height; ++y)\n  {\n    for(int x=0; x<img_width; ++x, ++img_ptr)\n    {\n      file_stream >> depth;\n\n      // blender:\n      *img_ptr = depth;\n\n      // povray\n      // *img_ptr = depth/100.0; // depth is in [cm], we want [m]\n\n      if(file_stream.peek() == '\\n' && x != img_width-1 && y != img_height-1)\n        printf(\"WARNING: did not read the full depthmap!\\n\");\n    }\n  }\n}\n\n} // namespace blender_utils\n} // namespace vk\n\n#endif // VIKIT_BLENDER_UTILS_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/csv_utils.h",
    "content": "#pragma once\n\n// TODO(cfo): These functions are from Thomas Schneider's dataset_tools\n//            We should move to that dataset provider as soon as it is ready!\n\n#include <fstream> \n#include <string>\n#include <vector>\n\n#include <glog/logging.h>\n#include <Eigen/Geometry>\n\n#include <kindr/minimal/position.h>\n#include <kindr/minimal/quat-transformation.h>\n#include <kindr/minimal/rotation-quaternion.h>\n\nnamespace vk {\n\ntypedef kindr::minimal::QuatTransformation Transformation;\ntypedef kindr::minimal::RotationQuaternion Quaternion;\ntypedef kindr::minimal::AngleAxis AngleAxis;\ntypedef kindr::minimal::Position Position3D;\n\ninline void removeAnyEndOfLineCharacter(std::string* line)\n{\n  CHECK_NOTNULL(line);\n  for (std::string::iterator it = line->begin(); it != line->end(); ) {\n    if ((*it == '\\r') || (*it == '\\n')) {\n      it = line->erase(it);\n    } else {\n      ++it;\n    }\n  }\n}\n\ninline bool readNextLine(\n    const size_t num_fields_per_line,\n    std::ifstream& csv_file_stream,\n    std::vector<std::string>* fields)\n{\n  CHECK_NOTNULL(fields)->clear();\n  // Read the line.\n  std::string line;\n  if (!std::getline(csv_file_stream, line)) {\n    return false;\n  }\n\n  // Treat empty lines as end-of-file (hopefully at the end of the file).\n  removeAnyEndOfLineCharacter(&line);\n  if (line.empty()) {\n    return false;\n  }\n\n  // Split fields of the read line.\n  const char field_delimiter = ',';\n  fields->resize(num_fields_per_line);\n  std::stringstream line_stream(line);\n  for (size_t idx = 0u; idx < num_fields_per_line; ++idx) {\n    CHECK(!line_stream.eof());\n    std::getline(line_stream, (*fields)[idx], field_delimiter);\n\n    CHECK(!(*fields)[idx].empty()) << \"Too few fields per line.\"\n          << \" Found \" << idx + 1 << \" fields but expected \" << num_fields_per_line << \".\";\n  }\n  return true;\n}\n\ninline double convertStringToDouble(const std::string& number_as_string) {\n  CHECK(!number_as_string.empty());\n  double number_as_double = 0;\n  try {\n    number_as_double = std::stod(number_as_string);\n  } catch(const std::invalid_argument& invalid_argument_exception) {\n    LOG(FATAL) << \"Invalid argument exception. Could not convert '\" << number_as_string <<\n        \"' to a double. \" << invalid_argument_exception.what();\n  } catch(const std::out_of_range& out_of_range_exception) {\n    LOG(FATAL) << \"Out of range exception. The given number '\" << number_as_string <<\n        \"' does not seem to fit into a double! \" << out_of_range_exception.what();\n  } catch(const std::exception& exception) {\n    LOG(FATAL) << \"Conversion of the given number '\" << number_as_string <<\n            \"' to a double failed. \" << exception.what();\n  }\n  return number_as_double;\n}\n\ninline Eigen::Vector3d convertStringsToEigenVector3d(const std::string& string_x,\n                                                     const std::string& string_y,\n                                                     const std::string& string_z) {\n  CHECK(!string_x.empty());\n  CHECK(!string_y.empty());\n  CHECK(!string_z.empty());\n  Eigen::Vector3d vector;\n  vector.setZero();\n  try {\n    vector << std::stod(string_x), std::stod(string_y), std::stod(string_z);\n  } catch(const std::invalid_argument& invalid_argument_exception) {\n    LOG(FATAL) << \"Invalid argument exception. Could not convert '(\" << string_x << \", \"\n               << string_y << \", \" << string_z << \")' to Eigen::Vector3d.\"\n               << invalid_argument_exception.what();\n  } catch(const std::out_of_range& out_of_range_exception) {\n    LOG(FATAL) << \"Out of range exception. The given tuple '(\" << string_x << \", \"\n               << string_y << \", \" << string_z << \")' does not seem to fit into a \"\n               << \"three-dimensional double vector!\" << out_of_range_exception.what();\n  } catch(const std::exception& exception) {\n    LOG(FATAL) << \"Conversion of the given tuple '(\" << string_x << \", \"\n               << string_y << \", \" << string_z << \")' to three-dimensional \"\n               << \"double vector failed. \" << exception.what();\n  }\n  return vector;\n}\n\ninline Quaternion convertStringsToQuaternion(\n    const std::string& qw, const std::string& qx, const std::string& qy, const std::string& qz) {\n  CHECK(!qw.empty());\n  CHECK(!qx.empty());\n  CHECK(!qy.empty());\n  CHECK(!qz.empty());\n  Quaternion quaternion;\n  quaternion.setIdentity();\n  try {\n    constexpr double kNormTolerance = 1e-3;\n    Eigen::Vector4d quat_coeffs(std::stod(qw), std::stod(qx), std::stod(qy), std::stod(qz));\n    LOG_IF(FATAL, std::fabs(1.0 - quat_coeffs.norm()) > kNormTolerance)\n      << \"Invalid quaternion with norm: \" << quat_coeffs.norm();\n    quat_coeffs.normalize();\n    quaternion = Quaternion(quat_coeffs(0), quat_coeffs(1),\n                            quat_coeffs(2), quat_coeffs(3));\n  } catch(const std::invalid_argument& invalid_argument_exception) {\n    LOG(FATAL) << \"Invalid argument exception. Could not convert '(\" << qw << \", \"\n               << qx << \", \" << qy << \", \" << qz << \")' to aslam::Quaternion.\"\n               << invalid_argument_exception.what();\n  } catch(const std::out_of_range& out_of_range_exception) {\n    LOG(FATAL) << \"Out of range exception. The given tuple '(\" << qw << \", \"\n               << qx << \", \" << qy << \", \" << qz << \")' does not seem to fit the definition \"\n               << \"of an aslam::Quaternion!\" << out_of_range_exception.what();\n  } catch(const std::exception& exception) {\n    LOG(FATAL) << \"Conversion of the given tuple '(\" << qw << \", \"\n               << qx << \", \" << qy << \", \" << qz << \")' to aslam::Quaternion \"\n               << \"failed. \" << exception.what();\n  }\n  return quaternion;\n}\n\ninline int64_t convertStringToLongLong(const std::string& number_as_string) {\n  CHECK(!number_as_string.empty());\n  int64_t number_as_longlong = 0;\n  try {\n    number_as_longlong = std::stoll(number_as_string);\n  } catch(const std::invalid_argument& invalid_argument_exception) {\n    LOG(FATAL) << \"Invalid argument exception. Could not convert '\" << number_as_string <<\n        \"' to a longlong. \" << invalid_argument_exception.what();\n  } catch(const std::out_of_range& out_of_range_exception) {\n    LOG(FATAL) << \"Out of range exception. The given number '\" << number_as_string <<\n        \"' does not seem to fit into a longlong! \" << out_of_range_exception.what();\n  } catch(const std::exception& exception) {\n    LOG(FATAL) << \"Conversion of the given number '\" << number_as_string <<\n            \"' to a longlong failed. \" << exception.what();\n  }\n  return number_as_longlong;\n}\n\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/homography.h",
    "content": "/*\n * homography.cpp\n * Adaptation of PTAM-GPL HomographyInit class.\n * https://github.com/Oxford-PTAM/PTAM-GPL\n * Licence: GPLv3\n * Copyright 2008 Isis Innovation Limited\n *\n *  Created on: Sep 2, 2012\n *      by: cforster\n *\n * This class implements the homography decomposition of Faugeras and Lustman's\n * 1988 tech report. Code converted to Eigen from PTAM.\n *\n */\n\n#ifndef VIKIT_HOMOGRAPHY_H_\n#define VIKIT_HOMOGRAPHY_H_\n\n#include <vector>\n#include <Eigen/Core>\n\nnamespace vk {\n\nusing BearingVector = Eigen::Vector3d;\nusing Bearings = Eigen::Matrix<double, 3, Eigen::Dynamic, Eigen::ColMajor>;\n\nstruct Homography\n{\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n\n  Eigen::Vector3d t_cur_ref;\n  Eigen::Matrix3d R_cur_ref;\n  Eigen::Vector3d n_cur;\n  double score;\n  Homography()\n    : t_cur_ref()\n    , R_cur_ref()\n    , n_cur()\n    , score(0.0)\n  {}\n};\n\n/// Estimates Homography from corresponding feature bearing vectors.\n/// Score of returned homography is set to the number of inliers.\nHomography estimateHomography(\n    const Bearings& f_cur,\n    const Bearings& f_ref,\n    const double focal_length,\n    const double reproj_error_thresh,\n    const size_t min_num_inliers);\n\n} // namespace vk\n\n#endif // VIKIT_HOMOGRAPHY_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/homography_decomp.h",
    "content": "/*M///////////////////////////////////////////////////////////////////////////////////////\n //\n // This is a homography decomposition implementation contributed to OpenCV\n // by Samson Yilma. It implements the homography decomposition algorithm\n // descriped in the research report:\n // Malis, E and Vargas, M, \"Deeper understanding of the homography decomposition\n // for vision-based control\", Research Report 6303, INRIA (2007)\n //\n //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.\n //\n //  By downloading, copying, installing or using the software you agree to this license.\n //  If you do not agree to this license, do not download, install,\n //  copy or use the software.\n //\n //\n //                           License Agreement\n //                For Open Source Computer Vision Library\n //\n // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved.\n //\n // Third party copyrights are property of their respective owners.\n //\n // Redistribution and use in source and binary forms, with or without modification,\n // are permitted provided that the following conditions are met:\n //\n //   * Redistribution's of source code must retain the above copyright notice,\n //     this list of conditions and the following disclaimer.\n //\n //   * Redistribution's in binary form must reproduce the above copyright notice,\n //     this list of conditions and the following disclaimer in the documentation\n //     and/or other materials provided with the distribution.\n //\n //   * The name of the copyright holders may not be used to endorse or promote products\n //     derived from this software without specific prior written permission.\n //\n // This software is provided by the copyright holders and contributors \"as is\" and\n // any express or implied warranties, including, but not limited to, the implied\n // warranties of merchantability and fitness for a particular purpose are disclaimed.\n // In no event shall the Intel Corporation or contributors be liable for any direct,\n // indirect, incidental, special, exemplary, or consequential damages\n // (including, but not limited to, procurement of substitute goods or services;\n // loss of use, data, or profits; or business interruption) however caused\n // and on any theory of liability, whether in contract, strict liability,\n // or tort (including negligence or otherwise) arising in any way out of\n // the use of this software, even if advised of the possibility of such damage.\n //\n //M*/\n\n#include <memory>\n#include <opencv2/core/core.hpp>\n\nnamespace cv\n{\n\nnamespace HomographyDecomposition\n{\n\n//struct to hold solutions of homography decomposition\ntypedef struct _CameraMotion {\n    cv::Matx33d R; //!< rotation matrix\n    cv::Vec3d n; //!< normal of the plane the camera is looking at\n    cv::Vec3d t; //!< translation vector\n} CameraMotion;\n\ninline int signd(const double x)\n{\n    return ( x >= 0 ? 1 : -1 );\n}\n\nclass HomographyDecomp {\n\npublic:\n    HomographyDecomp() {}\n    virtual ~HomographyDecomp() {}\n    virtual void decomposeHomography(const cv::Matx33d& H, const cv::Matx33d& K,\n                                     std::vector<CameraMotion>& camMotions);\n    bool isRotationValid(const cv::Matx33d& R,  const double epsilon=0.01);\n\nprotected:\n    bool passesSameSideOfPlaneConstraint(CameraMotion& motion);\n    virtual void decompose(std::vector<CameraMotion>& camMotions) = 0;\n    const cv::Matx33d& getHnorm() const {\n        return _Hnorm;\n    }\n\nprivate:\n    cv::Matx33d normalize(const cv::Matx33d& H, const cv::Matx33d& K);\n    void removeScale();\n    cv::Matx33d _Hnorm;\n};\n\nclass HomographyDecompZhang : public HomographyDecomp {\n\npublic:\n    HomographyDecompZhang():HomographyDecomp() {}\n    virtual ~HomographyDecompZhang() {}\n\nprivate:\n    virtual void decompose(std::vector<CameraMotion>& camMotions);\n    bool findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion);\n};\n\nclass HomographyDecompInria : public HomographyDecomp {\n\npublic:\n    HomographyDecompInria():HomographyDecomp() {}\n    virtual ~HomographyDecompInria() {}\n\nprivate:\n    virtual void decompose(std::vector<CameraMotion>& camMotions);\n    double oppositeOfMinor(const cv::Matx33d& M, const int row, const int col);\n    void findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R);\n};\n\n// normalizes homography with intrinsic camera parameters\nMatx33d HomographyDecomp::normalize(const Matx33d& H, const Matx33d& K)\n{\n    return K.inv() * H * K;\n}\n\nvoid HomographyDecomp::removeScale()\n{\n    Mat W;\n    SVD::compute(_Hnorm, W);\n    _Hnorm = _Hnorm * (1.0/W.at<double>(1));\n}\n\n/*! This checks that the input is a pure rotation matrix 'm'.\n * The conditions for this are: R' * R = I and det(R) = 1 (proper rotation matrix)\n */\nbool HomographyDecomp::isRotationValid(const Matx33d& R, const double epsilon)\n{\n    Matx33d RtR = R.t() * R;\n    Matx33d I(1,0,0, 0,1,0, 0,0,1);\n    if (norm(RtR, I, NORM_INF) > epsilon)\n        return false;\n    return (fabs(determinant(R) - 1.0) < epsilon);\n}\n\nbool HomographyDecomp::passesSameSideOfPlaneConstraint(CameraMotion& motion)\n{\n    typedef Matx<double, 1, 1> Matx11d;\n    Matx31d t = Matx31d(motion.t);\n    Matx31d n = Matx31d(motion.n);\n    Matx11d proj = n.t() * motion.R.t() * t;\n    if ( (1 + proj(0, 0) ) <= 0 )\n        return false;\n    return true;\n}\n\n//!main routine to decompose homography\nvoid HomographyDecomp::decomposeHomography(const Matx33d& H, const cv::Matx33d& K,\n                                           std::vector<CameraMotion>& camMotions)\n{\n    //normalize homography matrix with intrinsic camera matrix\n    _Hnorm = normalize(H, K);\n    //remove scale of the normalized homography\n    removeScale();\n    //apply decomposition\n    decompose(camMotions);\n}\n\n/* function computes R&t from tstar, and plane normal(n) using\n R = H * inv(I + tstar*transpose(n) );\n t = R * tstar;\n returns true if computed R&t is a valid solution\n */\nbool HomographyDecompZhang::findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion)\n{\n    Matx31d tstar_m = Mat(tstar);\n    Matx31d n_m = Mat(n);\n    Matx33d temp = tstar_m * n_m.t();\n    temp(0, 0) += 1.0;\n    temp(1, 1) += 1.0;\n    temp(2, 2) += 1.0;\n    motion.R = getHnorm() * temp.inv();\n    motion.t = motion.R * tstar;\n    motion.n = n;\n    return passesSameSideOfPlaneConstraint(motion);\n}\n\nvoid HomographyDecompZhang::decompose(std::vector<CameraMotion>& camMotions)\n{\n    Mat W, U, Vt;\n    SVD::compute(getHnorm(), W, U, Vt);\n    double lambda1=W.at<double>(0);\n    double lambda3=W.at<double>(2);\n    double lambda1m3 =  (lambda1-lambda3);\n    double lambda1m3_2 = lambda1m3*lambda1m3;\n    double lambda1t3 = lambda1*lambda3;\n\n    double t1 = 1.0/(2.0*lambda1t3);\n    double t2 = sqrt(1.0+4.0*lambda1t3/lambda1m3_2);\n    double t12 = t1*t2;\n\n    double e1 = -t1 + t12; //t1*(-1.0f + t2 );\n    double e3 = -t1 - t12; //t1*(-1.0f - t2);\n    double e1_2 = e1*e1;\n    double e3_2 = e3*e3;\n\n    double nv1p = sqrt(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0);\n    double nv3p = sqrt(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0);\n    double v1p[3], v3p[3];\n\n    v1p[0]=Vt.at<double>(0)*nv1p, v1p[1]=Vt.at<double>(1)*nv1p, v1p[2]=Vt.at<double>(2)*nv1p;\n    v3p[0]=Vt.at<double>(6)*nv3p, v3p[1]=Vt.at<double>(7)*nv3p, v3p[2]=Vt.at<double>(8)*nv3p;\n\n    /*The eight solutions are\n     (A): tstar = +- (v1p - v3p)/(e1 -e3), n = +- (e1*v3p - e3*v1p)/(e1-e3)\n     (B): tstar = +- (v1p + v3p)/(e1 -e3), n = +- (e1*v3p + e3*v1p)/(e1-e3)\n     */\n    double v1pmv3p[3], v1ppv3p[3];\n    double e1v3me3v1[3], e1v3pe3v1[3];\n    double inv_e1me3 = 1.0/(e1-e3);\n\n    for(int kk=0;kk<3;++kk){\n        v1pmv3p[kk] = v1p[kk]-v3p[kk];\n        v1ppv3p[kk] = v1p[kk]+v3p[kk];\n    }\n\n    for(int kk=0; kk<3; ++kk){\n        double e1v3 = e1*v3p[kk];\n        double e3v1=e3*v1p[kk];\n        e1v3me3v1[kk] = e1v3-e3v1;\n        e1v3pe3v1[kk] = e1v3+e3v1;\n    }\n\n    Vec3d tstar_p, tstar_n;\n    Vec3d n_p, n_n;\n\n    ///Solution group A\n    for(int kk=0; kk<3; ++kk) {\n        tstar_p[kk] = v1pmv3p[kk]*inv_e1me3;\n        tstar_n[kk] = -tstar_p[kk];\n        n_p[kk] = e1v3me3v1[kk]*inv_e1me3;\n        n_n[kk] = -n_p[kk];\n    }\n\n    CameraMotion cmotion;\n    //(A) Four different combinations for solution A\n    // (i)  (+, +)\n    if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (ii)  (+, -)\n    if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (iii)  (-, +)\n    if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (iv)  (-, -)\n    if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion))\n        camMotions.push_back(cmotion);\n    //////////////////////////////////////////////////////////////////\n    ///Solution group B\n    for(int kk=0;kk<3;++kk){\n        tstar_p[kk] = v1ppv3p[kk]*inv_e1me3;\n        tstar_n[kk] = -tstar_p[kk];\n        n_p[kk] = e1v3pe3v1[kk]*inv_e1me3;\n        n_n[kk] = -n_p[kk];\n    }\n\n    //(B) Four different combinations for solution B\n    // (i)  (+, +)\n    if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (ii)  (+, -)\n    if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (iii)  (-, +)\n    if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion))\n        camMotions.push_back(cmotion);\n\n    // (iv)  (-, -)\n    if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion))\n        camMotions.push_back(cmotion);\n}\n\ndouble HomographyDecompInria::oppositeOfMinor(const Matx33d& M, const int row, const int col)\n{\n    int x1 = col == 0 ? 1 : 0;\n    int x2 = col == 2 ? 1 : 2;\n    int y1 = row == 0 ? 1 : 0;\n    int y2 = row == 2 ? 1 : 2;\n\n    return (M(y1, x2) * M(y2, x1) - M(y1, x1) * M(y2, x2));\n}\n\n//computes R = H( I - (2/v)*te_star*ne_t )\nvoid HomographyDecompInria::findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R)\n{\n    Matx31d tstar_m = Matx31d(tstar);\n    Matx31d n_m = Matx31d(n);\n    Matx33d I(1.0, 0.0, 0.0,\n              0.0, 1.0, 0.0,\n              0.0, 0.0, 1.0);\n\n    R = getHnorm() * (I - (2/v) * tstar_m * n_m.t() );\n}\n\nvoid HomographyDecompInria::decompose(std::vector<CameraMotion>& camMotions)\n{\n    const double epsilon = 0.001;\n    Matx33d S;\n\n    //S = H'H - I\n    S = getHnorm().t() * getHnorm();\n    S(0, 0) -= 1.0;\n    S(1, 1) -= 1.0;\n    S(2, 2) -= 1.0;\n\n    //check if H is rotation matrix\n    if( norm(S, NORM_INF) < epsilon) {\n        CameraMotion motion;\n        motion.R = Matx33d(getHnorm());\n        motion.t = Vec3d(0, 0, 0);\n        motion.n = Vec3d(0, 0, 0);\n        camMotions.push_back(motion);\n        return;\n    }\n\n    //! Compute nvectors\n    Vec3d npa, npb;\n\n    double M00 = oppositeOfMinor(S, 0, 0);\n    double M11 = oppositeOfMinor(S, 1, 1);\n    double M22 = oppositeOfMinor(S, 2, 2);\n\n    double rtM00 = sqrt(M00);\n    double rtM11 = sqrt(M11);\n    double rtM22 = sqrt(M22);\n\n    double M01 = oppositeOfMinor(S, 0, 1);\n    double M12 = oppositeOfMinor(S, 1, 2);\n    double M02 = oppositeOfMinor(S, 0, 2);\n\n    int e12 = signd(M12);\n    int e02 = signd(M02);\n    int e01 = signd(M01);\n\n    double nS00 = std::abs(S(0, 0));\n    double nS11 = std::abs(S(1, 1));\n    double nS22 = std::abs(S(2, 2));\n\n    //find max( |Sii| ), i=0, 1, 2\n    int indx = 0;\n    if(nS00 < nS11){\n        indx = 1;\n        if( nS11 < nS22 )\n            indx = 2;\n    }\n    else {\n        if(nS00 < nS22 )\n            indx = 2;\n    }\n\n    switch (indx) {\n        case 0:\n            npa[0] = S(0, 0),               npb[0] = S(0, 0);\n            npa[1] = S(0, 1) + rtM22,       npb[1] = S(0, 1) - rtM22;\n            npa[2] = S(0, 2) + e12 * rtM11, npb[2] = S(0, 2) - e12 * rtM11;\n            break;\n        case 1:\n            npa[0] = S(0, 1) + rtM22,       npb[0] = S(0, 1) - rtM22;\n            npa[1] = S(1, 1),               npb[1] = S(1, 1);\n            npa[2] = S(1, 2) - e02 * rtM00, npb[2] = S(1, 2) + e02 * rtM00;\n            break;\n        case 2:\n            npa[0] = S(0, 2) + e01 * rtM11, npb[0] = S(0, 2) - e01 * rtM11;\n            npa[1] = S(1, 2) + rtM00,       npb[1] = S(1, 2) - rtM00;\n            npa[2] = S(2, 2),               npb[2] = S(2, 2);\n            break;\n        default:\n            break;\n    }\n\n    double traceS = S(0, 0) + S(1, 1) + S(2, 2);\n    double v = 2.0 * sqrt(1 + traceS - M00 - M11 - M22);\n\n    double ESii = signd(S(indx, indx)) ;\n    double r_2 = 2 + traceS + v;\n    double nt_2 = 2 + traceS - v;\n\n    double r = sqrt(r_2);\n    double n_t = sqrt(nt_2);\n\n    Vec3d na = npa / norm(npa);\n    Vec3d nb = npb / norm(npb);\n\n    double half_nt = 0.5 * n_t;\n    double esii_t_r = ESii * r;\n\n    Vec3d ta_star = half_nt * (esii_t_r * nb - n_t * na);\n    Vec3d tb_star = half_nt * (esii_t_r * na - n_t * nb);\n\n    camMotions.resize(4);\n\n    Matx33d Ra, Rb;\n    Vec3d ta, tb;\n\n    //Ra, ta, na\n    findRmatFrom_tstar_n(ta_star, na, v, Ra);\n    ta = Ra * ta_star;\n\n    camMotions[0].R = Ra;\n    camMotions[0].t = ta;\n    camMotions[0].n = na;\n\n    //Ra, -ta, -na\n    camMotions[1].R = Ra;\n    camMotions[1].t = -ta;\n    camMotions[1].n = -na;\n\n    //Rb, tb, nb\n    findRmatFrom_tstar_n(tb_star, nb, v, Rb);\n    tb = Rb * tb_star;\n\n    camMotions[2].R = Rb;\n    camMotions[2].t = tb;\n    camMotions[2].n = nb;\n\n    //Rb, -tb, -nb\n    camMotions[3].R = Rb;\n    camMotions[3].t = -tb;\n    camMotions[3].n = -nb;\n}\n\n} //namespace HomographyDecomposition\n\n// function decomposes image-to-image homography to rotation and translation matrices\nint decomposeHomographyMat(InputArray _H,\n                       InputArray _K,\n                       OutputArrayOfArrays _rotations,\n                       OutputArrayOfArrays _translations,\n                       OutputArrayOfArrays _normals)\n{\n    using namespace std;\n    using namespace HomographyDecomposition;\n\n    Mat H = _H.getMat().reshape(1, 3);\n    CV_Assert(H.cols == 3 && H.rows == 3);\n\n    Mat K = _K.getMat().reshape(1, 3);\n    CV_Assert(K.cols == 3 && K.rows == 3);\n\n    unique_ptr<HomographyDecomp> hdecomp(new HomographyDecompInria);\n\n    vector<CameraMotion> motions;\n    hdecomp->decomposeHomography(H, K, motions);\n\n    int nsols = static_cast<int>(motions.size());\n    int depth = CV_64F; //double precision matrices used in CameraMotion struct\n\n    if (_rotations.needed()) {\n        _rotations.create(nsols, 1, depth);\n        for (int k = 0; k < nsols; ++k ) {\n            _rotations.getMatRef(k) = Mat(motions[k].R);\n        }\n    }\n\n    if (_translations.needed()) {\n        _translations.create(nsols, 1, depth);\n        for (int k = 0; k < nsols; ++k ) {\n            _translations.getMatRef(k) = Mat(motions[k].t);\n        }\n    }\n\n    if (_normals.needed()) {\n        _normals.create(nsols, 1, depth);\n        for (int k = 0; k < nsols; ++k ) {\n            _normals.getMatRef(k) = Mat(motions[k].n);\n        }\n    }\n\n    return nsols;\n}\n\n} //namespace cv\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/math_utils.h",
    "content": "#pragma once\n\n#include <cstdlib> // size_t, fabs\n#define _USE_MATH_DEFINES // for M_PI\n#include <cmath>   // sin, cos\n#include <Eigen/Core>\n#include <Eigen/StdVector>\n#include <kindr/minimal/quat-transformation.h>\n\nnamespace vk {\n\nusing Transformation = kindr::minimal::QuatTransformation;\nusing Quaternion = kindr::minimal::RotationQuaternion;\n\nusing Bearings = Eigen::Matrix<double, 3, Eigen::Dynamic, Eigen::ColMajor>;\n\nusing std::size_t;\nusing std::uint8_t;\n\n//TODO(cfo) template, take eigen::Ref, and work with minkindr trafo\nEigen::Vector3d triangulateFeatureNonLin(\n    const Eigen::Matrix3d& R,\n    const Eigen::Vector3d& t,\n    const Eigen::Vector3d& feature1,\n    const Eigen::Vector3d& feature2);\n\n/// Assumes the bearing vectors f_c and f_r are on the epipolar plane, i.e.\n/// perfect triangulation without noise!\nbool depthFromTriangulationExact(\n    const Eigen::Matrix3d& R_r_c,\n    const Eigen::Vector3d& t_r_c,\n    const Eigen::Vector3d& f_r,\n    const Eigen::Vector3d& f_c,\n    double& depth_in_r,\n    double& depth_in_c);\n\ndouble reprojError(\n    const Eigen::Vector3d& f1,\n    const Eigen::Vector3d& f2,\n    double error_multiplier2);\n\ndouble computeInliers(\n    const Bearings& features1, ///< c1\n    const Bearings& features2, ///< c2\n    const Eigen::Matrix3d& R, ///< R_c1_c2\n    const Eigen::Vector3d& t, ///< c1_t\n    const double reproj_thresh,\n    double error_multiplier2,\n    Bearings& xyz_vec, ///< in frame c1\n    std::vector<int>& inliers,\n    std::vector<int>& outliers\n);\n\nvoid computeInliersOneView(\n    const std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> >& feature_sphere_vec,\n    const std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> >& xyz_vec,\n    const Eigen::Matrix3d &R,\n    const Eigen::Vector3d &t,\n    const double reproj_thresh,\n    const double error_multiplier2,\n    std::vector<int>& inliers,\n    std::vector<int>& outliers);\n\n/// Direct Cosine Matrix to Roll Pitch Yaw\nEigen::Vector3d dcm2rpy(const Eigen::Matrix3d &R);\n\n/// Roll Pitch Yaw to Direct Cosine Matrix\nEigen::Matrix3d rpy2dcm(const Eigen::Vector3d &rpy);\n\n/// Angle Axis parametrization to Quaternion\nEigen::Quaterniond angax2quat(const Eigen::Vector3d& n, const double& angle);\n\n/// Angle Axis parametrization to Matrix representation\nEigen::Matrix3d angax2dcm(const Eigen::Vector3d& n, const double& angle);\n\n/// Spherical linear interpolation. t should be in [0,1]\nQuaternion slerp(const Quaternion& R0, const Quaternion& R1, double t);\n\n/// Sampsonus score\ndouble sampsonDistance(\n    const Eigen::Vector3d& f_cur,\n    const Eigen::Matrix3d& E_cur_ref,\n    const Eigen::Vector3d& f_ref);\n\ninline Eigen::Matrix3d skew(const Eigen::Vector3d& v)\n{\n  Eigen::Matrix3d v_sqew;\n  v_sqew << 0, -v[2], v[1],\n            v[2], 0, -v[0],\n            -v[1], v[0], 0;\n  return v_sqew;\n}\n\n/// From GTSAM\ninline Eigen::Matrix3d rightJacobianExpMapSO3(const Eigen::Vector3d& x)\n{\n  // x is the axis-angle representation (exponential coordinates) for a rotation\n  const double normx = x.norm(); // rotation angle\n  Eigen::Matrix3d Jr;\n  if (normx < 10e-8){\n    Jr = Eigen::Matrix3d::Identity();\n  }\n  else{\n    const Eigen::Matrix3d X = vk::skew(x); // element of Lie algebra so(3): X = x^\n    Jr = Eigen::Matrix3d::Identity() - ((1-cos(normx))/(normx*normx)) * X +\n        ((normx-sin(normx))/(normx*normx*normx)) * X * X; // right Jacobian\n  }\n  return Jr;\n}\n\n/// From GTSAM\ninline Eigen::Matrix3d rightJacobianExpMapSO3inverse(const Eigen::Vector3d& x)\n{\n  // x is the axis-angle representation (exponential coordinates) for a rotation\n  const double normx = x.norm(); // rotation angle\n  Eigen::Matrix3d Jrinv;\n  if (normx < 10e-8)\n  {\n    Jrinv = Eigen::Matrix3d::Identity();\n  }\n  else\n  {\n    const Eigen::Matrix3d X = vk::skew(x); // element of Lie algebra so(3): X = x^\n    Jrinv = Eigen::Matrix3d::Identity() +\n        0.5 * X + (1/(normx*normx) - (1+cos(normx))/(2*normx * sin(normx))   ) * X * X;\n  }\n  return Jrinv;\n}\n\ninline double norm_max(const Eigen::VectorXd & v)\n{\n  double max = -1;\n  for (int i=0; i<v.size(); i++)\n  {\n    double abs = std::fabs(v[i]);\n    if(abs>max){\n      max = abs;\n    }\n  }\n  return max;\n}\n\ntemplate<typename Derived>\nEigen::Matrix<typename Derived::Scalar, 2, 1> project2(const Eigen::MatrixBase<Derived>& v)\n{\n  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(Derived, 3, 1);\n  return v.template head<2>() / v(2);\n}\n\ninline Eigen::Vector3d unproject2d(const Eigen::Vector2d& v)\n{\n  return Eigen::Vector3d(v[0], v[1], 1.0);\n}\n\ninline Eigen::Vector3d project3d(const Eigen::Vector4d& v)\n{\n  return v.head<3>()/v[3];\n}\n\ninline Eigen::Vector4d unproject3d(const Eigen::Vector3d& v)\n{\n  return Eigen::Vector4d(v[0], v[1], v[2], 1.0);\n}\n\ntemplate<class T>\nT getMedian(std::vector<T>& data_vec)\n{\n  assert(!data_vec.empty());\n  typename std::vector<T>::iterator it = data_vec.begin()+std::floor(data_vec.size()/2);\n  std::nth_element(data_vec.begin(), it, data_vec.end());\n  return *it;\n}\n\ninline double pyrFromZero_d(double x_0, int level)\n{\n  return x_0/(1<<level); // = 1 / 2^level\n}\n\ninline Eigen::Vector2d pyrFromZero_2d(const Eigen::Vector2d& uv_0, int level)\n{\n  return Eigen::Vector2d(pyrFromZero_d(uv_0[0], level),\n                         pyrFromZero_d(uv_0[1], level));\n}\n\ntemplate<class T>\ninline T normPdf(const T x, const T mean, const T sigma)\n{\n  T exponent = x - mean;\n  exponent *= -exponent;\n  exponent /= 2 * sigma * sigma;\n  T result = std::exp(exponent);\n  result /= sigma * std::sqrt(2 * M_PI);\n  return result;\n}\n\n/// Frame jacobian for projection of 3D point in (f)rame coordinate to\n/// unit plane coordinates uv (focal length = 1).\ninline void jacobianFrame_xyz2uv(\n    const Eigen::Vector3d& xyz_in_f,\n    Eigen::Matrix<double,2,6>& J)\n{\n  const double x = xyz_in_f[0];\n  const double y = xyz_in_f[1];\n  const double z_inv = 1./xyz_in_f[2];\n  const double z_inv_2 = z_inv*z_inv;\n  J(0,0) = -z_inv;              // -1/z\n  J(0,1) = 0.0;                 // 0\n  J(0,2) = x*z_inv_2;           // x/z^2\n  J(0,3) = y*J(0,2);            // x*y/z^2\n  J(0,4) = -(1.0 + x*J(0,2));   // -(1.0 + x^2/z^2)\n  J(0,5) = y*z_inv;             // y/z\n  J(1,0) = 0.0;                 // 0\n  J(1,1) = -z_inv;              // -1/z\n  J(1,2) = y*z_inv_2;           // y/z^2\n  J(1,3) = 1.0 + y*J(1,2);      // 1.0 + y^2/z^2\n  J(1,4) = -J(0,3);             // -x*y/z^2\n  J(1,5) = -x*z_inv;            // x/z\n}\n\n/// Jacobian of point projection on unit plane (focal length = 1) in frame (f).\ninline void jacobianPoint_xyz2uv(\n    const Eigen::Vector3d& p_in_f,\n    const Eigen::Matrix3d& R_f_w,\n    Eigen::Matrix<double,2,3>& J)\n{\n  const double z_inv = 1.0/p_in_f[2];\n  const double z_inv_sq = z_inv*z_inv;\n  J(0,0) = z_inv;\n  J(0,1) = 0.0;\n  J(0,2) = -p_in_f[0] * z_inv_sq;\n  J(1,0) = 0.0;\n  J(1,1) = z_inv;\n  J(1,2) = -p_in_f[1] * z_inv_sq;\n  J = - J * R_f_w;\n}\n\n} // end namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/path_utils.h",
    "content": "#pragma once\n\n#include <string>\n#include <iostream>\n\nnamespace vk {\nnamespace path_utils {\n\n// usage: getFileDir(__FILE__)\ninline std::string getBaseName(const std::string& filename)\n{\n  const std::string separator = \"/\";\n  std::size_t last_separator = filename.find_last_of(separator);\n  if(last_separator == std::string::npos)\n  {\n    return std::string();\n  }\n  return filename.substr(0, last_separator);\n}\n\n} // namespace path_utils\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/performance_monitor.h",
    "content": "/*\n * performance_monitor.h\n *\n *  Created on: Aug 26, 2011\n *      Author: Christian Forster\n */\n\n#ifndef VIKIT_PERFORMANCE_MONITOR_H\n#define VIKIT_PERFORMANCE_MONITOR_H\n\n#include <map>\n#include <string>\n#include <iostream>\n#include <fstream>\n#include <vikit/timer.h>\n\nnamespace vk\n{\n\nstruct LogItem\n{\n  double data;\n  bool   set;\n};\n\nclass PerformanceMonitor\n{\npublic:\n  PerformanceMonitor();\n  ~PerformanceMonitor();\n  void init(const std::string& trace_name, const std::string& trace_dir);\n  void addTimer(const std::string& name);\n  void addLog(const std::string& name);\n  void writeToFile();\n  void startTimer(const std::string& name);\n  void stopTimer(const std::string& name);\n  double getTime(const std::string& name) const;\n  void log(const std::string& name, double data);\n\nprivate:\n  std::map<std::string, Timer>      timers_;\n  std::map<std::string, LogItem>    logs_;\n  std::string                       trace_name_;        //<! name of the thread that started the performance monitor\n  std::string                       trace_dir_;         //<! directory where the logfiles are saved\n  std::ofstream                     ofs_;\n\n  void trace();\n  void traceHeader();\n};\n\n} // namespace vk\n\n#endif // VIKIT_PERFORMANCE_MONITOR_H\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/ringbuffer.h",
    "content": "// This file is part of VisionTools.\n//\n// Copyright 2011 Hauke Strasdat (Imperial College London)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights  to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n#ifndef VIKIT_RING_BUFFER_H\n#define VIKIT_RING_BUFFER_H\n\n#include <vector>\n#include <cmath>\n#include <cassert>\n#include <numeric>\n#include <algorithm>\n\nnamespace vk\n{\n\ntemplate<typename T>\nclass RingBuffer\n{\npublic:\n  RingBuffer(int size);\n  RingBuffer(int size, const T& initial_value);\n  ~RingBuffer() = default;\n\n  void push_back(const T& elem);\n  bool empty() const;\n  void clear();\n  T get(int i);\n  T getSum() const;\n  T getMean() const;\n  T getMedian();\n  int size() const { return num_elem_; }\n\nprivate:\n  std::vector<T> arr_;\n  int begin_ = 0;\n  int end_ = -1;\n  int num_elem_ = 0;\n  int arr_size_;\n};\n\ntemplate <class T>\nRingBuffer<T>::RingBuffer(int size)\n  : arr_(size)\n  , arr_size_(size)\n{}\n\ntemplate <class T>\nRingBuffer<T>::RingBuffer(int size, const T& initial_value)\n  : arr_(size, initial_value)\n  , arr_size_(size)\n{}\n\ntemplate <class T>\nbool RingBuffer<T>::empty() const\n{\n  return (num_elem_ == 0);\n}\n\ntemplate <class T>\nvoid RingBuffer<T>::clear()\n{\n  begin_ = 0;\n  end_ = -1;\n  num_elem_ = 0;\n}\n\ntemplate <class T>\nvoid RingBuffer<T>::push_back(const T & elem)\n{\n  if (num_elem_<arr_size_)\n  {\n    end_++;\n    arr_[end_] = elem;\n    num_elem_++;\n  }\n  else{\n    end_ = (end_+1)%arr_size_;\n    begin_ = (begin_+1)%arr_size_;\n    arr_[end_] = elem;\n  }\n}\n\ntemplate <class T>\nT RingBuffer<T>::get(int i)\n{\n  assert(i<num_elem_);\n  return arr_[(begin_+i)%arr_size_];\n}\n\ntemplate <class T>\nT RingBuffer<T>::getSum() const\n{\n  T sum=0;\n  for(int i=0; i<num_elem_; ++i)\n    sum+=arr_[i];\n  return sum;\n}\n\ntemplate <class T>\nT RingBuffer<T>::getMean() const\n{\n  if(num_elem_ == 0)\n    return 0;\n  return getSum()/num_elem_;\n}\n\ntemplate <class T>\nT RingBuffer<T>::getMedian()\n{\n  if(num_elem_ == 0)\n    return 0;\n  typename std::vector<T>::iterator it = arr_.begin()+std::floor(num_elem_/2);\n  std::nth_element(arr_.begin(), it, arr_.end());\n  return *it;\n}\n\n} // end namespace vk\n\n#endif // VIKIT_RING_BUFFER_H\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/sample.h",
    "content": "#ifndef VIKIT_SAMPLE_H_\n#define VIKIT_SAMPLE_H_\n\n#include <random>\n#include <chrono>\n#include <Eigen/Core>\n\nnamespace vk {\n\nclass Sample\n{\npublic:\n  static void setTimeBasedSeed();\n  static int uniform(int from, int to);\n  static double uniform();\n  static double gaussian(double sigma);\n  static std::ranlux24 gen_real;\n  static std::mt19937 gen_int;\n  static Eigen::Vector3d randomDirection3D();\n  static Eigen::Vector2d randomDirection2D();\n};\n\n} // namespace vk\n\n#endif // VIKIT_SAMPLE_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/timer.h",
    "content": "#ifndef VIKIT_TIMER_H\n#define VIKIT_TIMER_H\n\n#include <chrono>\n#include <string>\n#include <sstream>\n#include <iomanip> // std::setw\n#include <ctime>   // std::localtime,\n\nnamespace vk\n{\n\nclass Timer\n{\npublic:\n  typedef std::chrono::high_resolution_clock Clock;\n  typedef std::chrono::time_point<Clock> TimePoint;\n  typedef std::chrono::nanoseconds Nanoseconds;\n  typedef std::chrono::seconds Seconds;\n\n  /// The constructor directly starts the timer.\n  Timer()\n    : start_time_(Clock::now())\n    , duration_(Nanoseconds::zero())\n    , accumulated_(Nanoseconds::zero())\n  {}\n\n  /// Starts the timer\n  inline void start()\n  {\n    start_time_ = Clock::now();\n  }\n\n  /// Resumes the timer. Total time can be obtained with getAccumulated().\n  inline void resume()\n  {\n    start_time_ = Clock::now();\n  }\n\n  /// Returns duration in seconds\n  inline double stop()\n  {\n    const TimePoint end_time(Clock::now());\n    duration_ = std::chrono::duration_cast<Nanoseconds>(end_time - start_time_);\n    accumulated_ += duration_;\n    return static_cast<double>(duration_.count())*1e-9;\n  }\n\n  /// Returns duration of last measurement in seconds\n  inline double getTime() const\n  {\n    return static_cast<double>(duration_.count())*1e-9;\n  }\n\n  /// Returns duration of last measurement in milliseconds\n  inline double getMilliseconds() const\n  {\n    return static_cast<double>(duration_.count())*1e-6;\n  }\n\n  /// Returns duration since the last reset or construction of the timer\n  inline double getAccumulated() const\n  {\n    return static_cast<double>(accumulated_.count())*1e-9;\n  }\n\n  /// Reset the current timer and the accumulated\n  inline void reset()\n  {\n    start_time_ = TimePoint();\n    duration_ = Nanoseconds::zero();\n    accumulated_ = Nanoseconds::zero();\n  }\n\n  /// Get seconds since 1.1.1970\n  static double getCurrentTime()\n  {\n    return static_cast<double>(\n          std::chrono::duration_cast<Nanoseconds>(Clock::now()-TimePoint())\n          .count())*1e-9;\n  }\n\n  /// Get a formated string of the current time, hour, minute and second\n  static std::string getCurrentTimeStr()\n  {\n    std::time_t now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());\n    std::tm* t = std::localtime(&now);\n    if(t == NULL)\n      return std::string(\"ERROR\");\n    std::ostringstream ss;\n    ss << t->tm_year-100 << \"-\"\n       << std::setw(2) << std::setfill('0') << t->tm_mon+1 << \"-\"\n       << std::setw(2) << std::setfill('0') << t->tm_mday << \"_\"\n       << std::setw(2) << std::setfill('0') << t->tm_hour << \"-\"\n       << std::setw(2) << std::setfill('0') << t->tm_min << \"-\"\n       << std::setw(2) << std::setfill('0') << t->tm_sec;\n    return ss.str();\n  }\n\nprivate:\n  TimePoint start_time_;\n  Nanoseconds duration_;\n  Nanoseconds accumulated_;\n};\n\n} // end namespace vk\n\n#endif // VIKIT_TIMER_H\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/user_input_thread.h",
    "content": "#ifndef USER_INPUT_THREAD_H\n#define USER_INPUT_THREAD_H\n\n#include <termios.h>\n#include <thread>\n\nnamespace vk {\n\n/// A class that starts its own thread and listens to the console input. The\n/// console input can then be inquired using the getInput() function.\nclass UserInputThread\n{\npublic:\n  UserInputThread();\n  ~UserInputThread();\n\n  /// Returns the latest acquired user input. Default is set to 0.\n  /// Once this function is called, the input state is reset to the default.\n  char getInput();\n\n  /// Stop the thread\n  void stop();\n\nprivate:\n\n  /// Main loop that waits for new user input\n  void acquireUserInput();\n\n  /// Initialize new terminal i/o settings\n  void initTermios(int echo);\n\n  /// Restore old terminal i/o settings\n  void resetTermios();\n\n  /// Read 1 character - echo defines echo mode\n  int getch_(int echo);\n\n  /// Read 1 character without echo\n  int getch();\n\n  /// Read 1 character with echo\n  int getche();\n\n  bool stop_;\n  std::thread * user_input_thread_;\n  char input_;\n\n  struct termios original_terminal_settings_;\n  struct termios old_terminal_settings_, new_terminal_settings_;\n};\n\n} // end namespace vk\n\n#endif /* USER_INPUT_THREAD_H */\n"
  },
  {
    "path": "svo_vikit/vikit_common/include/vikit/vision.h",
    "content": "/*\n * vision.h\n *\n *  Created on: May 14, 2013\n *      Author: cforster\n */\n\n#ifndef VIKIT_VISION_H_\n#define VIKIT_VISION_H_\n\n#include <Eigen/Core>\n\n#include <opencv2/core/core.hpp>\n\nnamespace vk\n{\n\n/// Check if memory is 8bit aligned.\ninline bool is_aligned8(const void* ptr)\n{\n  return ((reinterpret_cast<size_t>(ptr)) & 0x7) == 0;\n}\n\n/// Check if memory is 16bit aligned.\ninline bool is_aligned16(const void* ptr)\n{\n  return ((reinterpret_cast<size_t>(ptr)) & 0xF) == 0;\n}\n\n//! Return value between 0 and 1\n//! WARNING This function does not check whether the x/y is within the border\ninline float\ninterpolateMat_32f(const cv::Mat& mat, float u, float v)\n{\n  assert(mat.type()==CV_32F);\n  float x = floor(u);\n  float y = floor(v);\n  float subpix_x = u-x;\n  float subpix_y = v-y;\n  float wx0 = 1.0-subpix_x;\n  float wx1 =  subpix_x;\n  float wy0 = 1.0-subpix_y;\n  float wy1 =  subpix_y;\n\n  float val00 = mat.at<float>(y,x);\n  float val10 = mat.at<float>(y,x+1);\n  float val01 = mat.at<float>(y+1,x);\n  float val11 = mat.at<float>(y+1,x+1);\n  return (wx0*wy0)*val00 + (wx1*wy0)*val10 + (wx0*wy1)*val01 + (wx1*wy1)*val11;\n}\n\n//! Return value between 0 and 255\n//! WARNING This function does not check whether the x/y is within the border\ninline float\ninterpolateMat_8u(const cv::Mat& mat, float u, float v)\n{\n  assert(mat.type()==CV_8U);\n  int x = floor(u);\n  int y = floor(v);\n  float subpix_x = u-x;\n  float subpix_y = v-y;\n\n  float w00 = (1.0f-subpix_x)*(1.0f-subpix_y);\n  float w01 = (1.0f-subpix_x)*subpix_y;\n  float w10 = subpix_x*(1.0f-subpix_y);\n  float w11 = 1.0f - w00 - w01 - w10;\n\n  const int stride = mat.step.p[0];\n  unsigned char* ptr = mat.data + y*stride + x;\n  return w00*ptr[0] + w01*ptr[stride] + w10*ptr[1] + w11*ptr[stride+1];\n}\n\nvoid halfSample(const cv::Mat& in, cv::Mat& out);\n\nvoid calcSharrDeriv(const cv::Mat& src, cv::Mat& dst);\n\n#ifdef __SSE2__\n\n/// Used to convert a Kinect depthmap\n/// Code by Christian Kerl DVO, GPL Licence\nvoid convertRawDepthImageSse_16u_to_32f(cv::Mat& depth_16u, cv::Mat& depth_32f, float scale);\n\n#endif\n\n} // namespace vk\n\n#endif // VIKIT_VISION_H_\n"
  },
  {
    "path": "svo_vikit/vikit_common/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>vikit_common</name>\n  <version>0.0.0</version>\n  <description>The vikit_common package</description>\n  <maintainer email=\"forster@ifi.uzh.ch\">cforster</maintainer>\n  <license>RPG</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>cv_bridge</depend>\n  <depend>eigen_catkin</depend>\n  <depend>glog_catkin</depend>\n  <depend>minkindr</depend>\n  <depend>roscpp</depend>\n  <depend>svo_cmake</depend>\n  <depend>yaml-cpp</depend>\n\n  <test_depend>gtest</test_depend>\n</package>\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/homography.cpp",
    "content": "/*\n * homography.cpp\n *\n *  Created on: Sep 2, 2012\n *      by: cforster\n */\n\n#include <glog/logging.h>\n#include <vikit/homography.h>\n#include <vikit/math_utils.h>\n#include <vikit/homography_decomp.h> // copy of homography decomposition in opencv3\n#include <opencv2/core/core.hpp>\n#include <opencv2/calib3d/calib3d.hpp>\n\nnamespace vk {\n\nusing namespace Eigen;\n\nHomography estimateHomography(\n    const Bearings& f_cur,\n    const Bearings& f_ref,\n    const double focal_length,\n    const double reproj_error_thresh,\n    const size_t min_num_inliers)\n{\n  // TODO: too long. split up and write tests\n\n  CHECK_EQ(f_cur.cols(), f_ref.cols());\n  const size_t N = f_cur.cols();\n  const double thresh = reproj_error_thresh/focal_length;\n\n  // compute homography using RANSAC\n  std::vector<cv::Point2f> ref_pts(N), cur_pts(N);\n  for(size_t i=0; i<N; ++i)\n  {\n    const Vector2d& uv_ref(vk::project2(f_ref.col(i)));\n    const Vector2d& uv_cur(vk::project2(f_cur.col(i)));\n    ref_pts[i] = cv::Point2f(uv_ref[0], uv_ref[1]);\n    cur_pts[i] = cv::Point2f(uv_cur[0], uv_cur[1]);\n  }\n  cv::Mat H = cv::findHomography(ref_pts, cur_pts, cv::RANSAC, thresh);\n  Matrix3d H_cur_ref;\n  H_cur_ref << H.at<double>(0,0), H.at<double>(0,1), H.at<double>(0,2),\n               H.at<double>(1,0), H.at<double>(1,1), H.at<double>(1,2),\n               H.at<double>(2,0), H.at<double>(2,1), H.at<double>(2,2);\n\n  // compute number of inliers\n  std::vector<bool> inliers(N);\n  size_t n_inliers = 0;\n  for(size_t i=0; i<N; i++)\n  {\n    const Vector2d uv_cur = vk::project2(H_cur_ref * f_ref.col(i));\n    const Vector2d e = vk::project2(f_cur.col(i)) - uv_cur;\n    inliers[i] = (e.norm() < thresh);\n    n_inliers += inliers[i];\n  }\n\n  VLOG(100) << \"Homography has \" << n_inliers << \" inliers\";\n  if(n_inliers < min_num_inliers)\n  {\n    return Homography(); // return homography with score zero.\n  }\n\n  // compute decomposition\n  cv::Matx33d K(1, 0, 0, 0, 1, 0, 0, 0, 1);\n  std::vector<cv::Mat> rotations;\n  std::vector<cv::Mat> translations;\n  std::vector<cv::Mat> normals;\n  cv::decomposeHomographyMat(H, K, rotations, translations, normals);\n  CHECK_EQ(rotations.size(), 4u);\n\n  // copy in decompositions struct\n  std::vector<Homography> decomp;\n  for(size_t i=0; i<4; ++i)\n  {\n    Homography d;\n    const cv::Mat& t = translations[i];\n    d.t_cur_ref = Vector3d(t.at<double>(0), t.at<double>(1), t.at<double>(2));\n    const cv::Mat& n = normals[i];\n    d.n_cur = Vector3d(n.at<double>(0), n.at<double>(1), n.at<double>(2));\n    const cv::Mat& R = rotations[i];\n    d.R_cur_ref << R.at<double>(0,0), R.at<double>(0,1), R.at<double>(0,2),\n                   R.at<double>(1,0), R.at<double>(1,1), R.at<double>(1,2),\n                   R.at<double>(2,0), R.at<double>(2,1), R.at<double>(2,2);\n    decomp.push_back(d);\n  }\n\n  // check that plane is in front of camera\n  for(Homography& D : decomp)\n  {\n    D.score = 0;\n    for(size_t i=0; i<N; i++)\n    {\n      if(!inliers[i])\n        continue;\n      const double test = f_cur.col(i).dot(D.n_cur);\n      if(test > 0.0)\n        D.score += 1.0;\n    }\n  }\n  std::sort(decomp.begin(), decomp.end(),\n            [&](const Homography& lhs, const Homography& rhs)\n            { return lhs.score > rhs.score; });\n  decomp.resize(2);\n\n  // According to Faugeras and Lustman, ambiguity exists if the two scores are equal\n  // but in practive, better to look at the ratio!\n  if(decomp[1].score/decomp[0].score < 0.9)\n  {\n    decomp.erase(decomp.begin() + 1); // no ambiguity\n  }\n  else\n  {\n    // two-way ambiguity: resolve by sampsonus score of all points.\n    // Sampson error can be roughly thought as the squared distance between a\n    // point x to the corresponding epipolar line x'F\n    const double thresh_squared  = thresh * thresh * 4.0;\n    for(Homography& D : decomp)\n    {\n      D.score = 0.0; // sum of sampsonus score\n      const Matrix3d E_cur_ref = D.R_cur_ref * vk::skew(D.t_cur_ref); // Essential Matrix\n      for(size_t i=0; i<N; ++i)\n      {\n        const double d = vk::sampsonDistance(f_cur.col(i), E_cur_ref, f_ref.col(i));\n        D.score += std::min(d, thresh_squared);\n      }\n    }\n\n    if(decomp[0].score < decomp[1].score)\n      decomp.erase(decomp.begin() + 1);\n    else\n      decomp.erase(decomp.begin());\n  }\n  decomp[0].score = n_inliers;\n  return decomp[0];\n}\n\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/math_utils.cpp",
    "content": "/*\n * math_utils.cpp\n *\n *  Created on: Jul 20, 2012\n *      Author: cforster\n */\n\n#include <vikit/math_utils.h>\n\nnamespace vk {\n\nusing namespace Eigen;\n\nVector3d triangulateFeatureNonLin(\n        const Matrix3d& R,\n        const Vector3d& t,\n        const Vector3d& feature1,\n        const Vector3d& feature2 )\n{\n  Vector3d f2 = R * feature2;\n  Vector2d b;\n  b[0] = t.dot(feature1);\n  b[1] = t.dot(f2);\n  Matrix2d A;\n  A(0,0) = feature1.dot(feature1);\n  A(1,0) = feature1.dot(f2);\n  A(0,1) = -A(1,0);\n  A(1,1) = -f2.dot(f2);\n  Vector2d lambda = A.inverse() * b;\n  Vector3d xm = lambda[0] * feature1;\n  Vector3d xn = t + lambda[1] * f2;\n  return ( xm + xn )/2;\n}\n\nbool depthFromTriangulationExact(\n        const Matrix3d& R_r_c,\n        const Vector3d& t_r_c,\n        const Vector3d& f_r,\n        const Vector3d& f_c,\n        double& depth_in_r,\n        double& depth_in_c)\n{\n  // bearing vectors (f_r, f_c) do not need to be unit length\n  const Vector3d f_c_in_r(R_r_c*f_c);\n  const double a = f_c_in_r.dot(f_r) / t_r_c.dot(f_r);\n  const double b = f_c_in_r.dot(t_r_c);\n  const double denom = (a*b - f_c_in_r.dot(f_c_in_r));\n\n  if(std::fabs(denom) < 0.000001)\n    return false;\n\n  depth_in_c = (b-a*t_r_c.dot(t_r_c)) / denom;\n  depth_in_r = (t_r_c + f_c_in_r*depth_in_c).norm();\n  return true;\n}\n\ndouble reprojError(\n        const Vector3d& f1,\n        const Vector3d& f2,\n        double error_multiplier2)\n{\n  Vector2d e = project2(f1) - project2(f2);\n  return error_multiplier2 * e.norm();\n}\n\ndouble computeInliers(\n    const Bearings& features1, ///< c1\n    const Bearings& features2, ///< c2\n    const Matrix3d& R_12,\n    const Vector3d& t,\n    const double reproj_thresh,\n    double error_multiplier2,\n    Bearings& xyz_vec_in_1,\n    std::vector<int>& inliers,\n    std::vector<int>& outliers)\n{\n  inliers.clear(); inliers.reserve(features1.cols());\n  outliers.clear(); outliers.reserve(features1.cols());\n  xyz_vec_in_1.resize(Eigen::NoChange, features1.cols());\n  double tot_error = 0;\n\n  //triangulate all features and compute reprojection errors and inliers\n  for(int j = 0; j < features1.cols(); ++j)\n  {\n    xyz_vec_in_1.col(j) =\n        triangulateFeatureNonLin(R_12, t, features1.col(j), features2.col(j));\n    double e1 = reprojError(features1.col(j), xyz_vec_in_1.col(j), error_multiplier2);\n    double e2 = reprojError(features2.col(j), R_12.transpose()*(xyz_vec_in_1.col(j)-t), error_multiplier2);\n    if(e1 > reproj_thresh || e2 > reproj_thresh)\n      outliers.push_back(j);\n    else\n    {\n      inliers.push_back(j);\n      tot_error += e1+e2;\n    }\n  }\n  return tot_error;\n}\n\nvoid computeInliersOneView(\n        const std::vector<Vector3d, aligned_allocator<Vector3d> > & feature_sphere_vec,\n        const std::vector<Vector3d, aligned_allocator<Vector3d> > & xyz_vec,\n        const Matrix3d &R,\n        const Vector3d &t,\n        const double reproj_thresh,\n        const double error_multiplier2,\n        std::vector<int>& inliers,\n        std::vector<int>& outliers)\n{\n  inliers.clear(); inliers.reserve(xyz_vec.size());\n  outliers.clear(); outliers.reserve(xyz_vec.size());\n  for(size_t j = 0; j < xyz_vec.size(); j++ )\n  {\n    double e = reprojError(feature_sphere_vec[j],\n                           R.transpose() * ( xyz_vec[j] - t ),\n                           error_multiplier2);\n    if(e < reproj_thresh)\n      inliers.push_back(j);\n    else\n      outliers.push_back(j);\n  }\n}\n\nVector3d dcm2rpy(const Matrix3d &R)\n{\n  Vector3d rpy;\n  rpy[1] = atan2( -R(2,0), sqrt( pow( R(0,0), 2 ) + pow( R(1,0), 2 ) ) );\n  if( std::fabs( rpy[1] - M_PI/2 ) < 0.00001 )\n  {\n    rpy[2] = 0;\n    rpy[0] = -atan2( R(0,1), R(1,1) );\n  }\n  else\n  {\n    if( std::fabs( rpy[1] + M_PI/2 ) < 0.00001 )\n    {\n      rpy[2] = 0;\n      rpy[0] = -atan2( R(0,1), R(1,1) );\n    }\n    else\n    {\n      rpy[2] = atan2( R(1,0)/cos(rpy[1]), R(0,0)/cos(rpy[1]) );\n      rpy[0] = atan2( R(2,1)/cos(rpy[1]), R(2,2)/cos(rpy[1]) );\n    }\n  }\n  return rpy;\n}\n\nMatrix3d rpy2dcm(const Vector3d &rpy)\n{\n  Matrix3d R1;\n  R1(0,0) = 1.0; R1(0,1) = 0.0; R1(0,2) = 0.0;\n  R1(1,0) = 0.0; R1(1,1) = cos(rpy[0]); R1(1,2) = -sin(rpy[0]);\n  R1(2,0) = 0.0; R1(2,1) = -R1(1,2); R1(2,2) = R1(1,1);\n\n  Matrix3d R2;\n  R2(0,0) = cos(rpy[1]); R2(0,1) = 0.0; R2(0,2) = sin(rpy[1]);\n  R2(1,0) = 0.0; R2(1,1) = 1.0; R2(1,2) = 0.0;\n  R2(2,0) = -R2(0,2); R2(2,1) = 0.0; R2(2,2) = R2(0,0);\n\n  Matrix3d R3;\n  R3(0,0) = cos(rpy[2]); R3(0,1) = -sin(rpy[2]); R3(0,2) = 0.0;\n  R3(1,0) = -R3(0,1); R3(1,1) = R3(0,0); R3(1,2) = 0.0;\n  R3(2,0) = 0.0; R3(2,1) = 0.0; R3(2,2) = 1.0;\n\n  return R3 * R2 * R1;\n}\n\nQuaterniond angax2quat(const Vector3d& n, const double& angle)\n{\n  // n must be normalized!\n  double s(sin(angle/2));\n  return Quaterniond( cos(angle/2), n[0]*s, n[1]*s, n[2]*s );\n}\n\nMatrix3d angax2dcm(const Vector3d& n, const double& angle)\n{\n  // n must be normalized\n  Matrix3d sqewn(skew(n));\n  return Matrix3d(Matrix3d::Identity() + sqewn*sin(angle) + sqewn*sqewn*(1-cos(angle)));\n}\n\nQuaternion slerp(const Quaternion& q0, const Quaternion& q1, double t)\n{\n  if(t <= 0.0)\n    return q0;\n  else if(t >= 1.0)\n    return q1;\n\n  return q0*Quaternion::exp(Quaternion::log(q0.inverse()*q1)*t);\n}\n\ndouble sampsonDistance(\n    const Vector3d& f_cur,\n    const Matrix3d& E_cur_ref,\n    const Vector3d& f_ref)\n{\n\n  const double error = f_cur.transpose() * E_cur_ref * f_ref;\n  const Vector3d f_cur_pred = E_cur_ref * f_ref;\n  const Vector3d f_ref_pred = E_cur_ref.transpose() * f_cur;\n  const Vector2d uv_cur = vk::project2(f_cur_pred);\n  const Vector2d uv_ref = vk::project2(f_ref_pred);\n  return (error * error / (uv_cur.dot(uv_cur) + uv_ref.dot(uv_ref)));\n}\n\n} // end namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/performance_monitor.cpp",
    "content": "/*\n * performance_monitor.cpp\n *\n *  Created on: Aug 26, 2011\n *      Author: Christian Forster\n */\n\n#include <vikit/performance_monitor.h>\n#include <stdio.h>\n#include <stdexcept>\n\nnamespace vk\n{\nusing namespace std;\n\nPerformanceMonitor::PerformanceMonitor()\n{}\n\nPerformanceMonitor::~PerformanceMonitor()\n{\n  ofs_.flush();\n  ofs_.close();\n}\n\nvoid PerformanceMonitor::init(\n    const string& trace_name,\n    const string& trace_dir)\n{\n  trace_name_ = trace_name;\n  trace_dir_ = trace_dir;\n  string filename(trace_dir + \"/\" + trace_name + \".csv\");\n  ofs_.open(filename.c_str());\n  if(!ofs_.is_open())\n  {\n    printf(\"Tracefile = %s\\n\", filename.c_str());\n    throw runtime_error(\"Could not open tracefile.\");\n  }\n  traceHeader();\n}\n\nvoid PerformanceMonitor::addTimer(const string& name)\n{\n  timers_.insert(make_pair(name, Timer()));\n}\n\nvoid PerformanceMonitor::addLog(const string& name)\n{\n  logs_.insert(make_pair(name, LogItem()));\n}\n\nvoid PerformanceMonitor::writeToFile()\n{\n  trace();\n\n  for(auto it = timers_.begin(); it!=timers_.end(); ++it)\n    it->second.reset();\n  for(auto it=logs_.begin(); it!=logs_.end(); ++it)\n  {\n    it->second.set = false;\n    it->second.data = -1;\n  }\n}\n\nvoid PerformanceMonitor::startTimer(const string& name)\n{\n  auto t = timers_.find(name);\n  if(t == timers_.end()) {\n    printf(\"Timer = %s\\n\", name.c_str());\n    throw std::runtime_error(\"startTimer: Timer not registered\");\n  }\n  t->second.start();\n}\n\nvoid PerformanceMonitor::stopTimer(const string& name)\n{\n  auto t = timers_.find(name);\n  if(t == timers_.end()) {\n    printf(\"Timer = %s\\n\", name.c_str());\n    throw std::runtime_error(\"stopTimer: Timer not registered\");\n  }\n  t->second.stop();\n}\n\ndouble PerformanceMonitor::getTime(const string& name) const\n{\n  auto t = timers_.find(name);\n  if(t == timers_.end()) {\n    printf(\"Timer = %s\\n\", name.c_str());\n    throw std::runtime_error(\"Timer not registered\");\n  }\n  return t->second.getTime();\n}\n\nvoid PerformanceMonitor::log(const string& name, double data)\n{\n  auto l = logs_.find(name);\n  if(l == logs_.end()) {\n    printf(\"Logger = %s\\n\", name.c_str());\n    throw std::runtime_error(\"Logger not registered\");\n  }\n  l->second.data = data;\n  l->second.set = true;\n}\n\nvoid PerformanceMonitor::trace()\n{\n  //char buffer[128];\n  bool first_value = true;\n  if(!ofs_.is_open())\n    throw std::runtime_error(\"Performance monitor not correctly initialized\");\n  ofs_.precision(15);\n  ofs_.setf(std::ios::fixed, std::ios::floatfield );\n  for(auto it = timers_.begin(); it!=timers_.end(); ++it)\n  {\n    if(first_value) {\n      ofs_ << it->second.getTime();\n      first_value = false;\n    }\n    else\n      ofs_ << \",\" << it->second.getTime();\n  }\n  for(auto it=logs_.begin(); it!=logs_.end(); ++it)\n  {\n    if(first_value) {\n      ofs_ << it->second.data;\n      first_value = false;\n    }\n    else\n      ofs_ << \",\" << it->second.data;\n  }\n  ofs_ << \"\\n\";\n}\n\nvoid PerformanceMonitor::traceHeader()\n{\n  if(!ofs_.is_open())\n    throw std::runtime_error(\"Performance monitor not correctly initialized\");\n  bool first_value = true;\n  for(auto it = timers_.begin(); it!=timers_.end(); ++it)\n  {\n    if(first_value) {\n      ofs_ << it->first;\n      first_value = false;\n    }\n    else\n      ofs_ << \",\" << it->first;\n  }\n  for(auto it=logs_.begin(); it!=logs_.end(); ++it)\n  {\n    if(first_value) {\n      ofs_ << it->first;\n      first_value = false;\n    }\n    else\n      ofs_ << \",\" << it->first;\n  }\n  ofs_ << \"\\n\";\n}\n\n} // namespace vk\n\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/sample.cpp",
    "content": "/*\n * sample.cpp\n *\n *  Created on: May 14, 2013\n *      Author: cforster\n */\n\n#include <vikit/sample.h>\n\nnamespace vk {\n\nstd::ranlux24 Sample::gen_real;\nstd::mt19937 Sample::gen_int;\n\nvoid Sample::setTimeBasedSeed()\n{\n  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();\n  gen_real = std::ranlux24(seed);\n  gen_int = std::mt19937(seed);\n}\n\nint Sample::uniform(int from, int to)\n{\n  std::uniform_int_distribution<int> distribution(from, to);\n  return distribution(gen_int);\n}\n\ndouble Sample::uniform()\n{\n  std::uniform_real_distribution<double> distribution(0.0, 1.0);\n  return distribution(gen_real);\n}\n\ndouble Sample::gaussian(double stddev)\n{\n  std::normal_distribution<double> distribution(0.0, stddev);\n  return distribution(gen_real);\n}\n\nEigen::Vector3d Sample::randomDirection3D()\n{\n  // equal-area projection according to:\n  // https://math.stackexchange.com/questions/44689/how-to-find-a-random-axis-or-unit-vector-in-3d\n  const double z = Sample::uniform()*2.0-1.0;\n  const double t = Sample::uniform()*2.0*M_PI;\n  const double r = std::sqrt(1.0 - z*z);\n  const double x = r*std::cos(t);\n  const double y = r*std::sin(t);\n  return Eigen::Vector3d(x,y,z);\n}\n\nEigen::Vector2d Sample::randomDirection2D()\n{\n  const double theta = Sample::uniform()*2.0*M_PI;\n  return Eigen::Vector2d(std::cos(theta), std::sin(theta));\n}\n\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/user_input_thread.cpp",
    "content": "/*\n * user_input_thread.cpp\n *\n *  Created on: Jun 12, 2013\n *      Author: pizzoli, cforster\n */\n\n#include <stdio.h>\n#include <vikit/user_input_thread.h>\n#include <chrono>\n\nnamespace vk {\n\nUserInputThread::UserInputThread() :\n    stop_(false),\n    input_( (char) 0)\n{\n  tcgetattr(0, &original_terminal_settings_); // save old terminal i/o settings\n  new_terminal_settings_ = original_terminal_settings_; // make new settings same as old settings\n  new_terminal_settings_.c_lflag &= ~ICANON; // disable buffered i/o\n  new_terminal_settings_.c_lflag &= ~ECHO; // set echo mode\n  new_terminal_settings_.c_cc[VMIN] = 1; //minimum of number input read.\n  tcsetattr(0, TCSANOW, &new_terminal_settings_); // use these new terminal i/o settings now\n\n  user_input_thread_ = new std::thread(&UserInputThread::acquireUserInput, this);\n}\n\nUserInputThread::~UserInputThread()\n{\n  tcsetattr(0, TCSANOW, &original_terminal_settings_);\n  user_input_thread_->join();\n  printf(\"UserInputThread destructed.\\n\");\n}\n\nchar UserInputThread::getInput()\n{\n  char tmp = input_;\n  input_ = (char) 0;\n  return tmp;\n}\n\nvoid UserInputThread::stop()\n{\n  stop_ = true;\n}\n\nvoid UserInputThread::acquireUserInput()\n{\n  int c = 0;\n  while(!stop_)\n  {\n    c = getchar();  // TODO: this is blocking, so the interruption point is not reached...\n    if ((char)c == ' ')\n      printf(\"USER INPUT: SPACE\\n\");\n    else\n      printf(\"USER INPUT: %c\\n\", (char) c);\n    input_ = (char) c;\n    c = 0;\n\n    // interruption point:\n    std::this_thread::sleep_for(std::chrono::milliseconds(10));\n  }\n}\n\n} // end namespace vk\n\n\n"
  },
  {
    "path": "svo_vikit/vikit_common/src/vision.cpp",
    "content": "/*\n * vision.cpp\n *\n *  Created on: May 14, 2013\n *      Author: cforster\n */\n\n#include <vikit/vision.h>\n\n#if __SSE2__\n# include <emmintrin.h>\n#elif __ARM_NEON__\n# include <arm_neon.h>\n#endif\n\nnamespace vk {\n\n#ifdef __SSE2__\nvoid halfSampleSSE2(const unsigned char* in, unsigned char* out, int w, int h)\n{\n  const unsigned long long mask[2] = {0x00FF00FF00FF00FFull, 0x00FF00FF00FF00FFull};\n  const unsigned char* nextRow = in + w;\n  __m128i m = _mm_loadu_si128((const __m128i*)mask);\n  int sw = w >> 4;\n  int sh = h >> 1;\n  for (int i=0; i<sh; i++)\n  {\n    for (int j=0; j<sw; j++)\n    {\n      __m128i here = _mm_load_si128((const __m128i*)in);\n      __m128i next = _mm_load_si128((const __m128i*)nextRow);\n      here = _mm_avg_epu8(here,next);\n      next = _mm_and_si128(_mm_srli_si128(here,1), m);\n      here = _mm_and_si128(here,m);\n      here = _mm_avg_epu16(here, next);\n      _mm_storel_epi64((__m128i*)out, _mm_packus_epi16(here,here));\n      in += 16;\n      nextRow += 16;\n      out += 8;\n    }\n    in += w;\n    nextRow += w;\n  }\n}\n#endif \n\n#ifdef __ARM_NEON__\nvoid halfSampleNEON( const cv::Mat& in, cv::Mat& out )\n{\n  const int in_stride = in.step.p[0];\n  const int out_stride = out.step.p[0];\n  for( int y = 0; y < in.rows; y += 2)\n  {\n    const uint8_t * in_top = in.data + y*in_stride;\n    const uint8_t * in_bottom = in.data + (y+1)*in_stride;\n    uint8_t * out_data = out.data + (y >> 1)*out_stride;\n    for( int x = in.cols; x > 0 ; x-=16, in_top += 16, in_bottom += 16, out_data += 8)\n    {\n      uint8x8x2_t top  = vld2_u8( (const uint8_t *)in_top );\n      uint8x8x2_t bottom = vld2_u8( (const uint8_t *)in_bottom );\n      uint16x8_t sum = vaddl_u8( top.val[0], top.val[1] );\n      sum = vaddw_u8( sum, bottom.val[0] );\n      sum = vaddw_u8( sum, bottom.val[1] );\n      uint8x8_t final_sum = vshrn_n_u16(sum, 2);\n      vst1_u8(out_data, final_sum);\n    }\n  }\n}\n#endif\n\n\nvoid\nhalfSample(const cv::Mat& in, cv::Mat& out)\n{\n  assert( in.rows/2==out.rows && in.cols/2==out.cols);\n  assert( in.type()==CV_8U && out.type()==CV_8U);\n\n#ifdef __SSE2__\n  // TODO: make work for cropped images\n  if(is_aligned16(in.data)\n     && is_aligned16(out.data)\n     && ((in.cols % 16) == 0)\n     && static_cast<size_t>(in.cols) == in.step)\n  {\n    halfSampleSSE2(in.data, out.data, in.cols, in.rows);\n    return;\n  }\n#endif\n\n#ifdef __ARM_NEON__ \n  if( (in.cols % 16) == 0 )\n  {\n    halfSampleNEON(in, out);\n    return;\n  }\n#endif\n\n  const int in_stride = in.step.p[0];\n  const int out_stride = out.step.p[0];\n  uint8_t* top = (uint8_t*) in.data;\n  uint8_t* bottom = top + in_stride;\n  uint8_t* end = top + in_stride*in.rows;\n  uint8_t* p = (uint8_t*) out.data;\n  for (int y=0; y < out.rows && bottom < end; y++, top += in_stride*2, bottom += in_stride*2, p += out_stride)\n  {\n    for (int x=0; x < out.cols; x++)\n    {\n       p[x] = static_cast<uint8_t>( (uint16_t (top[x*2]) + top[x*2+1] + bottom[x*2] + bottom[x*2+1])/4 );\n    }\n  }\n}\n\nvoid\ncalcSharrDeriv(const cv::Mat& src, cv::Mat& dst)\n{\n\n  using namespace cv;\n  typedef short deriv_type;\n\n  int rows = src.rows, cols = src.cols, cn = src.channels(), colsn = cols*cn, depth = src.depth();\n  CV_Assert(depth == CV_8U);\n  dst.create(rows, cols, CV_MAKETYPE(DataType<deriv_type>::depth, cn*2));\n\n  int x, y, delta = (int)alignSize((cols + 2)*cn, 16);\n  AutoBuffer<deriv_type> _tempBuf(delta*2 + 64);\n  deriv_type *trow0 = alignPtr(_tempBuf + cn, 16), *trow1 = alignPtr(trow0 + delta, 16);\n\n#ifdef __SSE2__\n  __m128i z = _mm_setzero_si128(), c3 = _mm_set1_epi16(3), c10 = _mm_set1_epi16(10);\n#endif\n\n  for( y = 0; y < rows; y++ )\n  {\n      const uchar* srow0 = src.ptr<uchar>(y > 0 ? y-1 : rows > 1 ? 1 : 0);\n      const uchar* srow1 = src.ptr<uchar>(y);\n      const uchar* srow2 = src.ptr<uchar>(y < rows-1 ? y+1 : rows > 1 ? rows-2 : 0);\n      deriv_type* drow = dst.ptr<deriv_type>(y);\n\n      // do vertical convolution\n      x = 0;\n#ifdef __SSE2__\n      for( ; x <= colsn - 8; x += 8 )\n      {\n          __m128i s0 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(srow0 + x)), z);\n          __m128i s1 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(srow1 + x)), z);\n          __m128i s2 = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(srow2 + x)), z);\n          __m128i t0 = _mm_add_epi16(_mm_mullo_epi16(_mm_add_epi16(s0, s2), c3), _mm_mullo_epi16(s1, c10));\n          __m128i t1 = _mm_sub_epi16(s2, s0);\n          _mm_store_si128((__m128i*)(trow0 + x), t0);\n          _mm_store_si128((__m128i*)(trow1 + x), t1);\n      }\n#endif\n      for( ; x < colsn; x++ )\n      {\n          int t0 = (srow0[x] + srow2[x])*3 + srow1[x]*10;\n          int t1 = srow2[x] - srow0[x];\n          trow0[x] = (deriv_type)t0;\n          trow1[x] = (deriv_type)t1;\n      }\n\n      // make border\n      int x0 = (cols > 1 ? 1 : 0)*cn, x1 = (cols > 1 ? cols-2 : 0)*cn;\n      for( int k = 0; k < cn; k++ )\n      {\n          trow0[-cn + k] = trow0[x0 + k]; trow0[colsn + k] = trow0[x1 + k];\n          trow1[-cn + k] = trow1[x0 + k]; trow1[colsn + k] = trow1[x1 + k];\n      }\n\n      // do horizontal convolution, interleave the results and store them to dst\n      x = 0;\n#ifdef __SSE2__\n      for( ; x <= colsn - 8; x += 8 )\n      {\n          __m128i s0 = _mm_loadu_si128((const __m128i*)(trow0 + x - cn));\n          __m128i s1 = _mm_loadu_si128((const __m128i*)(trow0 + x + cn));\n          __m128i s2 = _mm_loadu_si128((const __m128i*)(trow1 + x - cn));\n          __m128i s3 = _mm_load_si128((const __m128i*)(trow1 + x));\n          __m128i s4 = _mm_loadu_si128((const __m128i*)(trow1 + x + cn));\n\n          __m128i t0 = _mm_sub_epi16(s1, s0);\n          __m128i t1 = _mm_add_epi16(_mm_mullo_epi16(_mm_add_epi16(s2, s4), c3), _mm_mullo_epi16(s3, c10));\n          __m128i t2 = _mm_unpacklo_epi16(t0, t1);\n          t0 = _mm_unpackhi_epi16(t0, t1);\n          // this can probably be replaced with aligned stores if we aligned dst properly.\n          _mm_storeu_si128((__m128i*)(drow + x*2), t2);\n          _mm_storeu_si128((__m128i*)(drow + x*2 + 8), t0);\n      }\n#endif\n      for( ; x < colsn; x++ )\n      {\n          deriv_type t0 = (deriv_type)(trow0[x+cn] - trow0[x-cn]);\n          deriv_type t1 = (deriv_type)((trow1[x+cn] + trow1[x-cn])*3 + trow1[x]*10);\n          drow[x*2] = t0; drow[x*2+1] = t1;\n      }\n  }\n\n//  vector<cv::Mat> vec_mat;\n//  cv::split(dst, vec_mat);\n//  cv::namedWindow(\"deriv\");\n//  cv::imshow(\"deriv\", vec_mat[0]);\n//  cv::namedWindow(\"derivy\");\n//  cv::imshow(\"derivy\", vec_mat[1]);\n//  cv::waitKey(0);\n}\n\n#ifdef __SSE2__\nvoid convertRawDepthImageSse_16u_to_32f(cv::Mat& depth_16u, cv::Mat& depth_32f, float scale)\n{\n  depth_32f.create(depth_16u.rows, depth_16u.cols, CV_32FC1);\n\n  const unsigned short* input_ptr = depth_16u.ptr<unsigned short>();\n  float* output_ptr = depth_32f.ptr<float>();\n\n  __m128 _scale = _mm_set1_ps(scale);\n  __m128 _zero  = _mm_setzero_ps();\n  __m128 _nan   = _mm_set1_ps(std::numeric_limits<float>::quiet_NaN());\n\n  for(int idx = 0; idx < depth_16u.size().area(); idx += 8, input_ptr += 8, output_ptr += 8)\n  {\n    __m128 _input, mask;\n    __m128i _inputi = _mm_load_si128((__m128i*) input_ptr);\n\n    // load low shorts and convert to float\n    _input = _mm_cvtepi32_ps(_mm_unpacklo_epi16(_inputi, _mm_setzero_si128()));\n\n    mask = _mm_cmpeq_ps(_input, _zero);\n\n    // zero to nan\n    _input = _mm_or_ps(_input, _mm_and_ps(mask, _nan));\n    // scale\n    _input = _mm_mul_ps(_input, _scale);\n    // save\n    _mm_store_ps(output_ptr + 0, _input);\n\n    // load high shorts and convert to float\n    _input = _mm_cvtepi32_ps(_mm_unpackhi_epi16(_inputi, _mm_setzero_si128()));\n\n    mask = _mm_cmpeq_ps(_input, _zero);\n\n    // zero to nan\n    _input = _mm_or_ps(_input, _mm_and_ps(mask, _nan));\n    // scale\n    _input = _mm_mul_ps(_input, _scale);\n    // save\n    _mm_store_ps(output_ptr + 4, _input);\n  }\n}\n#endif\n\n}\n\n\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_camera.cpp",
    "content": "/*\n * camera_pinhole_test.cpp\n *\n *  Created on: Oct 26, 2012\n *      Author: cforster\n */\n\n#include <string>\n#include <stdint.h>\n#include <stdio.h>\n#include <iostream>\n#include <math.h>\n#include <Eigen/Core>\n#include <vikit/pinhole_camera.h>\n#include <vikit/pinhole_equidistant_camera.h>\n#include <vikit/atan_camera.h>\n#include <vikit/math_utils.h>\n#include <vikit/timer.h>\n#include <vikit/sample.h>\n\nusing namespace std;\nusing namespace Eigen;\n\n\nvoid testTiming(vk::AbstractCamera::Ptr cam)\n{\n  Vector3d xyz;\n  Vector2d px(320.64, 253.54);\n  vk::Timer t;\n  t.start();\n  for(size_t i=0; i<1000; ++i)\n  {\n    xyz = cam->cam2world(px);\n  }\n  t.stop();\n  cout << \"Time unproject = \" << t.getTime()*1000 << \"ms\" << endl;\n\n  t.start();\n  for(size_t i=0; i<1000; ++i)\n  {\n    px = cam->world2cam(xyz);\n  }\n  t.stop();\n  cout << \"Time project = \" << t.getTime()*1000 << \"ms\" << endl;\n}\n\nvoid testAccuracy(vk::AbstractCamera::Ptr cam)\n{\n  double error = 0.0;\n  vk::Timer t;\n  for(size_t i=0; i<1000; ++i)\n  {\n    Vector2d px(1.0/100.0 * vk::Sample::uniform(0, cam->width()*100), \n                1.0/100.0 * vk::Sample::uniform(0, cam->height()*100));\n    Vector3d xyz = cam->cam2world(px);\n    Vector2d px2 = cam->world2cam(xyz);\n    error += (px-px2).norm();\n  }\n  cout << \"Reprojection error = \" << error << \" (took \" << t.stop()*1000 << \"ms)\" << endl;\n}\n\nint main(int argc, char **argv)\n{\n  Eigen::Quaterniond q(vk::rpy2dcm(Eigen::Vector3d(-3.1415, 0, 0)));\n  std::cout << \"qx = \" << q.x() << std::endl;\n  std::cout << \"qy = \" << q.y() << std::endl;\n  std::cout << \"qz = \" << q.z() << std::endl;\n  std::cout << \"qw = \" << q.w() << std::endl;\n\n  vk::AbstractCamera::Ptr cam_pinhole(\n        new vk::PinholeCamera(\n          640, 480,\n          323.725240539365, 323.53310403533,\n          336.407165453746, 235.018271952295,\n          -0.258617082313663, 0.0623042373522829, 0.000445967802619555, -0.000269839440982019));\n\n  vk::AbstractCamera::Ptr cam_atan(\n        new vk::ATANCamera(752, 480, 0.511496, 0.802603, 0.530199, 0.496011, 0.934092));\n\n  vk::AbstractCamera::Ptr cam_equidistant(\n        new vk::PinholeEquidistantCamera(\n          752, 480,\n          463.34128261574796, 461.90887721986877,\n          361.5557340721321, 231.13558880965206,\n          -0.0027973061697674074, 0.024145501123661265, -0.04304211254137983, 0.031185314072573474));\n\n  printf(\"\\nPINHOLE CAMERA:\\n\");\n  testTiming(cam_pinhole);\n  testAccuracy(cam_pinhole);\n\n  printf(\"\\nATAN CAMERA:\\n\");\n  testTiming(cam_atan);\n  testAccuracy(cam_atan);\n\n  printf(\"\\nPINHOLE EQUIDISTANT CAMERA:\\n\");\n  testTiming(cam_equidistant);\n  testAccuracy(cam_equidistant);\n\n  return 0;\n}\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_common.cpp",
    "content": "#include <iostream>\n#include <Eigen/Dense>\n\nvoid testEuclideanNorm()\n{\n  Eigen::Matrix<double, 3, 5> A;\n  A << 1, 2, 3, 4, 5,\n       2, 3, 4, 5, 6,\n       7, 9, 10, 11, 12;\n\n  std::cout << A.colwise().norm() << std::endl << std::endl;\n\n  Eigen::Matrix<double, 3, 5> B;\n  B = A.array().rowwise() / A.colwise().norm().array();\n  std::cout << B << std::endl;\n\n  for(int i=0; i<A.cols(); ++i)\n  {\n    Eigen::Vector3d b = A.col(i)/A.col(i).norm();\n    std::cout << b.transpose() << std::endl;\n    std::cout << b.norm() << std::endl;\n  }\n\n}\n\nint main(int argc, char** argv)\n{\n  testEuclideanNorm();\n  return 0;\n}\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_homography.cpp",
    "content": "/*\n * test_patch_score.cpp\n *\n *  Created on: Dec 4, 2012\n *      Author: cforster\n */\n\n#include <gtest/gtest.h>\n#include <iostream>\n#include <vector>\n#include <vikit/homography.h>\n#include <vikit/math_utils.h>\n\nnamespace {\n\nusing namespace Eigen;\n\nvoid loadData(\n    vk::Bearings& f_ref,\n    vk::Bearings& f_cur,\n    double& focal_length)\n{\n  f_ref.resize(Eigen::NoChange,70);\n  f_cur.resize(Eigen::NoChange,70);\n  size_t i=0;\n  f_ref.col(i++) = Vector3d(-0.275133, 0.139682, 0.951205);\n  f_ref.col(i++) = Vector3d(-0.453144, 0.25876, 0.853056);\n  f_ref.col(i++) = Vector3d(-0.683693, 0.252033, 0.684867);\n  f_ref.col(i++) = Vector3d(0.0311563, 0.34865, 0.936735);\n  f_ref.col(i++) = Vector3d(0.42499, 0.0768726, 0.901928);\n  f_ref.col(i++) = Vector3d(-0.57448, 0.311981, 0.75673);\n  f_ref.col(i++) = Vector3d(0.449507, 0.272281, 0.850768);\n  f_ref.col(i++) = Vector3d(0.624694, 0.183813, 0.758927);\n  f_ref.col(i++) = Vector3d(-0.43046, -0.178188, 0.884846);\n  f_ref.col(i++) = Vector3d(-0.0532966, 0.346281, 0.936616);\n  f_ref.col(i++) = Vector3d(0.588485, 0.229454, 0.775265);\n  f_ref.col(i++) = Vector3d(-0.249363, 0.364956, 0.897009);\n  f_ref.col(i++) = Vector3d(0.73978, 0.38238, 0.553635);\n  f_ref.col(i++) = Vector3d(-0.512336, 0.363462, 0.778079);\n  f_ref.col(i++) = Vector3d(0.169329, 0.419967, 0.891602);\n  f_ref.col(i++) = Vector3d(0.770892, 0.274347, 0.574855);\n  f_ref.col(i++) = Vector3d(0.108062, 0.37045, 0.922545);\n  f_ref.col(i++) = Vector3d(0.380411, 0.284284, 0.88004);\n  f_ref.col(i++) = Vector3d(-0.144588, 0.119588, 0.982239);\n  f_ref.col(i++) = Vector3d(0.712077, 0.195253, 0.674406);\n  f_ref.col(i++) = Vector3d(0.749152, 0.25336, 0.61203);\n  f_ref.col(i++) = Vector3d(-0.38118, 0.337495, 0.860697);\n  f_ref.col(i++) = Vector3d(-0.67239, 0.322924, 0.666041);\n  f_ref.col(i++) = Vector3d(0.284355, 0.462661, 0.839695);\n  f_ref.col(i++) = Vector3d(-0.322239, 0.46477, 0.824713);\n  f_ref.col(i++) = Vector3d(0.0268799, 0.174692, 0.984256);\n  f_ref.col(i++) = Vector3d(0.116106, 0.291004, 0.94965);\n  f_ref.col(i++) = Vector3d(0.426098, 0.219401, 0.87767);\n  f_ref.col(i++) = Vector3d(0.384375, 0.151817, 0.910608);\n  f_ref.col(i++) = Vector3d(-0.641209, 0.342716, 0.686583);\n  f_ref.col(i++) = Vector3d(-0.482429, 0.436318, 0.759532);\n  f_ref.col(i++) = Vector3d(-0.127924, 0.35448, 0.926272);\n  f_ref.col(i++) = Vector3d(0.45357, 0.159322, 0.876864);\n  f_ref.col(i++) = Vector3d(-0.404163, 0.38604, 0.829232);\n  f_ref.col(i++) = Vector3d(-0.452152, 0.355138, 0.81819);\n  f_ref.col(i++) = Vector3d(0.368518, 0.355639, 0.858904);\n  f_ref.col(i++) = Vector3d(-0.0863902, 0.31422, 0.945411);\n  f_ref.col(i++) = Vector3d(0.534435, 0.392647, 0.74847);\n  f_ref.col(i++) = Vector3d(0.236089, 0.452183, 0.860112);\n  f_ref.col(i++) = Vector3d(0.131858, 0.45536, 0.880489);\n  f_ref.col(i++) = Vector3d(-0.0431284, 0.467322, 0.883034);\n  f_ref.col(i++) = Vector3d(-0.0620748, 0.415247, 0.907588);\n  f_ref.col(i++) = Vector3d(0.361378, 0.407799, 0.838514);\n  f_ref.col(i++) = Vector3d(0.547415, 0.234039, 0.803469);\n  f_ref.col(i++) = Vector3d(0.656454, 0.258657, 0.708636);\n  f_ref.col(i++) = Vector3d(0.706324, 0.272406, 0.653377);\n  f_ref.col(i++) = Vector3d(0.160498, 0.407091, 0.899176);\n  f_ref.col(i++) = Vector3d(-0.595751, -0.118818, 0.794332);\n  f_ref.col(i++) = Vector3d(0.654654, 0.23348, 0.718968);\n  f_ref.col(i++) = Vector3d(-0.464858, 0.350004, 0.813268);\n  f_ref.col(i++) = Vector3d(-0.235892, 0.137801, 0.961959);\n  f_ref.col(i++) = Vector3d(-0.247373, 0.147095, 0.95769);\n  f_ref.col(i++) = Vector3d(0.620551, 0.192752, 0.760107);\n  f_ref.col(i++) = Vector3d(0.546609, 0.385321, 0.743469);\n  f_ref.col(i++) = Vector3d(0.40142, 0.174489, 0.899119);\n  f_ref.col(i++) = Vector3d(-0.617385, 0.287266, 0.732335);\n  f_ref.col(i++) = Vector3d(0.728777, -0.462694, 0.504775);\n  f_ref.col(i++) = Vector3d(0.69319, 0.171178, 0.700132);\n  f_ref.col(i++) = Vector3d(-0.089887, 0.41494, 0.905398);\n  f_ref.col(i++) = Vector3d(0.450678, 0.245466, 0.858275);\n  f_ref.col(i++) = Vector3d(-0.0917591, 0.235608, 0.967507);\n  f_ref.col(i++) = Vector3d(-0.277634, 0.251282, 0.927241);\n  f_ref.col(i++) = Vector3d(-0.60967, 0.29214, 0.736856);\n  f_ref.col(i++) = Vector3d(0.651581, 0.156287, 0.742305);\n  f_ref.col(i++) = Vector3d(0.731917, 0.303376, 0.610131);\n  f_ref.col(i++) = Vector3d(0.707427, 0.326456, 0.626876);\n  f_ref.col(i++) = Vector3d(0.455411, 0.320352, 0.830648);\n  f_ref.col(i++) = Vector3d(-0.00165953, 0.461063, 0.887366);\n  f_ref.col(i++) = Vector3d(-0.51092, 0.260245, 0.819288);\n  f_ref.col(i++) = Vector3d(-0.562318, 0.321435, 0.761891);\n  i = 0;\n  f_cur.col(i++) = Vector3d(-0.314108, 0.0787836, 0.946113);\n  f_cur.col(i++) = Vector3d(-0.49336, 0.201209, 0.846233);\n  f_cur.col(i++) = Vector3d(-0.714299, 0.203437, 0.669619);\n  f_cur.col(i++) = Vector3d(-0.0124058, 0.287466, 0.95771);\n  f_cur.col(i++) = Vector3d(0.391199, 0.0146728, 0.920189);\n  f_cur.col(i++) = Vector3d(-0.613535, 0.257692, 0.746438);\n  f_cur.col(i++) = Vector3d(0.418711, 0.216758, 0.881871);\n  f_cur.col(i++) = Vector3d(0.601104, 0.13628, 0.787465);\n  f_cur.col(i++) = Vector3d(-0.467537, -0.244271, 0.849553);\n  f_cur.col(i++) = Vector3d(-0.0978916, 0.284652, 0.95362);\n  f_cur.col(i++) = Vector3d(0.562768, 0.179693, 0.806847);\n  f_cur.col(i++) = Vector3d(-0.295436, 0.304041, 0.905691);\n  f_cur.col(i++) = Vector3d(0.726236, 0.347243, 0.593299);\n  f_cur.col(i++) = Vector3d(-0.553105, 0.308215, 0.774002);\n  f_cur.col(i++) = Vector3d(0.12876, 0.363061, 0.922826);\n  f_cur.col(i++) = Vector3d(0.755376, 0.237074, 0.610903);\n  f_cur.col(i++) = Vector3d(0.0658183, 0.310916, 0.948156);\n  f_cur.col(i++) = Vector3d(0.347842, 0.228711, 0.909229);\n  f_cur.col(i++) = Vector3d(-0.18349, 0.0577989, 0.981321);\n  f_cur.col(i++) = Vector3d(0.692312, 0.152672, 0.705263);\n  f_cur.col(i++) = Vector3d(0.732262, 0.214083, 0.646499);\n  f_cur.col(i++) = Vector3d(-0.424814, 0.278522, 0.86137);\n  f_cur.col(i++) = Vector3d(-0.705486, 0.273901, 0.653657);\n  f_cur.col(i++) = Vector3d(0.247401, 0.409651, 0.878054);\n  f_cur.col(i++) = Vector3d(-0.369072, 0.407299, 0.8354);\n  f_cur.col(i++) = Vector3d(-0.0171458, 0.107884, 0.994016);\n  f_cur.col(i++) = Vector3d(0.0746287, 0.229733, 0.970388);\n  f_cur.col(i++) = Vector3d(0.39396, 0.161353, 0.904854);\n  f_cur.col(i++) = Vector3d(0.350229, 0.0951773, 0.931816);\n  f_cur.col(i++) = Vector3d(-0.675607, 0.290697, 0.677532);\n  f_cur.col(i++) = Vector3d(-0.525243, 0.381283, 0.760751);\n  f_cur.col(i++) = Vector3d(-0.173641, 0.292971, 0.940222);\n  f_cur.col(i++) = Vector3d(0.421607, 0.10038, 0.901205);\n  f_cur.col(i++) = Vector3d(-0.448002, 0.328861, 0.831351);\n  f_cur.col(i++) = Vector3d(-0.494992, 0.298149, 0.816143);\n  f_cur.col(i++) = Vector3d(0.335083, 0.300948, 0.892832);\n  f_cur.col(i++) = Vector3d(-0.130437, 0.251905, 0.958921);\n  f_cur.col(i++) = Vector3d(0.508842, 0.344173, 0.789065);\n  f_cur.col(i++) = Vector3d(0.198171, 0.398371, 0.895561);\n  f_cur.col(i++) = Vector3d(0.0902021, 0.399366, 0.912343);\n  f_cur.col(i++) = Vector3d(-0.0796933, 0.408578, 0.909238);\n  f_cur.col(i++) = Vector3d(-0.107955, 0.355663, 0.928359);\n  f_cur.col(i++) = Vector3d(0.328433, 0.355416, 0.875106);\n  f_cur.col(i++) = Vector3d(0.52189, 0.182516, 0.833258);\n  f_cur.col(i++) = Vector3d(0.635367, 0.213799, 0.742023);\n  f_cur.col(i++) = Vector3d(0.687613, 0.23057, 0.688495);\n  f_cur.col(i++) = Vector3d(0.119683, 0.349575, 0.929233);\n  f_cur.col(i++) = Vector3d(-0.629833, -0.179005, 0.755822);\n  f_cur.col(i++) = Vector3d(0.633002, 0.187888, 0.751004);\n  f_cur.col(i++) = Vector3d(-0.507273, 0.293347, 0.810322);\n  f_cur.col(i++) = Vector3d(-0.27525, 0.0768303, 0.958298);\n  f_cur.col(i++) = Vector3d(-0.286753, 0.0861832, 0.95412);\n  f_cur.col(i++) = Vector3d(0.596872, 0.145137, 0.7891);\n  f_cur.col(i++) = Vector3d(0.521313, 0.33688, 0.784057);\n  f_cur.col(i++) = Vector3d(0.367602, 0.11442, 0.922918);\n  f_cur.col(i++) = Vector3d(-0.652129, 0.235195, 0.720702);\n  f_cur.col(i++) = Vector3d(0.711624, -0.494716, 0.498846);\n  f_cur.col(i++) = Vector3d(0.671912, 0.127027, 0.729656);\n  f_cur.col(i++) = Vector3d(-0.135909, 0.355126, 0.924886);\n  f_cur.col(i++) = Vector3d(0.41936, 0.1895, 0.887821);\n  f_cur.col(i++) = Vector3d(-0.134665, 0.173412, 0.975599);\n  f_cur.col(i++) = Vector3d(-0.320945, 0.189392, 0.927968);\n  f_cur.col(i++) = Vector3d(-0.644542, 0.239822, 0.725983);\n  f_cur.col(i++) = Vector3d(0.628599, 0.109822, 0.769937);\n  f_cur.col(i++) = Vector3d(0.715956, 0.263814, 0.646382);\n  f_cur.col(i++) = Vector3d(0.690093, 0.286395, 0.664642);\n  f_cur.col(i++) = Vector3d(0.425479, 0.267033, 0.864674);\n  f_cur.col(i++) = Vector3d(-0.0358689, 0.402047, 0.914916);\n  f_cur.col(i++) = Vector3d(-0.548987, 0.204038, 0.810544);\n  f_cur.col(i++) = Vector3d(-0.601498, 0.266629, 0.753066);\n  focal_length = 386.711;\n}\n\nTEST(Homography, testHomography)\n{\n  vk::Bearings f_ref, f_cur;\n  double focal_length;\n  double reproj_error_thresh = 2.0;\n  loadData(f_ref, f_cur, focal_length);\n  vk::Homography H = vk::estimateHomography(\n        f_cur, f_ref, focal_length, reproj_error_thresh, 0.0);\n\n  // compute inliers\n  std::vector<int> inliers, outliers;\n  vk::Bearings xyz_in_cur;\n  vk::computeInliers(\n        f_cur, f_ref, H.R_cur_ref, H.t_cur_ref, reproj_error_thresh,\n        focal_length, xyz_in_cur, inliers, outliers);\n\n  EXPECT_EQ(inliers.size(), 69);\n}\n\n} // namespace\n\nint main(int argc, char** argv)\n{\n  ::testing::InitGoogleTest(&argc, argv);\n  return RUN_ALL_TESTS();\n}\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_math_utils.cpp",
    "content": "#include <gtest/gtest.h>\n#include <vikit/math_utils.h>\n#include <aslam/common/entrypoint.h>\n\nnamespace {\n\nTEST(MathUtils, testProject2_double)\n{\n  Eigen::Vector3d x3(2.0, 2.0, 2.0);\n  Eigen::Vector2d x2 = vk::project2(x3);\n  EXPECT_EQ(x2(0), 1.0);\n  EXPECT_EQ(x2(1), 1.0);\n}\n\nTEST(MathUtils, testProject2_float)\n{\n  Eigen::Vector3f x3(2.0, 2.0, 2.0);\n  Eigen::Vector2f x2 = vk::project2(x3);\n  EXPECT_EQ(x2(0), 1.0);\n  EXPECT_EQ(x2(1), 1.0);\n}\n\n} // namespace\n\nVIKIT_UNITTEST_ENTRYPOINT\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_timer.cpp",
    "content": "#include <iostream>\n#include <chrono>\n#include <thread>\n#include <iomanip>      // std::setprecision\n#include <vikit/timer.h>\n\nint main(int argc, char **argv)\n{\n  vk::Timer t;\n  std::this_thread::sleep_for(std::chrono::milliseconds(10));\n  std::cout << \"1. sleep took \" << t.stop() << \" seconds\" << std::endl;\n  std::cout << \"1. sleep took \" << t.getTime() << \" seconds\" << std::endl;\n\n  t.resume();\n  std::this_thread::sleep_for(std::chrono::milliseconds(10));\n  std::cout << \"2. sleep took \" << t.stop() << \" seconds\" << std::endl;\n  std::cout << \"2. sleep took \" << t.getTime() << \" seconds\" << std::endl;\n\n  std::cout << \"total sleep took \" << t.getAccumulated() << \" seconds\" << std::endl;\n\n  std::cout << \"seconds since 1.1.1970 is \"\n            << std::setprecision(15)\n            << vk::Timer::getCurrentTime() << std::endl;\n\n  std::cout << \"current date is \" << vk::Timer::getCurrentTimeStr() << std::endl;\n  return 0;\n}\n"
  },
  {
    "path": "svo_vikit/vikit_common/test/test_triangulation.cpp",
    "content": "/*\n * camera_pinhole_test.cpp\n *\n *  Created on: Oct 26, 2012\n *      Author: cforster\n */\n\n#include <string>\n#include <stdint.h>\n#include <stdio.h>\n#include <iostream>\n#include <math.h>\n#include <Eigen/Core>\n#include <vikit/math_utils.h>\n#include <vikit/timer.h>\n#include <vikit/sample.h>\n#include <vikit/pinhole_camera.h>\n\nusing namespace std;\nusing namespace Eigen;\n\nint main(int argc, char **argv)\n{\n  vk::PinholeCamera cam(752, 480, 414.5, 414.2, 348.8, 240.0);\n  Matrix4d T_ref_cur(Matrix4d::Identity());\n  T_ref_cur(0,3) = 0.5;\n  Vector2d u_cur(200, 300);\n  Vector3d f_cur(cam.cam2world(u_cur));\n  double depth_cur = 2.0;\n  Vector3d f_ref(vk::project3d(T_ref_cur*vk::unproject3d(f_cur*depth_cur)));\n  double depth_ref = f_ref.norm();\n  Vector2d u_ref(cam.world2cam(f_ref));\n  double z_ref, z_cur;\n  vk::depthFromTriangulationExact(T_ref_cur.topLeftCorner<3,3>(), T_ref_cur.topRightCorner<3,1>(), f_ref, f_cur, z_ref, z_cur);\n  printf(\"depth = %f, triangulated depth = %f\\n\", depth_cur, z_cur);\n  printf(\"depth = %f, triangulated depth = %f\\n\", depth_ref, z_ref);\n\n  return 0;\n}\n"
  },
  {
    "path": "svo_vikit/vikit_common/vikit_commonConfig.cmake.in",
    "content": "#######################################################\n# vikit_common source dir\nset( vikit_common_SOURCE_DIR \"@CMAKE_CURRENT_SOURCE_DIR@\")\n\n#######################################################\n# vikit_common build dir\nset( vikit_common_DIR \"@CMAKE_CURRENT_BINARY_DIR@\")\n\n#######################################################\nset( vikit_common_INCLUDE_DIR  \"@vikit_common_INCLUDE_DIR@\" )\nset( vikit_common_INCLUDE_DIRS \"@vikit_common_INCLUDE_DIR@\" )\n\nset( vikit_common_LIBRARIES    \"@vikit_common_LIBRARIES@\" )\nset( vikit_common_LIBRARY      \"@vikit_common_LIBRARIES@\" )\n\nset( vikit_common_LIBRARY_DIR  \"@vikit_common_LIBRARY_DIR@\" )\nset( vikit_common_LIBRARY_DIRS \"@vikit_common_LIBRARY_DIR@\" )\n"
  },
  {
    "path": "svo_vikit/vikit_py/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(vikit_py)\n\n## Find catkin macros and libraries\n## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)\n## is used, also find other catkin packages\nfind_package(catkin REQUIRED COMPONENTS\n  rospy\n)\n\n## Uncomment this if the package has a setup.py. This macro ensures\n## modules and global scripts declared therein get installed\n## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html\ncatkin_python_setup()\n\ncatkin_package(\n#  INCLUDE_DIRS include\n#  LIBRARIES vikit_py\n#  CATKIN_DEPENDS rospy\n#  DEPENDS system_lib\n)\n\ninclude_directories(\n  ${catkin_INCLUDE_DIRS}\n)\n"
  },
  {
    "path": "svo_vikit/vikit_py/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package>\n  <name>vikit_py</name>\n  <version>0.0.0</version>\n  <description>The vikit_py package</description>\n\n  <!-- One maintainer tag required, multiple allowed, one person per tag --> \n  <!-- Example:  -->\n  <!-- <maintainer email=\"jane.doe@example.com\">Jane Doe</maintainer> -->\n  <maintainer email=\"forster@ifi.uzh.ch\">Christian Forster</maintainer>\n\n\n  <!-- One license tag required, multiple allowed, one license per tag -->\n  <!-- Commonly used license strings: -->\n  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->\n  <license>BSD</license>\n\n\n  <!-- Url tags are optional, but mutiple are allowed, one per tag -->\n  <!-- Optional attribute type can be: website, bugtracker, or repository -->\n  <!-- Example: -->\n  <!-- <url type=\"website\">http://wiki.ros.org/vikit_py</url> -->\n\n\n  <!-- Author tags are optional, mutiple are allowed, one per tag -->\n  <!-- Authors do not have to be maintianers, but could be -->\n  <!-- Example: -->\n  <!-- <author email=\"jane.doe@example.com\">Jane Doe</author> -->\n\n\n  <!-- The *_depend tags are used to specify dependencies -->\n  <!-- Dependencies can be catkin packages or system dependencies -->\n  <!-- Examples: -->\n  <!-- Use build_depend for packages you need at compile time: -->\n  <!--   <build_depend>message_generation</build_depend> -->\n  <!-- Use buildtool_depend for build tool packages: -->\n  <!--   <buildtool_depend>catkin</buildtool_depend> -->\n  <!-- Use run_depend for packages you need at runtime: -->\n  <!--   <run_depend>message_runtime</run_depend> -->\n  <!-- Use test_depend for packages you need only for testing: -->\n  <!--   <test_depend>gtest</test_depend> -->\n  <buildtool_depend>catkin</buildtool_depend>\n  <build_depend>rospy</build_depend>\n  <run_depend>rospy</run_depend>\n\n\n  <!-- The export tag contains other, unspecified, tags -->\n  <export>\n    <!-- You can specify that this package is a metapackage here: -->\n    <!-- <metapackage/> -->\n\n    <!-- Other tools can request additional information be placed here -->\n\n  </export>\n</package>"
  },
  {
    "path": "svo_vikit/vikit_py/setup.py",
    "content": "#!/usr/bin/env python\n\nfrom distutils.core import setup\nfrom catkin_pkg.python_setup import generate_distutils_setup\n\nd = generate_distutils_setup(\n    packages=['vikit_py'],\n    package_dir={'': 'src'},\n    install_requires=['rospkg', 'yaml'],\n    )\n\nsetup(**d)"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/.gitignore",
    "content": "*.pyc"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/__init__.py",
    "content": ""
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/align_trajectory.py",
    "content": "#!/usr/bin/python\n\nimport numpy as np\nimport vikit_py.rotation_utils as ru\n\ndef align_sim3(model, data):\n    \"\"\"Implementation of the paper: S. Umeyama, Least-Squares Estimation \n    of Transformation Parameters Between Two Point Patterns,\n    IEEE Trans. Pattern Anal. Mach. Intell., vol. 13, no. 4, 1991.\n\n    Input:\n    model -- first trajectory (nx3), numpy array type\n    data -- second trajectory (nx3), numpy array type\n    \n    Output:\n    s -- scale factor (scalar)\n    R -- rotation matrix (3x3)\n    t -- translation vector (3x1)\n    such that:  model = s * R * data + t\n    \n    t_error -- translational error per point (1xn)\n    \n    \"\"\"\n    # substract mean\n    mu_M = model.mean(0)\n    mu_D = data.mean(0)\n    model_zerocentered = model - mu_M\n    data_zerocentered = data - mu_D\n    n = np.shape(model)[0]\n\n    # correlation\n    C = 1.0/n*np.dot(model_zerocentered.transpose(), data_zerocentered)\n    sigma2 = 1.0/n*np.multiply(data_zerocentered,data_zerocentered).sum()\n    U_svd,D_svd,V_svd = np.linalg.linalg.svd(C)\n    D_svd = np.diag(D_svd)\n    V_svd = np.transpose(V_svd)\n    S = np.eye(3)\n\n    if(np.linalg.det(U_svd)*np.linalg.det(V_svd) < 0):\n        S[2,2] = -1\n\n    R = np.dot(U_svd, np.dot(S, np.transpose(V_svd)))\n    s = 1.0/sigma2*np.trace(np.dot(D_svd, S))\n    t = mu_M-s*np.dot(R,mu_D)\n\n    # TODO:\n    # data_aligned_to_model = s * R * data + t\n    # alignment_error = model - data_aligned_to_model\n    # t_error = np.sqrt(np.sum(np.multiply(alignment_error,alignment_error),0)).A[0]\n\n    return s, R, t #, t_error\n\ndef align_se3(model,data):\n    \"\"\"Align two trajectories using the method of Horn (closed-form). \n        \n    Input:\n    model -- first trajectory (nx3), numpy array type\n    data -- second trajectory (nx3), numpy array type\n    \n    Output:\n    R -- rotation matrix (3x3)\n    t -- translation vector (3x1)\n    \n    \"\"\"\n    np.set_printoptions(precision=3,suppress=True)\n    mu_M = model.mean(0)\n    mu_D = data.mean(0)\n    model_zerocentered = model - mu_M\n    data_zerocentered = data - mu_D\n    \n    W = np.zeros( (3,3) )\n    for row in range(model.shape[0]):\n        W += np.outer(model_zerocentered[row,:],data_zerocentered[row,:])\n    U,d,Vh = np.linalg.linalg.svd(W.transpose())\n    S = np.matrix(np.identity( 3 ))\n    if np.linalg.det(U) * np.linalg.det(Vh) < 0:\n        S[2,2] = -1\n    R = U*S*Vh\n    t = mu_D - np.dot(R, mu_M)\n    \n    #model_aligned = np.transpose(np.dot(R, np.transpose(model)) + np.transpose(t))\n  \n    return R, t\n\ndef _matrix_log(A):\n    theta = np.arccos((np.trace(A)-1.0)/2.0)\n    log_theta = 0.5*theta/np.sin(theta) * (A - A.transpose())\n    x = np.array([log_theta[2,1], log_theta[0,2], log_theta[1,0]])\n    return x\n\ndef hand_eye_calib(q_gt, q_es, I=[], p_gt=[], p_es=[], delta=1, verbose=True):\n    \"\"\"Implementation of the least squares solution described in the paper:\n    Robot Sensor Calibration: Solving AX=XB on the Euclidean Group\n    by Frank C. Park and Bryan J. Martin\n    \"\"\"\n    estimate_translation_offset = (len(p_es) != 0)\n    if len(I) == 0:\n        I = range(0,len(q_gt))\n    n = len(I)\n    M = np.zeros([3,3])\n    C = np.zeros([3*n, 3])\n    b_A = np.zeros([3*n,1])\n    b_B = np.zeros([3*n,1])\n    for ix, i in enumerate(I[0:-delta]):\n      A1 = ru.quat2dcm(q_es[i,:])\n      A2 = ru.quat2dcm(q_es[i+delta,:])\n      A  = np.dot(A1.transpose(), A2)\n      B1 = ru.quat2dcm(q_gt[i,:])\n      B2 = ru.quat2dcm(q_gt[i+delta,:])\n      B  = np.dot(B1.transpose(), B2)\n      alpha = _matrix_log(A)\n      beta = _matrix_log(B)\n      M = M + np.dot(np.matrix(beta).transpose(), np.matrix(alpha))\n      if estimate_translation_offset:\n          C[3*ix:3*ix+3,:] = np.eye(3) - A\n          b_A[3*ix:3*ix+3,0] = np.dot(np.transpose(A1), p_es[i+delta,:]-p_es[i,:])\n          b_B[3*ix:3*ix+3,0] = np.dot(np.transpose(B1), p_gt[i+delta,:]-p_gt[i,:])\n\n    # compute rotation  \n    D,V = np.linalg.linalg.eig(np.dot(M.transpose(), M))\n    Lambda = np.diag([np.sqrt(1.0/D[0]), np.sqrt(1.0/D[1]), np.sqrt(1.0/D[2])])\n    Vinv = np.linalg.linalg.inv(V)\n    X = np.dot(V, np.dot(Lambda, np.dot(Vinv, M.transpose())))\n\n    if estimate_translation_offset:\n        # compute translation\n        d = np.zeros([3*n,1])\n        for i in range(n):\n            d[3*i:3*i+3,:] = b_A[3*i:3*i+3,:] - np.dot(X, b_B[3*i:3*i+3,:])\n    \n        b = np.dot(np.linalg.inv(np.dot(np.transpose(C),C)),  np.dot(np.transpose(C),d))\n\n        return np.array(X), b\n    else:\n        return np.array(X)"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/associate_timestamps.py",
    "content": "#!/usr/bin/python\n# Software License Agreement (BSD License)\n#\n# Copyright (c) 2013, Juergen Sturm, TUM\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions\n# are met:\n#\n#  * Redistributions of source code must retain the above copyright\n#    notice, this list of conditions and the following disclaimer.\n#  * Redistributions in binary form must reproduce the above\n#    copyright notice, this list of conditions and the following\n#    disclaimer in the documentation and/or other materials provided\n#    with the distribution.\n#  * Neither the name of TUM nor the names of its\n#    contributors may be used to endorse or promote products derived\n#    from this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\n# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n# POSSIBILITY OF SUCH DAMAGE.\n#\n# Requirements: \n# sudo apt-get install python-argparse\n#\n# Modifications:\n# Nov-17 2014 Christian Forster: read dataset in the form \"id stamp d1 d2 d3 ...\" and output list of \"id1 id2\".\n\n\"\"\"\nThe Kinect provides the color and depth images in an un-synchronized way. This means that the set of time stamps from the color images do not intersect with those of the depth images. Therefore, we need some way of associating color images to depth images.\n\nFor this purpose, you can use the ''associate.py'' script. It reads the time stamps from the rgb.txt file and the depth.txt file, and joins them by finding the best matches.\n\"\"\"\n\nimport argparse\nimport sys\nimport os\nimport numpy\n\ndef read_file_list(filename):\n    \"\"\"\n    Reads a trajectory from a text file. \n    \n    File format:\n    The file format is \"id stamp d1 d2 d3 ...\", where stamp denotes the time stamp (to be matched)\n    and \"d1 d2 d3..\" is arbitary data (e.g., a 3D position and 3D orientation) associated to this timestamp. \n    \n    Input:\n    filename -- File name\n    \n    Output:\n    dict -- dictionary of (stamp,data) tuples\n    \n    \"\"\"\n    file = open(filename)\n    data = file.read()\n    lines = data.replace(\",\",\" \").replace(\"\\t\",\" \").split(\"\\n\") \n    list = [[v.strip() for v in line.split(\" \") if v.strip()!=\"\"] for line in lines if len(line)>0 and line[0]!=\"#\"]\n    list = [( float(l[1]), int(l[0]) ) for l in list if len(l)>1]\n    return dict(list)\n\ndef associate(first_list, second_list, offset, max_difference):\n    \"\"\"\n    Associate two dictionaries of (stamp,data). As the time stamps never match exactly, we aim \n    to find the closest match for every input tuple.\n    \n    Input:\n    first_list -- first dictionary of (stamp,data) tuples\n    second_list -- second dictionary of (stamp,data) tuples\n    offset -- time offset between both dictionaries (e.g., to model the delay between the sensors)\n    max_difference -- search radius for candidate generation\n\n    Output:\n    matches -- list of matched tuples ((stamp1,data1),(stamp2,data2))\n    \n    \"\"\"\n    first_keys = first_list.keys()\n    second_keys = second_list.keys()\n    potential_matches = [(abs(a - (b + offset)), a, b) \n                         for a in first_keys \n                         for b in second_keys \n                         if abs(a - (b + offset)) < max_difference]\n    potential_matches.sort()\n    matches = []\n    for diff, a, b in potential_matches:\n        if a in first_keys and b in second_keys:\n            first_keys.remove(a)\n            second_keys.remove(b)\n            matches.append((a, b))\n    \n    matches.sort()\n    return matches\n    \nif __name__ == '__main__':\n    \n    # parse command line\n    parser = argparse.ArgumentParser(description='''\n    This script takes two data files with timestamps and associates them   \n    ''')\n    parser.add_argument('first_file', help='estimated trajectory (format: timestamp data)')\n    parser.add_argument('second_file', help='groundtruth (format: timestamp data)')\n    parser.add_argument('--offset', help='time offset added to the timestamps of the second file (default: 0.0)',default=0.0)\n    parser.add_argument('--max_difference', help='maximally allowed time difference for matching entries (default: 0.02)',default=0.02)\n    args = parser.parse_args()\n\n    first_list = read_file_list(args.first_file)\n    second_list = read_file_list(args.second_file)\n\n    matches = associate(first_list, second_list,float(args.offset),float(args.max_difference))    \n    \n    filename = 'matches.txt' \n    associates_file = open(filename, 'w')     \n    associates_file.write('# %s %s\\n' % (args.first_file, args.second_file))                        \n    for a,b in matches:\n      img = first_list[a]\n      pos = second_list[b]\n      associates_file.write('%d %d\\n' % (first_list[a], second_list[b]))\n    print('Wrote matches to file: ' + filename)\n        \n"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/cpu_info.py",
    "content": "#!/usr/bin/python\n\nimport subprocess, re\n\ndef get_cpu_info():\n\tcommand = \"cat /proc/cpuinfo\"\n\tall_info = subprocess.check_output(command, shell=True).strip()\n\tfor line in all_info.split(\"\\n\"):\n\t\tif \"model name\" in line:\n\t\t\tmodel_name = re.sub(\".*model name.*:\", \"\", line,1).strip()\n\t\t\treturn model_name.replace(\"(R)\",\"\").replace(\"(TM)\", \"\")"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/depth_estimation.py",
    "content": "#!/usr/bin/python3\n\nimport numpy as np\nfrom scipy.stats import beta\nfrom scipy.stats import norm\nimport matplotlib.pyplot as plt\nfrom matplotlib import rc\nrc('font',**{'family':'serif','serif':['Cardo']})\nrc('text', usetex=True)\n\ndef q_of_Z_pi(Z, RHO, mu_sigma2_a_b):\n    q = norm.pdf(Z, mu_sigma2_a_b[0], np.sqrt(mu_sigma2_a_b[1])) * beta.pdf(RHO, mu_sigma2_a_b[2], mu_sigma2_a_b[3]); \n    return q\n    \ndef update_filter_vogiatzis(z, tau2, mu_range, mu_sigma2_a_b):\n    mu = mu_sigma2_a_b[0]\n    sigma2 = mu_sigma2_a_b[1]\n    a = mu_sigma2_a_b[2]\n    b = mu_sigma2_a_b[3]\n\n    norm_scale = np.sqrt(sigma2 + tau2)\n    \n    s2 = 1.0/(1.0/sigma2 + 1.0/tau2)\n    m = s2*(mu/sigma2 + z/tau2)\n    uniform_x = 1.0/mu_range\n    C1 = a/(a+b) * norm.pdf(z, mu, norm_scale)\n    C2 = b/(a+b) * uniform_x\n    normalization_constant = C1 + C2\n    C1 /= normalization_constant\n    C2 /= normalization_constant\n    f = C1*(a+1.0)/(a+b+1.0) + C2*a/(a+b+1.0)\n    e = C1*(a+1.0)*(a+2.0)/((a+b+1.0)*(a+b+2.0)) \\\n      + C2*a*(a+1.0)/((a+b+1.0)*(a+b+2.0));\n\n    # update parameters\n    mu_new = C1*m+C2*mu\n    sigma2 = C1*(s2 + m*m) + C2*(sigma2 + mu*mu) - mu_new*mu_new\n    mu = mu_new\n    a = (e - f) / (f - e / f)\n    b = a * (1.0 - f) / f\n    \n    mu_sigma2_a_b = np.array([mu, sigma2, a, b])\n    return mu_sigma2_a_b\n\ndef update_filter_gaussian(z, tau2, mu_sigma2):\n    mu = mu_sigma2[0]\n    sigma2 = mu_sigma2[1]\n\n    denom = (sigma2 + tau2)\n    mu = (sigma2 * z + tau2 * mu) / denom\n    sigma2 = sigma2 * tau2 / denom\n    mu_sigma2 = np.array([mu, sigma2])\n    return mu_sigma2\n\ndef plot_distribution_vogiatzis(ax, mu_sigma2_a_b, Z, RHO):\n    Q = q_of_Z_pi(Z, RHO, mu_sigma2_a_b)\n    ax.imshow(Q, aspect='auto', origin='lower')\n    \ndef plot_histogram(ax, z_meas_vec, z_min, z_max):\n    bins = np.linspace(z_min, z_max, 40)\n    ax.hist(z_meas_vec, bins, color='blue', edgecolor='w') # none\n    ax.set_xlim([z_min, z_max])\n    \ndef plot_gaussian(ax, mu_sigma2, z_min, z_max):\n    x = np.linspace(z_min, z_max, 1000)\n    y = norm.pdf(x, mu_sigma2[0], np.sqrt(mu_sigma2[1]))\n    ax.plot(x, y, lw=2.5, color='b')\n    ax.set_xlim([z_min, z_max])\n    \ndef experiment_1(inlier_prob = 0.7):\n    # init state\n    z_max = 1.0/0.5\n    z_min = 0.0\n    z_true = 1.0/4.0\n    z_init = 1.0/1.0\n    tau = 0.1\n    a_b_init = 1.5\n    N = 30              # num updates\n    mu_range = z_max - z_min\n    sigma2_init = mu_range * mu_range / 36.0\n    tau2 = tau*tau\n    mu_sigma2_a_b = [z_init, sigma2_init, a_b_init, a_b_init] # for vogiatzis\n    mu_sigma2 = [z_init, sigma2_init]                         # for gaussian\n    \n    \n    # prepare plotting\n    depth_samples = np.linspace(z_min, z_max, 400)\n    inlier_ratios = np.linspace(0, 1, 100)\n    Z, RHO = np.meshgrid(depth_samples, inlier_ratios)\n    axes_vec = list()    \n    fig1, axes = plt.subplots(3, 1, figsize=(5, 3))\n    axes_vec.append(axes)\n    fig2, axes = plt.subplots(3, 1, figsize=(5, 3))\n    axes_vec.append(axes)\n    fig3, axes = plt.subplots(3, 1, figsize=(5, 3))\n    axes_vec.append(axes)\n    \n    z_meas_vec = list()\n    \n    # perform measurement updates\n    for i in range(N):\n        \n        # measurement is inlier with certain probability\n        t = np.random.choice(['inlier', 'outlier'], p=[inlier_prob, (1.0-inlier_prob)])\n        if t == 'inlier':\n            z_meas = z_true  +  np.random.normal(0.0, tau)\n        elif t == 'outlier':\n            z_meas = np.random.uniform(z_min, z_max)\n        z_meas_vec.append(z_meas)\n            \n        mu_sigma2_a_b = update_filter_vogiatzis(z_meas, tau2, mu_range, mu_sigma2_a_b)\n        mu_sigma2 = update_filter_gaussian(z_meas, tau2, mu_sigma2)\n        if(i == 2):\n            plot_distribution_vogiatzis(axes_vec[0][2], mu_sigma2_a_b, Z, RHO)\n            plot_gaussian(axes_vec[0][1], mu_sigma2, z_min, z_max)\n            plot_histogram(axes_vec[0][0], z_meas_vec, z_min, z_max)\n        if(i == N/2):\n            plot_distribution_vogiatzis(axes_vec[1][2], mu_sigma2_a_b, Z, RHO)\n            plot_gaussian(axes_vec[1][1], mu_sigma2, z_min, z_max)\n            plot_histogram(axes_vec[1][0], z_meas_vec, z_min, z_max)\n        if(i == N-1) :\n            plot_distribution_vogiatzis(axes_vec[2][2], mu_sigma2_a_b, Z, RHO)\n            plot_gaussian(axes_vec[2][1], mu_sigma2, z_min, z_max)\n            plot_histogram(axes_vec[2][0], z_meas_vec, z_min, z_max)\n    \n    def format_axes(axes, n_iter):\n        \n        for i in range(3):\n            ax = axes[i]\n\n            ax.xaxis.set_ticks_position('none') # don't display tick marks\n            ax.yaxis.set_ticks_position('none')\n    \n            if i%3 == 2: # vogiatzis:\n              #ax.set_title('After '+str(int(n_iter))+' measurements, inlier probability = '+str(inlier_prob))\n              ax.set_ylabel(r\"$\\gamma$\", rotation=0)\n              ax.set_yticks([0,50,100])\n              ax.set_yticklabels([0,0.5,1])\n              ax.set_xlabel('Inverse Depth')\n            if i%3 == 1: # gaussian:\n              #ax.locator_params(axis='y', nbins=3)\n              ax.spines['top'].set_visible(False)\n              ax.spines['right'].set_visible(False)\n              ax.set_yticks([])\n              ax.set_xticks([])\n              ax.tick_params('x',top='off')\n            if i%3 == 0: # histogram\n              ax.spines['top'].set_visible(False)\n              ax.spines['right'].set_visible(False)\n              ax.set_yticks([])\n              ax.set_xticks([])\n              \n            #width = 1.0 - 2*h_space\n            #height = (1.0 - v_space) / n_plots - v_space\n            #ax.set_position([h_space, 1-(i+1)*(height+v_space)+v_space/2, width, height])\n        \n    \n    format_axes(axes_vec[0], 3)\n    format_axes(axes_vec[1], N/2)\n    format_axes(axes_vec[2], N)\n    \n    fig1.tight_layout()\n    fig1.savefig('depth_estimation_1.pdf')\n    fig2.tight_layout()\n    fig2.savefig('depth_estimation_2.pdf')\n    fig3.tight_layout()\n    fig3.savefig('depth_estimation_3.pdf')\n    \n    print('error vogiatzis = ' + str(np.abs(mu_sigma2_a_b[0]-z_true)))\n    print('error gaussian = ' + str(np.abs(mu_sigma2[0]-z_true)))\n    \n    \nexperiment_1(0.7)"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/depthmap_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\nimport numpy as np\nimport os\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.axes_grid1 import make_axes_locatable\n\ndef load_depthmap(depthmap_full_file_path, depthmap_rows, depthmap_cols, \n                  fileformat=np.float32, is_megapov_depthmap = 0):\n  depth_array = []\n  if depthmap_full_file_path.endswith('.bin'):\n    try:\n      depth_array = np.fromfile(depthmap_full_file_path, fileformat, -1, '') # the separator character '' specifies a binary file\n    except IOError:\n      print 'Could not open file ' + depthmap_full_file_path + ' for reading binary data.'\n      raise\n  else: \n    if depthmap_full_file_path.endswith('.depth'):\n      try:\n        if is_megapov_depthmap:\n          depth_array = np.fromfile(depthmap_full_file_path, dtype='>d')\n        else:\n          depth_array = np.fromfile(depthmap_full_file_path, np.float32, -1, ' ') # the separator character ' ' specifies a text file\n      except IOError:\n        print 'Could not open file ' + depthmap_full_file_path + ' for reading text data.'\n        raise\n    else:\n      raise MapIOError('Depthmap filename suffix is not correct.')\n  if (len(depth_array) != (depthmap_rows * depthmap_cols)):\n      raise MapIOError('Read data do not match the provided size.')\n  return depth_array\n  \ndef load_povray_depthmap(depthmap_full_file_path, rows, cols,\n                         scale_factor = 1.0, is_megapov_depthmap = 0):\n  depth_array = []  \n  try:\n    depth_array = load_depthmap(depthmap_full_file_path, rows, cols, is_megapov_depthmap)\n  except IOError:\n    raise\n  except MapIOError:\n    raise\n  return depth_array * scale_factor\n  \ndef show_depthmap(ax, depth_array, rows, cols, min_value = None, max_value = None):\n  image = np.reshape(depth_array, [rows, cols], 'C')\n  im = ax.imshow(image, vmin = min_value, vmax = max_value)\n  divider = make_axes_locatable(ax)\n  cax = divider.append_axes(\"right\", size=\"5%\", pad=0.05)\n  plt.colorbar(im, cax=cax)\n  "
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/math_utils.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCreated on Wed Aug  7 22:13:06 2013\n\n@author: cforster\n\"\"\"\n\nimport numpy as np\n\ndef unproject(a):\n    \"\"\"Makes a vector homogeneous\"\"\"\n    return np.append(a, 1)\n\ndef project(a):\n    \"\"\"De-homogenises a vector\"\"\"\n    return a[:-1]/float(a[-1])\n\ndef skew(v):\n    \"\"\"Returns the skew-symmetric matrix of a vector\"\"\"\n    return np.array([[0, -v[2], v[1]],\n                    [v[2], 0, -v[0]],\n                    [-v[1], v[0], 0]], dtype=np.float32)\n                    \ndef unskew(R):\n    \"\"\"Returns the coordinates of a skew-symmetric matrix\"\"\"\n    return np.array([R[2,1], R[0,2], R[1,0]], dtype=np.float32)"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/pinhole_camera.py",
    "content": "#!/usr/bin/python\n\nimport numpy as np\nimport vikit_py.math_utils as math_utils\n\nclass PinholeCamera:\n    \"\"\" Pinhole Camera Model \"\"\"\n         \n    def __init__(self, width, height, fx, fy, cx, cy):\n        self.width = width\n        self.height = height\n        self.focal_length = np.array([fx, fy])\n        self.principle_point = np.array([cx, cy])\n    \n    def back_project(self, px):\n        \"\"\"Computes the bearing-vector from the pixel measurement. Z-Component is 1\"\"\"\n        uv = 1.0/self.focal_length * (px - self.principle_point)\n        f = math_utils.unproject(uv)\n        return f\n            \n    def project(self, xyz):\n        \"\"\"Projects a euclidean point to a 2d image measurement\"\"\"\n        if(xyz[2] < 0):\n            return np.zeros(2), False\n        uv = math_utils.project(xyz[:3])\n        px = uv*self.focal_length + self.principle_point\n        visible = (px[0] >= 0 and px[0] < self.width and px[1] >= 0 and px[1] < self.height)      \n        return px, visible"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/plot_utils.py",
    "content": "#!/usr/bin/python\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom mpl_toolkits.mplot3d import Axes3D\nfrom matplotlib import rc\n\n# tell matplotlib to use latex font\nrc('font',**{'family':'serif','serif':['Cardo']})\nrc('text', usetex=True)\n\ndef axis_equal_3d(ax):\n    extents = np.array([getattr(ax, 'get_{}lim'.format(dim))() for dim in 'xyz'])\n    sz = extents[:,1] - extents[:,0]\n    centers = np.mean(extents, axis=1)\n    maxsize = max(abs(sz))\n    r = maxsize/2\n    for ctr, dim in zip(centers, 'xyz'):\n        getattr(ax, 'set_{}lim'.format(dim))(ctr - r, ctr + r)\n        \ndef draw_coordinate_frame(ax, t_world_body, R_world_body, alpha=1.0):\n    \"\"\"draws the coordinate frame in the provided figure-axis (world coordinates)\"\"\"\n    T_wf = np.zeros((3,4))\n    T_wf[0:3,0:3] = R_world_body\n    T_wf[0:3,3]   = t_world_body\n    line_length = 0.1\n    ax.plot([T_wf[0,3], T_wf[0,3]+T_wf[0,0]*line_length],\n            [T_wf[1,3], T_wf[1,3]+T_wf[1,0]*line_length],\n            [T_wf[2,3], T_wf[2,3]+T_wf[2,0]*line_length], color='r', alpha=alpha)\n    ax.plot([T_wf[0,3], T_wf[0,3]+T_wf[0,1]*line_length],\n            [T_wf[1,3], T_wf[1,3]+T_wf[1,1]*line_length],\n            [T_wf[2,3], T_wf[2,3]+T_wf[2,1]*line_length], color='g', alpha=alpha)\n    ax.plot([T_wf[0,3], T_wf[0,3]+T_wf[0,2]*line_length],\n            [T_wf[1,3], T_wf[1,3]+T_wf[1,2]*line_length],\n            [T_wf[2,3], T_wf[2,3]+T_wf[2,2]*line_length], color='b', alpha=alpha) "
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/ros_node.py",
    "content": "#!/usr/bin/python\n\nimport os\nimport rospy\nimport psutil\nimport threading\nimport numpy as np\n\ndef log_cpu_usage_thread(trace_dir, stop_event):\n    cpu_measurements = list()\n    mem_measurements = list()\n    while not stop_event.is_set():        \n        cpu_perc = psutil.cpu_percent(1, percpu=True)\n        cpu_measurements.append(cpu_perc)\n        mem_measurements.append([psutil.virtual_memory().percent, psutil.swap_memory().percent])\n        stop_event.wait(1.0)\n    m_cpu = np.array(cpu_measurements)\n    m_mem = np.array(mem_measurements)\n    np.savetxt(os.path.join(trace_dir, 'log_cpu_usage.txt'), m_cpu, fmt='%.2e')\n    np.savetxt(os.path.join(trace_dir, 'log_memory_usage.txt'), m_mem, fmt='%.2e')\n\nclass RosNode:\n    def __init__(self, package, executable):\n        self._package = package\n        self._executable = executable\n        self._param_string = ''\n    \n    def add_parameters(self, namespace, parameter_dictionary):\n        for key in parameter_dictionary.keys():\n            if key == 'flags':\n                continue\n            if type(parameter_dictionary[key]) is dict:\n                self.add_parameters(namespace+key+'/', parameter_dictionary[key])\n            else:\n                self._param_string += ' _'+namespace+key+':='+str(parameter_dictionary[key])\n    \n    def add_flags(self, flag_dictionary):\n        for key, value in flag_dictionary.iteritems():\n            self._param_string += ' --'+key+'='+str(value)\n                \n    def clear_all_parameters(self):\n        params = rospy.get_param_names()\n        for p in params:\n            rospy.delete_param(p)\n\n    def run(self, parameter_dictionary, namespace='', log_cpu_usage=True, log_cpu_usage_folder='/tmp'):\n        self.clear_all_parameters()\n        self.add_parameters(namespace, parameter_dictionary)\n        if 'flags' in parameter_dictionary:\n            self.add_flags(parameter_dictionary['flags'])\n            \n        if log_cpu_usage:\n            print('Log CPU Usage')\n            t_stop = threading.Event()\n            t = threading.Thread(target=log_cpu_usage_thread, args=(log_cpu_usage_folder,t_stop))    \n            t.start()\n            \n        command = 'rosrun ' + self._package + ' ' + self._executable + ' ' + self._param_string\n        print('Executing Process: '+command)\n        os.system(command)\n        print('ROS node finished processing.')\n        \n        if log_cpu_usage:\n            t_stop.set()\n            t.join()\n"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/rotation_utils.py",
    "content": "#!/usr/bin/python\n\nimport math\nimport numpy as np\n\n_EPS = np.finfo(float).eps * 4.0\n\n\n   \n    \n        \n    \ndef quat2dcm(quaternion):\n    \"\"\"Returns direct cosine matrix from quaternion (Hamiltonian, [x y z w])\n    \"\"\"\n    q = np.array(quaternion[:4], dtype=np.float64, copy=True)\n    nq = np.dot(q, q)\n    if nq < _EPS:\n        return np.identity(4)\n    q *= math.sqrt(2.0 / nq)\n    q = np.outer(q, q)\n    return np.array((\n        (1.0-q[1, 1]-q[2, 2],     q[0, 1]-q[2, 3],     q[0, 2]+q[1, 3]),\n        (    q[0, 1]+q[2, 3], 1.0-q[0, 0]-q[2, 2],     q[1, 2]-q[0, 3]),\n        (    q[0, 2]-q[1, 3],     q[1, 2]+q[0, 3], 1.0-q[0, 0]-q[1, 1])),\n        dtype=np.float64)\n\n\ndef dcm2quat(matrix_3x3):\n    \"\"\"Return quaternion (Hamiltonian, [x y z w]) from rotation matrix.\n    This algorithm comes from  \"Quaternion Calculus and Fast Animation\",\n    Ken Shoemake, 1987 SIGGRAPH course notes\n    (from Eigen)\n    \"\"\"\n    q = np.empty((4, ), dtype=np.float64)\n    M = np.array(matrix_3x3, dtype=np.float64, copy=False)[:4, :4]\n    t = np.trace(M)\n    if t > 0.0:\n        t = math.sqrt(t+1.0)\n        q[3] = 0.5*t\n        t = 0.5/t\n        q[0] = (M[2, 1] - M[1, 2])*t\n        q[1] = (M[0, 2] - M[2, 0])*t\n        q[2] = (M[1, 0] - M[0, 1])*t\n    else:\n        i, j, k = 0, 1, 2\n        if M[1, 1] > M[0, 0]:\n            i, j, k = 1, 2, 0\n        if M[2, 2] > M[i, i]:\n            i, j, k = 2, 0, 1\n        t = math.sqrt(M[i, i] - M[j, j] - M[k, k] + 1.0)\n        q[i] = 0.5*t\n        t = 0.5/t\n        q[3] = (M[k, j] - M[j, k])*t\n        q[j] = (M[i, j] + M[j, i])*t\n        q[k] = (M[k, i] + M[i, k])*t\n    return q\n    \ndef dcm2rpy(matrix):\n    \"\"\"Return roll pitch yaw from matrix\n    \"\"\"\n    R = np.array(matrix, dtype=np.float64, copy=False)[:3, :3]\n    rpy = np.empty((3), dtype=np.float64)\n    rpy[1] = math.atan2(-R[2,0], math.sqrt( R[0,0]**2 + R[1,0]**2 ))\n        \n    if np.abs(rpy[1] - math.pi/2.0 ) < 0.00001:\n        rpy[2] = 0;\n        rpy[0] = -math.atan2( R[0,1], R[1,1] )\n    else:\n        if np.abs(rpy[1] + math.pi/2.0 ) < 0.00001:\n            rpy[2] = 0;\n            rpy[0] = -math.atan2( R[0,1], R[1,1] );\n        else:\n            rpy[2] = math.atan2( R[1,0]/math.cos(rpy[1]), R[0,0]/math.cos(rpy[1]) )\n            rpy[0] = math.atan2( R[2,1]/math.cos(rpy[1]), R[2,2]/math.cos(rpy[1]) )\n            \n    return rpy\n    \ndef quat2rpy(quaternion):\n    \"\"\"Return roll pitch yaw from quaternion\n    \"\"\"\n    return dcm2rpy(quat2dcm(quaternion))\n    \ndef quat_multiply(quaternion1, quaternion0):\n    \"\"\"Return multiplication of two quaternions.\n    \"\"\"\n    x0, y0, z0, w0 = quaternion0\n    x1, y1, z1, w1 = quaternion1\n    return np.array((\n         x1*w0 + y1*z0 - z1*y0 + w1*x0,\n        -x1*z0 + y1*w0 + z1*x0 + w1*y0,\n         x1*y0 - y1*x0 + z1*w0 + w1*z0,\n        -x1*x0 - y1*y0 - z1*z0 + w1*w0), dtype=np.float64)\n\n\ndef quat_conjugate(quaternion):\n    \"\"\"Return conjugate of quaternion.\n    \"\"\"\n    return np.array((-quaternion[0], -quaternion[1],\n                        -quaternion[2], quaternion[3]), dtype=np.float64)\n\ndef quat_inverse(quaternion):\n    \"\"\"Return inverse of quaternion.\n    \"\"\"\n    return quat_conjugate(quaternion) / np.dot(quaternion, quaternion)\n\n\n    \n    \n"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/test_transformations.py",
    "content": "#!/usr/bin/env python\n\nimport unittest\nimport numpy as np\nimport numpy.testing as npt\nimport transformations as tf\n\nclass TestTransformations(unittest.TestCase):\n    \n    def test_skew(self):\n        for i in range(100):\n            v = tf.random_vector(3)\n            R = tf.skew(v)\n            npt.assert_array_almost_equal(v, tf.unskew(R))\n            \n    def test_first_order_rotation(self):\n        for i in range(100):\n            rotvec = tf.random_vector(3)*np.pi*2.0\n            R = tf.first_order_rotation(rotvec)\n            npt.assert_array_almost_equal(R, np.identity(3)+tf.skew(rotvec))\n            \n    def test_axis_angle(self):\n        for i in range(100):\n            axis = tf.random_vector(3)\n            axis = axis/np.linalg.norm(axis)\n            theta = np.random.rand()*np.pi\n            R = tf.axis_angle(axis, theta)\n            npt.assert_almost_equal(np.linalg.det(R), 1.0)\n    \n    def test_compare_axis_angle(self):\n        for i in range(100):\n            axis = tf.random_vector(3)\n            axis = axis/np.linalg.norm(axis)\n            theta = np.random.rand()*np.pi\n            R_1 = tf.axis_angle(axis, theta)\n            R_2 = tf.rotation_matrix(theta, axis)[:3,:3]\n            npt.assert_array_almost_equal(R_1, R_2)\n    \n    def test_right_jacobian_so3(self):\n        # test first-order approximation\n        for i in range(100):\n            rotvec = tf.random_vector(3)*np.pi\n            perturbation = tf.random_vector(3) / 1000.0\n            R = tf.expmap_so3(rotvec+perturbation)\n            Jr = tf.right_jacobian_so3(rotvec)\n            R_approx = np.dot(tf.expmap_so3(rotvec), tf.expmap_so3(np.dot(Jr, perturbation)))\n            npt.assert_array_almost_equal(R, R_approx)\n            \n    def test_logmap_so3(self):\n        for i in range(100):\n            axis = tf.random_vector(3)\n            axis = axis/np.linalg.norm(axis)\n            # can't have angles larger than np.pi otherwise the logmap is a bijection\n            theta = np.random.rand()*np.pi*0.999 \n            R = tf.expmap_so3(axis*theta)\n            rotvec = tf.logmap_so3(R)\n            npt.assert_array_almost_equal(axis*theta, rotvec)\n            \n    def test_S_inv_eulerZYX_body_deriv(self):\n        \n        for i in range(100):\n            euler_coordinates = tf.random_vector(3)\n            omega = tf.random_vector(3) / 10.0\n            perturbation = tf.random_vector(3) / 1000.0\n            e = np.dot(tf.S_inv_eulerZYX_body(euler_coordinates), omega)\n            e_perturbed = np.dot(tf.S_inv_eulerZYX_body(euler_coordinates + perturbation), omega)\n            J = tf.S_inv_eulerZYX_body_deriv(euler_coordinates, omega)                              \n            e_perturbed_predicted = e + np.dot(J, perturbation)\n            npt.assert_array_almost_equal(e_perturbed, e_perturbed_predicted)\n\nif __name__ == '__main__':\n    suite = unittest.TestLoader().loadTestsFromTestCase(TestTransformations)\n    unittest.TextTestRunner(verbosity=2).run(suite)"
  },
  {
    "path": "svo_vikit/vikit_py/src/vikit_py/transformations.py",
    "content": "# -*- coding: utf-8 -*-\n# transformations.py\n\n# Copyright (c) 2006, Christoph Gohlke\n# Copyright (c) 2006-2009, The Regents of the University of California\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are met:\n#\n# * Redistributions of source code must retain the above copyright\n#   notice, this list of conditions and the following disclaimer.\n# * Redistributions in binary form must reproduce the above copyright\n#   notice, this list of conditions and the following disclaimer in the\n#   documentation and/or other materials provided with the distribution.\n# * Neither the name of the copyright holders nor the names of any\n#   contributors may be used to endorse or promote products derived\n#   from this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n# POSSIBILITY OF SUCH DAMAGE.\n\n\"\"\"Homogeneous Transformation Matrices and Quaternions.\n\nA library for calculating 4x4 matrices for translating, rotating, reflecting,\nscaling, shearing, projecting, orthogonalizing, and superimposing arrays of\n3D homogeneous coordinates as well as for converting between rotation matrices,\nEuler angles, and quaternions. Also includes an Arcball control object and\nfunctions to decompose transformation matrices.\n\n:Authors:\n  `Christoph Gohlke <http://www.lfd.uci.edu/~gohlke/>`__,\n  Laboratory for Fluorescence Dynamics, University of California, Irvine\n\n:Version: 20090418\n\nRequirements\n------------\n\n* `Python 2.6 <http://www.python.org>`__\n* `Numpy 1.3 <http://numpy.scipy.org>`__\n* `transformations.c 20090418 <http://www.lfd.uci.edu/~gohlke/>`__\n  (optional implementation of some functions in C)\n\nNotes\n-----\n\nMatrices (M) can be inverted using numpy.linalg.inv(M), concatenated using\nnumpy.dot(M0, M1), or used to transform homogeneous coordinates (v) using\nnumpy.dot(M, v) for shape (4, \\*) \"point of arrays\", respectively\nnumpy.dot(v, M.T) for shape (\\*, 4) \"array of points\".\n\nCalculations are carried out with numpy.float64 precision.\n\nThis Python implementation is not optimized for speed.\n\nVector, point, quaternion, and matrix function arguments are expected to be\n\"array like\", i.e. tuple, list, or numpy arrays.\n\nReturn types are numpy arrays unless specified otherwise.\n\nAngles are in radians unless specified otherwise.\n\nQuaternions ix+jy+kz+w are represented as [x, y, z, w].\n\nUse the transpose of transformation matrices for OpenGL glMultMatrixd().\n\nA triple of Euler angles can be applied/interpreted in 24 ways, which can\nbe specified using a 4 character string or encoded 4-tuple:\n\n  *Axes 4-string*: e.g. 'sxyz' or 'ryxy'\n\n  - first character : rotations are applied to 's'tatic or 'r'otating frame\n  - remaining characters : successive rotation axis 'x', 'y', or 'z'\n\n  *Axes 4-tuple*: e.g. (0, 0, 0, 0) or (1, 1, 1, 1)\n\n  - inner axis: code of axis ('x':0, 'y':1, 'z':2) of rightmost matrix.\n  - parity : even (0) if inner axis 'x' is followed by 'y', 'y' is followed\n    by 'z', or 'z' is followed by 'x'. Otherwise odd (1).\n  - repetition : first and last axis are same (1) or different (0).\n  - frame : rotations are applied to static (0) or rotating (1) frame.\n\nReferences\n----------\n\n(1)  Matrices and transformations. Ronald Goldman.\n     In \"Graphics Gems I\", pp 472-475. Morgan Kaufmann, 1990.\n(2)  More matrices and transformations: shear and pseudo-perspective.\n     Ronald Goldman. In \"Graphics Gems II\", pp 320-323. Morgan Kaufmann, 1991.\n(3)  Decomposing a matrix into simple transformations. Spencer Thomas.\n     In \"Graphics Gems II\", pp 320-323. Morgan Kaufmann, 1991.\n(4)  Recovering the data from the transformation matrix. Ronald Goldman.\n     In \"Graphics Gems II\", pp 324-331. Morgan Kaufmann, 1991.\n(5)  Euler angle conversion. Ken Shoemake.\n     In \"Graphics Gems IV\", pp 222-229. Morgan Kaufmann, 1994.\n(6)  Arcball rotation control. Ken Shoemake.\n     In \"Graphics Gems IV\", pp 175-192. Morgan Kaufmann, 1994.\n(7)  Representing attitude: Euler angles, unit quaternions, and rotation\n     vectors. James Diebel. 2006.\n(8)  A discussion of the solution for the best rotation to relate two sets\n     of vectors. W Kabsch. Acta Cryst. 1978. A34, 827-828.\n(9)  Closed-form solution of absolute orientation using unit quaternions.\n     BKP Horn. J Opt Soc Am A. 1987. 4(4), 629-642.\n(10) Quaternions. Ken Shoemake.\n     http://www.sfu.ca/~jwa3/cmpt461/files/quatut.pdf\n(11) From quaternion to matrix and back. JMP van Waveren. 2005.\n     http://www.intel.com/cd/ids/developer/asmo-na/eng/293748.htm\n(12) Uniform random rotations. Ken Shoemake.\n     In \"Graphics Gems III\", pp 124-132. Morgan Kaufmann, 1992.\n\n\nExamples\n--------\n\n>>> alpha, beta, gamma = 0.123, -1.234, 2.345\n>>> origin, xaxis, yaxis, zaxis = (0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1)\n>>> I = identity_matrix()\n>>> Rx = rotation_matrix(alpha, xaxis)\n>>> Ry = rotation_matrix(beta, yaxis)\n>>> Rz = rotation_matrix(gamma, zaxis)\n>>> R = concatenate_matrices(Rx, Ry, Rz)\n>>> euler = euler_from_matrix(R, 'rxyz')\n>>> numpy.allclose([alpha, beta, gamma], euler)\nTrue\n>>> Re = euler_matrix(alpha, beta, gamma, 'rxyz')\n>>> is_same_transform(R, Re)\nTrue\n>>> al, be, ga = euler_from_matrix(Re, 'rxyz')\n>>> is_same_transform(Re, euler_matrix(al, be, ga, 'rxyz'))\nTrue\n>>> qx = quaternion_about_axis(alpha, xaxis)\n>>> qy = quaternion_about_axis(beta, yaxis)\n>>> qz = quaternion_about_axis(gamma, zaxis)\n>>> q = quaternion_multiply(qx, qy)\n>>> q = quaternion_multiply(q, qz)\n>>> Rq = quaternion_matrix(q)\n>>> is_same_transform(R, Rq)\nTrue\n>>> S = scale_matrix(1.23, origin)\n>>> T = translation_matrix((1, 2, 3))\n>>> Z = shear_matrix(beta, xaxis, origin, zaxis)\n>>> R = random_rotation_matrix(numpy.random.rand(3))\n>>> M = concatenate_matrices(T, R, Z, S)\n>>> scale, shear, angles, trans, persp = decompose_matrix(M)\n>>> numpy.allclose(scale, 1.23)\nTrue\n>>> numpy.allclose(trans, (1, 2, 3))\nTrue\n>>> numpy.allclose(shear, (0, math.tan(beta), 0))\nTrue\n>>> is_same_transform(R, euler_matrix(axes='sxyz', *angles))\nTrue\n>>> M1 = compose_matrix(scale, shear, angles, trans, persp)\n>>> is_same_transform(M, M1)\nTrue\n\n\"\"\"\n\nfrom __future__ import division\n\nimport warnings\nimport math\n\nimport numpy\n\n# Documentation in HTML format can be generated with Epydoc\n__docformat__ = \"restructuredtext en\"\n\ndef skew(v):\n    \"\"\"Returns the skew-symmetric matrix of a vector\n    cfo, 2015/08/13\n    \n    \"\"\"\n    return numpy.array([[0, -v[2], v[1]],\n                        [v[2], 0, -v[0]],\n                        [-v[1], v[0], 0]], dtype=numpy.float64)\n                    \ndef unskew(R):\n    \"\"\"Returns the coordinates of a skew-symmetric matrix\n    cfo, 2015/08/13\n       \n    \"\"\"\n    return numpy.array([R[2,1], R[0,2], R[1,0]], dtype=numpy.float64)\n    \ndef first_order_rotation(rotvec):\n    \"\"\"First order approximation of a rotation: I + skew(rotvec)\n    cfo, 2015/08/13\n    \n    \"\"\"\n    R = numpy.zeros((3,3), dtype=numpy.float64)\n    R[0,0] = 1.0\n    R[1,0] = rotvec[2]\n    R[2,0] = -rotvec[1]\n    R[0,1] = -rotvec[2]\n    R[1,1] = 1.0\n    R[2,1] = rotvec[0]\n    R[0,2] = rotvec[1]\n    R[1,2] = -rotvec[0]\n    R[2,2] = 1.0\n    return R\n\ndef axis_angle(axis, theta):\n    \"\"\"Compute a rotation matrix from an axis and an angle.\n    Returns 3x3 Matrix.\n    Is the same as transformations.rotation_matrix(theta, axis).\n    cfo, 2015/08/13\n    \n    \"\"\"\n    if theta*theta > _EPS:\n        wx = axis[0]; wy = axis[1]; wz = axis[2]\n        costheta = numpy.cos(theta); sintheta = numpy.sin(theta)\n        c_1 = 1.0 - costheta\n        wx_sintheta = wx * sintheta\n        wy_sintheta = wy * sintheta\n        wz_sintheta = wz * sintheta\n        C00 = c_1 * wx * wx\n        C01 = c_1 * wx * wy\n        C02 = c_1 * wx * wz\n        C11 = c_1 * wy * wy\n        C12 = c_1 * wy * wz\n        C22 = c_1 * wz * wz\n        R = numpy.zeros((3,3), dtype=numpy.float64)\n        R[0,0] =     costheta + C00;\n        R[1,0] =  wz_sintheta + C01;\n        R[2,0] = -wy_sintheta + C02;\n        R[0,1] = -wz_sintheta + C01;\n        R[1,1] =     costheta + C11;\n        R[2,1] =  wx_sintheta + C12;\n        R[0,2] =  wy_sintheta + C02;\n        R[1,2] = -wx_sintheta + C12;\n        R[2,2] =     costheta + C22;\n        return R\n    else:\n        return first_order_rotation(axis*theta)\n    \ndef expmap_so3(rotvec):\n    \"\"\"Exponential map at identity.\n    Create a rotation from canonical coordinates using Rodrigues' formula.\n    cfo, 2015/08/13\n       \n    \"\"\"\n    theta = numpy.linalg.norm(rotvec)\n    axis = rotvec/theta\n    return axis_angle(axis, theta)\n\ndef logmap_so3(R):\n    \"\"\"Logmap at the identity.\n    Returns canonical coordinates of rotation.\n    cfo, 2015/08/13\n       \n    \"\"\"   \n    R11 = R[0, 0]; R12 = R[0, 1]; R13 = R[0, 2]\n    R21 = R[1, 0]; R22 = R[1, 1]; R23 = R[1, 2]\n    R31 = R[2, 0]; R32 = R[2, 1]; R33 = R[2, 2]\n    tr = numpy.trace(R)\n    omega = numpy.empty((3,), dtype=numpy.float64)\n    \n    # when trace == -1, i.e., when theta = +-pi, +-3pi, +-5pi, we do something \n    # special\n    if(numpy.abs(tr + 1.0) < 1e-10):\n        if(numpy.abs(R33 + 1.0) > 1e-10):\n            omega = (numpy.pi / numpy.sqrt(2.0 + 2.0 * R33)) * numpy.array([R13, R23, 1.0+R33])        \n        elif(numpy.abs(R22 + 1.0) > 1e-10):\n            omega = (numpy.pi / numpy.sqrt(2.0 + 2.0 * R22)) * numpy.array([R12, 1.0+R22, R32])\n        else:\n            omega = (numpy.pi / numpy.sqrt(2.0 + 2.0 * R11)) * numpy.array([1.0+R11, R21, R31])\n    else:\n        magnitude = 1.0\n        tr_3 = tr - 3.0\n        if tr_3 < -1e-7:\n            theta = numpy.arccos((tr - 1.0) / 2.0)\n            magnitude = theta / (2.0 * numpy.sin(theta))\n        else:\n            # when theta near 0, +-2pi, +-4pi, etc. (trace near 3.0)\n            # use Taylor expansion: theta \\approx 1/2-(t-3)/12 + O((t-3)^2)\n            magnitude = 0.5 - tr_3 * tr_3 / 12.0;\n            \n        omega = magnitude * numpy.array([R32 - R23, R13 - R31, R21 - R12])\n        \n    return omega\n\n    \ndef right_jacobian_so3(rotvec):\n    \"\"\"Right Jacobian for Exponential map in SO(3)\n    Equation (10.86) and following equations in G.S. Chirikjian, \"Stochastic\n    Models, Information Theory, and Lie Groups\", Volume 2, 2008.\n    \n    > expmap_so3(thetahat + omega) \\approx expmap_so3(thetahat) * expmap_so3(Jr * omega)\n    where Jr = right_jacobian_so3(thetahat);\n    This maps a perturbation in the tangent space (omega) to a perturbation\n    on the manifold (expmap_so3(Jr * omega))\n    cfo, 2015/08/13\n   \n    \"\"\"\n   \n    theta2 = numpy.dot(rotvec, rotvec)\n    if theta2 <= _EPS:\n        return numpy.identity(3, dtype=numpy.float64)\n    else:\n        theta = numpy.sqrt(theta2)\n        Y = skew(rotvec) / theta\n        I_3x3 = numpy.identity(3, dtype=numpy.float64)\n        J_r = I_3x3 - ((1.0 - numpy.cos(theta)) / theta) * Y + (1.0 - numpy.sin(theta) / theta) * numpy.dot(Y, Y)\n        return J_r\n\ndef S_inv_eulerZYX_body(euler_coordinates):\n    \"\"\" Relates angular rates w to changes in eulerZYX coordinates.\n    dot(euler) = S^-1(euler_coordinates) * omega\n    Also called: rotation-rate matrix. (E in Lupton paper)\n    cfo, 2015/08/13\n    \n    \"\"\"\n    y = euler_coordinates[1]\n    z = euler_coordinates[2]\n    E = numpy.zeros((3,3))\n    E[0,1] = numpy.sin(z)/numpy.cos(y)\n    E[0,2] = numpy.cos(z)/numpy.cos(y)\n    E[1,1] = numpy.cos(z)\n    E[1,2] = -numpy.sin(z)\n    E[2,0] = 1.0\n    E[2,1] = numpy.sin(z)*numpy.sin(y)/numpy.cos(y)\n    E[2,2] = numpy.cos(z)*numpy.sin(y)/numpy.cos(y)\n    return E\n    \ndef S_inv_eulerZYX_body_deriv(euler_coordinates, omega):\n    \"\"\" Compute dE(euler_coordinates)*omega/deuler_coordinates\n        cfo, 2015/08/13 \n        \n    \"\"\"\n    \n    y = euler_coordinates[1]\n    z = euler_coordinates[2]\n    \n   \n    \"\"\"\n    w1 = omega[0]; w2 = omega[1]; w3 = omega[2]\n    J = numpy.zeros((3,3))\n    J[0,0] = 0\n    J[0,1] = math.tan(y) / math.cos(y) * (math.sin(z) * w2 + math.cos(z) * w3)\n    J[0,2] = w2/math.cos(y)*math.cos(z) - w3/math.cos(y)*math.sin(z)\n    J[1,0] = 0\n    J[1,1] = 0\n    J[1,2] = -w2*math.sin(z) - w3*math.cos(z)\n    J[2,0] = w1\n    J[2,1] = 1.0/math.cos(y)**2 * (w2 * math.sin(z) + w3 * math.cos(z))\n    J[2,2] = w2*math.tan(y)*math.cos(z) - w3*math.tan(y)*math.sin(z)\n   \n    \"\"\"\n    \n    #second version, x = psi, y = theta, z = phi\n    # J_x = numpy.zeros((3,3))\n    J_y = numpy.zeros((3,3))\n    J_z = numpy.zeros((3,3))\n    \n    # dE^-1/dtheta\n    J_y[0,1] = math.tan(y)/math.cos(y)*math.sin(z)\n    J_y[0,2] = math.tan(y)/math.cos(y)*math.cos(z)\n    J_y[2,1] = math.sin(z)/(math.cos(y))**2\n    J_y[2,2] = math.cos(z)/(math.cos(y))**2\n    \n    # dE^-1/dphi\n    J_z[0,1] = math.cos(z)/math.cos(y)\n    J_z[0,2] = -math.sin(z)/math.cos(y)\n    J_z[1,1] = -math.sin(z)\n    J_z[1,2] = -math.cos(z)\n    J_z[2,1] = math.cos(z)*math.tan(y)\n    J_z[2,2] = -math.sin(z)*math.tan(y)\n    \n    J = numpy.zeros((3,3))\n    J[:,1] = numpy.dot(J_y, omega)\n    J[:,2] = numpy.dot(J_z, omega)\n\n    return J\n    \n\ndef identity_matrix():\n    \"\"\"Return 4x4 identity/unit matrix.\n\n    >>> I = identity_matrix()\n    >>> numpy.allclose(I, numpy.dot(I, I))\n    True\n    >>> numpy.sum(I), numpy.trace(I)\n    (4.0, 4.0)\n    >>> numpy.allclose(I, numpy.identity(4, dtype=numpy.float64))\n    True\n\n    \"\"\"\n    return numpy.identity(4, dtype=numpy.float64)\n\n\ndef translation_matrix(direction):\n    \"\"\"Return matrix to translate by direction vector.\n\n    >>> v = numpy.random.random(3) - 0.5\n    >>> numpy.allclose(v, translation_matrix(v)[:3, 3])\n    True\n\n    \"\"\"\n    M = numpy.identity(4)\n    M[:3, 3] = direction[:3]\n    return M\n\n\ndef translation_from_matrix(matrix):\n    \"\"\"Return translation vector from translation matrix.\n\n    >>> v0 = numpy.random.random(3) - 0.5\n    >>> v1 = translation_from_matrix(translation_matrix(v0))\n    >>> numpy.allclose(v0, v1)\n    True\n\n    \"\"\"\n    return numpy.array(matrix, copy=False)[:3, 3].copy()\n\ndef convert_3x3_to_4x4(matrix_3x3):\n    M = numpy.identity(4)\n    M[:3,:3] = matrix_3x3\n    return M\n\ndef reflection_matrix(point, normal):\n    \"\"\"Return matrix to mirror at plane defined by point and normal vector.\n\n    >>> v0 = numpy.random.random(4) - 0.5\n    >>> v0[3] = 1.0\n    >>> v1 = numpy.random.random(3) - 0.5\n    >>> R = reflection_matrix(v0, v1)\n    >>> numpy.allclose(2., numpy.trace(R))\n    True\n    >>> numpy.allclose(v0, numpy.dot(R, v0))\n    True\n    >>> v2 = v0.copy()\n    >>> v2[:3] += v1\n    >>> v3 = v0.copy()\n    >>> v2[:3] -= v1\n    >>> numpy.allclose(v2, numpy.dot(R, v3))\n    True\n\n    \"\"\"\n    normal = unit_vector(normal[:3])\n    M = numpy.identity(4)\n    M[:3, :3] -= 2.0 * numpy.outer(normal, normal)\n    M[:3, 3] = (2.0 * numpy.dot(point[:3], normal)) * normal\n    return M\n\n\ndef reflection_from_matrix(matrix):\n    \"\"\"Return mirror plane point and normal vector from reflection matrix.\n\n    >>> v0 = numpy.random.random(3) - 0.5\n    >>> v1 = numpy.random.random(3) - 0.5\n    >>> M0 = reflection_matrix(v0, v1)\n    >>> point, normal = reflection_from_matrix(M0)\n    >>> M1 = reflection_matrix(point, normal)\n    >>> is_same_transform(M0, M1)\n    True\n\n    \"\"\"\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)\n    # normal: unit eigenvector corresponding to eigenvalue -1\n    l, V = numpy.linalg.eig(M[:3, :3])\n    i = numpy.where(abs(numpy.real(l) + 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no unit eigenvector corresponding to eigenvalue -1\")\n    normal = numpy.real(V[:, i[0]]).squeeze()\n    # point: any unit eigenvector corresponding to eigenvalue 1\n    l, V = numpy.linalg.eig(M)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no unit eigenvector corresponding to eigenvalue 1\")\n    point = numpy.real(V[:, i[-1]]).squeeze()\n    point /= point[3]\n    return point, normal\n\n\ndef rotation_matrix(angle, direction, point=None):\n    \"\"\"Return matrix to rotate about axis defined by point and direction.\n\n    >>> angle = (random.random() - 0.5) * (2*math.pi)\n    >>> direc = numpy.random.random(3) - 0.5\n    >>> point = numpy.random.random(3) - 0.5\n    >>> R0 = rotation_matrix(angle, direc, point)\n    >>> R1 = rotation_matrix(angle-2*math.pi, direc, point)\n    >>> is_same_transform(R0, R1)\n    True\n    >>> R0 = rotation_matrix(angle, direc, point)\n    >>> R1 = rotation_matrix(-angle, -direc, point)\n    >>> is_same_transform(R0, R1)\n    True\n    >>> I = numpy.identity(4, numpy.float64)\n    >>> numpy.allclose(I, rotation_matrix(math.pi*2, direc))\n    True\n    >>> numpy.allclose(2., numpy.trace(rotation_matrix(math.pi/2,\n    ...                                                direc, point)))\n    True\n\n    \"\"\"\n    sina = math.sin(angle)\n    cosa = math.cos(angle)\n    direction = unit_vector(direction[:3])\n    # rotation matrix around unit vector\n    R = numpy.array(((cosa, 0.0,  0.0),\n                     (0.0,  cosa, 0.0),\n                     (0.0,  0.0,  cosa)), dtype=numpy.float64)\n    R += numpy.outer(direction, direction) * (1.0 - cosa)\n    direction *= sina\n    R += numpy.array((( 0.0,         -direction[2],  direction[1]),\n                      ( direction[2], 0.0,          -direction[0]),\n                      (-direction[1], direction[0],  0.0)),\n                     dtype=numpy.float64)\n    M = numpy.identity(4)\n    M[:3, :3] = R\n    if point is not None:\n        # rotation not around origin\n        point = numpy.array(point[:3], dtype=numpy.float64, copy=False)\n        M[:3, 3] = point - numpy.dot(R, point)\n    return M\n\n\ndef rotation_from_matrix(matrix):\n    \"\"\"Return rotation angle and axis from rotation matrix.\n\n    >>> angle = (random.random() - 0.5) * (2*math.pi)\n    >>> direc = numpy.random.random(3) - 0.5\n    >>> point = numpy.random.random(3) - 0.5\n    >>> R0 = rotation_matrix(angle, direc, point)\n    >>> angle, direc, point = rotation_from_matrix(R0)\n    >>> R1 = rotation_matrix(angle, direc, point)\n    >>> is_same_transform(R0, R1)\n    True\n\n    \"\"\"\n    R = numpy.array(matrix, dtype=numpy.float64, copy=False)\n    R33 = R[:3, :3]\n    # direction: unit eigenvector of R33 corresponding to eigenvalue of 1\n    l, W = numpy.linalg.eig(R33.T)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no unit eigenvector corresponding to eigenvalue 1\")\n    direction = numpy.real(W[:, i[-1]]).squeeze()\n    # point: unit eigenvector of R33 corresponding to eigenvalue of 1\n    l, Q = numpy.linalg.eig(R)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no unit eigenvector corresponding to eigenvalue 1\")\n    point = numpy.real(Q[:, i[-1]]).squeeze()\n    point /= point[3]\n    # rotation angle depending on direction\n    cosa = (numpy.trace(R33) - 1.0) / 2.0\n    if abs(direction[2]) > 1e-8:\n        sina = (R[1, 0] + (cosa-1.0)*direction[0]*direction[1]) / direction[2]\n    elif abs(direction[1]) > 1e-8:\n        sina = (R[0, 2] + (cosa-1.0)*direction[0]*direction[2]) / direction[1]\n    else:\n        sina = (R[2, 1] + (cosa-1.0)*direction[1]*direction[2]) / direction[0]\n    angle = math.atan2(sina, cosa)\n    return angle, direction, point\n\n\ndef scale_matrix(factor, origin=None, direction=None):\n    \"\"\"Return matrix to scale by factor around origin in direction.\n\n    Use factor -1 for point symmetry.\n\n    >>> v = (numpy.random.rand(4, 5) - 0.5) * 20.0\n    >>> v[3] = 1.0\n    >>> S = scale_matrix(-1.234)\n    >>> numpy.allclose(numpy.dot(S, v)[:3], -1.234*v[:3])\n    True\n    >>> factor = random.random() * 10 - 5\n    >>> origin = numpy.random.random(3) - 0.5\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> S = scale_matrix(factor, origin)\n    >>> S = scale_matrix(factor, origin, direct)\n\n    \"\"\"\n    if direction is None:\n        # uniform scaling\n        M = numpy.array(((factor, 0.0,    0.0,    0.0),\n                         (0.0,    factor, 0.0,    0.0),\n                         (0.0,    0.0,    factor, 0.0),\n                         (0.0,    0.0,    0.0,    1.0)), dtype=numpy.float64)\n        if origin is not None:\n            M[:3, 3] = origin[:3]\n            M[:3, 3] *= 1.0 - factor\n    else:\n        # nonuniform scaling\n        direction = unit_vector(direction[:3])\n        factor = 1.0 - factor\n        M = numpy.identity(4)\n        M[:3, :3] -= factor * numpy.outer(direction, direction)\n        if origin is not None:\n            M[:3, 3] = (factor * numpy.dot(origin[:3], direction)) * direction\n    return M\n\n\ndef scale_from_matrix(matrix):\n    \"\"\"Return scaling factor, origin and direction from scaling matrix.\n\n    >>> factor = random.random() * 10 - 5\n    >>> origin = numpy.random.random(3) - 0.5\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> S0 = scale_matrix(factor, origin)\n    >>> factor, origin, direction = scale_from_matrix(S0)\n    >>> S1 = scale_matrix(factor, origin, direction)\n    >>> is_same_transform(S0, S1)\n    True\n    >>> S0 = scale_matrix(factor, origin, direct)\n    >>> factor, origin, direction = scale_from_matrix(S0)\n    >>> S1 = scale_matrix(factor, origin, direction)\n    >>> is_same_transform(S0, S1)\n    True\n\n    \"\"\"\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)\n    M33 = M[:3, :3]\n    factor = numpy.trace(M33) - 2.0\n    try:\n        # direction: unit eigenvector corresponding to eigenvalue factor\n        l, V = numpy.linalg.eig(M33)\n        i = numpy.where(abs(numpy.real(l) - factor) < 1e-8)[0][0]\n        direction = numpy.real(V[:, i]).squeeze()\n        direction /= vector_norm(direction)\n    except IndexError:\n        # uniform scaling\n        factor = (factor + 2.0) / 3.0\n        direction = None\n    # origin: any eigenvector corresponding to eigenvalue 1\n    l, V = numpy.linalg.eig(M)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no eigenvector corresponding to eigenvalue 1\")\n    origin = numpy.real(V[:, i[-1]]).squeeze()\n    origin /= origin[3]\n    return factor, origin, direction\n\n\ndef projection_matrix(point, normal, direction=None,\n                      perspective=None, pseudo=False):\n    \"\"\"Return matrix to project onto plane defined by point and normal.\n\n    Using either perspective point, projection direction, or none of both.\n\n    If pseudo is True, perspective projections will preserve relative depth\n    such that Perspective = dot(Orthogonal, PseudoPerspective).\n\n    >>> P = projection_matrix((0, 0, 0), (1, 0, 0))\n    >>> numpy.allclose(P[1:, 1:], numpy.identity(4)[1:, 1:])\n    True\n    >>> point = numpy.random.random(3) - 0.5\n    >>> normal = numpy.random.random(3) - 0.5\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> persp = numpy.random.random(3) - 0.5\n    >>> P0 = projection_matrix(point, normal)\n    >>> P1 = projection_matrix(point, normal, direction=direct)\n    >>> P2 = projection_matrix(point, normal, perspective=persp)\n    >>> P3 = projection_matrix(point, normal, perspective=persp, pseudo=True)\n    >>> is_same_transform(P2, numpy.dot(P0, P3))\n    True\n    >>> P = projection_matrix((3, 0, 0), (1, 1, 0), (1, 0, 0))\n    >>> v0 = (numpy.random.rand(4, 5) - 0.5) * 20.0\n    >>> v0[3] = 1.0\n    >>> v1 = numpy.dot(P, v0)\n    >>> numpy.allclose(v1[1], v0[1])\n    True\n    >>> numpy.allclose(v1[0], 3.0-v1[1])\n    True\n\n    \"\"\"\n    M = numpy.identity(4)\n    point = numpy.array(point[:3], dtype=numpy.float64, copy=False)\n    normal = unit_vector(normal[:3])\n    if perspective is not None:\n        # perspective projection\n        perspective = numpy.array(perspective[:3], dtype=numpy.float64,\n                                  copy=False)\n        M[0, 0] = M[1, 1] = M[2, 2] = numpy.dot(perspective-point, normal)\n        M[:3, :3] -= numpy.outer(perspective, normal)\n        if pseudo:\n            # preserve relative depth\n            M[:3, :3] -= numpy.outer(normal, normal)\n            M[:3, 3] = numpy.dot(point, normal) * (perspective+normal)\n        else:\n            M[:3, 3] = numpy.dot(point, normal) * perspective\n        M[3, :3] = -normal\n        M[3, 3] = numpy.dot(perspective, normal)\n    elif direction is not None:\n        # parallel projection\n        direction = numpy.array(direction[:3], dtype=numpy.float64, copy=False)\n        scale = numpy.dot(direction, normal)\n        M[:3, :3] -= numpy.outer(direction, normal) / scale\n        M[:3, 3] = direction * (numpy.dot(point, normal) / scale)\n    else:\n        # orthogonal projection\n        M[:3, :3] -= numpy.outer(normal, normal)\n        M[:3, 3] = numpy.dot(point, normal) * normal\n    return M\n\n\ndef projection_from_matrix(matrix, pseudo=False):\n    \"\"\"Return projection plane and perspective point from projection matrix.\n\n    Return values are same as arguments for projection_matrix function:\n    point, normal, direction, perspective, and pseudo.\n\n    >>> point = numpy.random.random(3) - 0.5\n    >>> normal = numpy.random.random(3) - 0.5\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> persp = numpy.random.random(3) - 0.5\n    >>> P0 = projection_matrix(point, normal)\n    >>> result = projection_from_matrix(P0)\n    >>> P1 = projection_matrix(*result)\n    >>> is_same_transform(P0, P1)\n    True\n    >>> P0 = projection_matrix(point, normal, direct)\n    >>> result = projection_from_matrix(P0)\n    >>> P1 = projection_matrix(*result)\n    >>> is_same_transform(P0, P1)\n    True\n    >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=False)\n    >>> result = projection_from_matrix(P0, pseudo=False)\n    >>> P1 = projection_matrix(*result)\n    >>> is_same_transform(P0, P1)\n    True\n    >>> P0 = projection_matrix(point, normal, perspective=persp, pseudo=True)\n    >>> result = projection_from_matrix(P0, pseudo=True)\n    >>> P1 = projection_matrix(*result)\n    >>> is_same_transform(P0, P1)\n    True\n\n    \"\"\"\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)\n    M33 = M[:3, :3]\n    l, V = numpy.linalg.eig(M)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not pseudo and len(i):\n        # point: any eigenvector corresponding to eigenvalue 1\n        point = numpy.real(V[:, i[-1]]).squeeze()\n        point /= point[3]\n        # direction: unit eigenvector corresponding to eigenvalue 0\n        l, V = numpy.linalg.eig(M33)\n        i = numpy.where(abs(numpy.real(l)) < 1e-8)[0]\n        if not len(i):\n            raise ValueError(\"no eigenvector corresponding to eigenvalue 0\")\n        direction = numpy.real(V[:, i[0]]).squeeze()\n        direction /= vector_norm(direction)\n        # normal: unit eigenvector of M33.T corresponding to eigenvalue 0\n        l, V = numpy.linalg.eig(M33.T)\n        i = numpy.where(abs(numpy.real(l)) < 1e-8)[0]\n        if len(i):\n            # parallel projection\n            normal = numpy.real(V[:, i[0]]).squeeze()\n            normal /= vector_norm(normal)\n            return point, normal, direction, None, False\n        else:\n            # orthogonal projection, where normal equals direction vector\n            return point, direction, None, None, False\n    else:\n        # perspective projection\n        i = numpy.where(abs(numpy.real(l)) > 1e-8)[0]\n        if not len(i):\n            raise ValueError(\n                \"no eigenvector not corresponding to eigenvalue 0\")\n        point = numpy.real(V[:, i[-1]]).squeeze()\n        point /= point[3]\n        normal = - M[3, :3]\n        perspective = M[:3, 3] / numpy.dot(point[:3], normal)\n        if pseudo:\n            perspective -= normal\n        return point, normal, None, perspective, pseudo\n\n\ndef clip_matrix(left, right, bottom, top, near, far, perspective=False):\n    \"\"\"Return matrix to obtain normalized device coordinates from frustrum.\n\n    The frustrum bounds are axis-aligned along x (left, right),\n    y (bottom, top) and z (near, far).\n\n    Normalized device coordinates are in range [-1, 1] if coordinates are\n    inside the frustrum.\n\n    If perspective is True the frustrum is a truncated pyramid with the\n    perspective point at origin and direction along z axis, otherwise an\n    orthographic canonical view volume (a box).\n\n    Homogeneous coordinates transformed by the perspective clip matrix\n    need to be dehomogenized (devided by w coordinate).\n\n    >>> frustrum = numpy.random.rand(6)\n    >>> frustrum[1] += frustrum[0]\n    >>> frustrum[3] += frustrum[2]\n    >>> frustrum[5] += frustrum[4]\n    >>> M = clip_matrix(*frustrum, perspective=False)\n    >>> numpy.dot(M, [frustrum[0], frustrum[2], frustrum[4], 1.0])\n    array([-1., -1., -1.,  1.])\n    >>> numpy.dot(M, [frustrum[1], frustrum[3], frustrum[5], 1.0])\n    array([ 1.,  1.,  1.,  1.])\n    >>> M = clip_matrix(*frustrum, perspective=True)\n    >>> v = numpy.dot(M, [frustrum[0], frustrum[2], frustrum[4], 1.0])\n    >>> v / v[3]\n    array([-1., -1., -1.,  1.])\n    >>> v = numpy.dot(M, [frustrum[1], frustrum[3], frustrum[4], 1.0])\n    >>> v / v[3]\n    array([ 1.,  1., -1.,  1.])\n\n    \"\"\"\n    if left >= right or bottom >= top or near >= far:\n        raise ValueError(\"invalid frustrum\")\n    if perspective:\n        if near <= _EPS:\n            raise ValueError(\"invalid frustrum: near <= 0\")\n        t = 2.0 * near\n        M = ((-t/(right-left), 0.0, (right+left)/(right-left), 0.0),\n             (0.0, -t/(top-bottom), (top+bottom)/(top-bottom), 0.0),\n             (0.0, 0.0, -(far+near)/(far-near), t*far/(far-near)),\n             (0.0, 0.0, -1.0, 0.0))\n    else:\n        M = ((2.0/(right-left), 0.0, 0.0, (right+left)/(left-right)),\n             (0.0, 2.0/(top-bottom), 0.0, (top+bottom)/(bottom-top)),\n             (0.0, 0.0, 2.0/(far-near), (far+near)/(near-far)),\n             (0.0, 0.0, 0.0, 1.0))\n    return numpy.array(M, dtype=numpy.float64)\n\n\ndef shear_matrix(angle, direction, point, normal):\n    \"\"\"Return matrix to shear by angle along direction vector on shear plane.\n\n    The shear plane is defined by a point and normal vector. The direction\n    vector must be orthogonal to the plane's normal vector.\n\n    A point P is transformed by the shear matrix into P\" such that\n    the vector P-P\" is parallel to the direction vector and its extent is\n    given by the angle of P-P'-P\", where P' is the orthogonal projection\n    of P onto the shear plane.\n\n    >>> angle = (random.random() - 0.5) * 4*math.pi\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> point = numpy.random.random(3) - 0.5\n    >>> normal = numpy.cross(direct, numpy.random.random(3))\n    >>> S = shear_matrix(angle, direct, point, normal)\n    >>> numpy.allclose(1.0, numpy.linalg.det(S))\n    True\n\n    \"\"\"\n    normal = unit_vector(normal[:3])\n    direction = unit_vector(direction[:3])\n    if abs(numpy.dot(normal, direction)) > 1e-6:\n        raise ValueError(\"direction and normal vectors are not orthogonal\")\n    angle = math.tan(angle)\n    M = numpy.identity(4)\n    M[:3, :3] += angle * numpy.outer(direction, normal)\n    M[:3, 3] = -angle * numpy.dot(point[:3], normal) * direction\n    return M\n\n\ndef shear_from_matrix(matrix):\n    \"\"\"Return shear angle, direction and plane from shear matrix.\n\n    >>> angle = (random.random() - 0.5) * 4*math.pi\n    >>> direct = numpy.random.random(3) - 0.5\n    >>> point = numpy.random.random(3) - 0.5\n    >>> normal = numpy.cross(direct, numpy.random.random(3))\n    >>> S0 = shear_matrix(angle, direct, point, normal)\n    >>> angle, direct, point, normal = shear_from_matrix(S0)\n    >>> S1 = shear_matrix(angle, direct, point, normal)\n    >>> is_same_transform(S0, S1)\n    True\n\n    \"\"\"\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)\n    M33 = M[:3, :3]\n    # normal: cross independent eigenvectors corresponding to the eigenvalue 1\n    l, V = numpy.linalg.eig(M33)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-4)[0]\n    if len(i) < 2:\n        raise ValueError(\"No two linear independent eigenvectors found %s\" % l)\n    V = numpy.real(V[:, i]).squeeze().T\n    lenorm = -1.0\n    for i0, i1 in ((0, 1), (0, 2), (1, 2)):\n        n = numpy.cross(V[i0], V[i1])\n        l = vector_norm(n)\n        if l > lenorm:\n            lenorm = l\n            normal = n\n    normal /= lenorm\n    # direction and angle\n    direction = numpy.dot(M33 - numpy.identity(3), normal)\n    angle = vector_norm(direction)\n    direction /= angle\n    angle = math.atan(angle)\n    # point: eigenvector corresponding to eigenvalue 1\n    l, V = numpy.linalg.eig(M)\n    i = numpy.where(abs(numpy.real(l) - 1.0) < 1e-8)[0]\n    if not len(i):\n        raise ValueError(\"no eigenvector corresponding to eigenvalue 1\")\n    point = numpy.real(V[:, i[-1]]).squeeze()\n    point /= point[3]\n    return angle, direction, point, normal\n\n\ndef decompose_matrix(matrix):\n    \"\"\"Return sequence of transformations from transformation matrix.\n\n    matrix : array_like\n        Non-degenerative homogeneous transformation matrix\n\n    Return tuple of:\n        scale : vector of 3 scaling factors\n        shear : list of shear factors for x-y, x-z, y-z axes\n        angles : list of Euler angles about static x, y, z axes\n        translate : translation vector along x, y, z axes\n        perspective : perspective partition of matrix\n\n    Raise ValueError if matrix is of wrong type or degenerative.\n\n    >>> T0 = translation_matrix((1, 2, 3))\n    >>> scale, shear, angles, trans, persp = decompose_matrix(T0)\n    >>> T1 = translation_matrix(trans)\n    >>> numpy.allclose(T0, T1)\n    True\n    >>> S = scale_matrix(0.123)\n    >>> scale, shear, angles, trans, persp = decompose_matrix(S)\n    >>> scale[0]\n    0.123\n    >>> R0 = euler_matrix(1, 2, 3)\n    >>> scale, shear, angles, trans, persp = decompose_matrix(R0)\n    >>> R1 = euler_matrix(*angles)\n    >>> numpy.allclose(R0, R1)\n    True\n\n    \"\"\"\n    M = numpy.array(matrix, dtype=numpy.float64, copy=True).T\n    if abs(M[3, 3]) < _EPS:\n        raise ValueError(\"M[3, 3] is zero\")\n    M /= M[3, 3]\n    P = M.copy()\n    P[:, 3] = 0, 0, 0, 1\n    if not numpy.linalg.det(P):\n        raise ValueError(\"Matrix is singular\")\n\n    scale = numpy.zeros((3, ), dtype=numpy.float64)\n    shear = [0, 0, 0]\n    angles = [0, 0, 0]\n\n    if any(abs(M[:3, 3]) > _EPS):\n        perspective = numpy.dot(M[:, 3], numpy.linalg.inv(P.T))\n        M[:, 3] = 0, 0, 0, 1\n    else:\n        perspective = numpy.array((0, 0, 0, 1), dtype=numpy.float64)\n\n    translate = M[3, :3].copy()\n    M[3, :3] = 0\n\n    row = M[:3, :3].copy()\n    scale[0] = vector_norm(row[0])\n    row[0] /= scale[0]\n    shear[0] = numpy.dot(row[0], row[1])\n    row[1] -= row[0] * shear[0]\n    scale[1] = vector_norm(row[1])\n    row[1] /= scale[1]\n    shear[0] /= scale[1]\n    shear[1] = numpy.dot(row[0], row[2])\n    row[2] -= row[0] * shear[1]\n    shear[2] = numpy.dot(row[1], row[2])\n    row[2] -= row[1] * shear[2]\n    scale[2] = vector_norm(row[2])\n    row[2] /= scale[2]\n    shear[1:] /= scale[2]\n\n    if numpy.dot(row[0], numpy.cross(row[1], row[2])) < 0:\n        scale *= -1\n        row *= -1\n\n    angles[1] = math.asin(-row[0, 2])\n    if math.cos(angles[1]):\n        angles[0] = math.atan2(row[1, 2], row[2, 2])\n        angles[2] = math.atan2(row[0, 1], row[0, 0])\n    else:\n        #angles[0] = math.atan2(row[1, 0], row[1, 1])\n        angles[0] = math.atan2(-row[2, 1], row[1, 1])\n        angles[2] = 0.0\n\n    return scale, shear, angles, translate, perspective\n\n\ndef compose_matrix(scale=None, shear=None, angles=None, translate=None,\n                   perspective=None):\n    \"\"\"Return transformation matrix from sequence of transformations.\n\n    This is the inverse of the decompose_matrix function.\n\n    Sequence of transformations:\n        scale : vector of 3 scaling factors\n        shear : list of shear factors for x-y, x-z, y-z axes\n        angles : list of Euler angles about static x, y, z axes\n        translate : translation vector along x, y, z axes\n        perspective : perspective partition of matrix\n\n    >>> scale = numpy.random.random(3) - 0.5\n    >>> shear = numpy.random.random(3) - 0.5\n    >>> angles = (numpy.random.random(3) - 0.5) * (2*math.pi)\n    >>> trans = numpy.random.random(3) - 0.5\n    >>> persp = numpy.random.random(4) - 0.5\n    >>> M0 = compose_matrix(scale, shear, angles, trans, persp)\n    >>> result = decompose_matrix(M0)\n    >>> M1 = compose_matrix(*result)\n    >>> is_same_transform(M0, M1)\n    True\n\n    \"\"\"\n    M = numpy.identity(4)\n    if perspective is not None:\n        P = numpy.identity(4)\n        P[3, :] = perspective[:4]\n        M = numpy.dot(M, P)\n    if translate is not None:\n        T = numpy.identity(4)\n        T[:3, 3] = translate[:3]\n        M = numpy.dot(M, T)\n    if angles is not None:\n        R = euler_matrix(angles[0], angles[1], angles[2], 'sxyz')\n        M = numpy.dot(M, R)\n    if shear is not None:\n        Z = numpy.identity(4)\n        Z[1, 2] = shear[2]\n        Z[0, 2] = shear[1]\n        Z[0, 1] = shear[0]\n        M = numpy.dot(M, Z)\n    if scale is not None:\n        S = numpy.identity(4)\n        S[0, 0] = scale[0]\n        S[1, 1] = scale[1]\n        S[2, 2] = scale[2]\n        M = numpy.dot(M, S)\n    M /= M[3, 3]\n    return M\n\n\ndef orthogonalization_matrix(lengths, angles):\n    \"\"\"Return orthogonalization matrix for crystallographic cell coordinates.\n\n    Angles are expected in degrees.\n\n    The de-orthogonalization matrix is the inverse.\n\n    >>> O = orthogonalization_matrix((10., 10., 10.), (90., 90., 90.))\n    >>> numpy.allclose(O[:3, :3], numpy.identity(3, float) * 10)\n    True\n    >>> O = orthogonalization_matrix([9.8, 12.0, 15.5], [87.2, 80.7, 69.7])\n    >>> numpy.allclose(numpy.sum(O), 43.063229)\n    True\n\n    \"\"\"\n    a, b, c = lengths\n    angles = numpy.radians(angles)\n    sina, sinb, _ = numpy.sin(angles)\n    cosa, cosb, cosg = numpy.cos(angles)\n    co = (cosa * cosb - cosg) / (sina * sinb)\n    return numpy.array((\n        ( a*sinb*math.sqrt(1.0-co*co),  0.0,    0.0, 0.0),\n        (-a*sinb*co,                    b*sina, 0.0, 0.0),\n        ( a*cosb,                       b*cosa, c,   0.0),\n        ( 0.0,                          0.0,    0.0, 1.0)),\n        dtype=numpy.float64)\n\n\ndef superimposition_matrix(v0, v1, scaling=False, usesvd=True):\n    \"\"\"Return matrix to transform given vector set into second vector set.\n\n    v0 and v1 are shape (3, \\*) or (4, \\*) arrays of at least 3 vectors.\n\n    If usesvd is True, the weighted sum of squared deviations (RMSD) is\n    minimized according to the algorithm by W. Kabsch [8]. Otherwise the\n    quaternion based algorithm by B. Horn [9] is used (slower when using\n    this Python implementation).\n\n    The returned matrix performs rotation, translation and uniform scaling\n    (if specified).\n\n    >>> v0 = numpy.random.rand(3, 10)\n    >>> M = superimposition_matrix(v0, v0)\n    >>> numpy.allclose(M, numpy.identity(4))\n    True\n    >>> R = random_rotation_matrix(numpy.random.random(3))\n    >>> v0 = ((1,0,0), (0,1,0), (0,0,1), (1,1,1))\n    >>> v1 = numpy.dot(R, v0)\n    >>> M = superimposition_matrix(v0, v1)\n    >>> numpy.allclose(v1, numpy.dot(M, v0))\n    True\n    >>> v0 = (numpy.random.rand(4, 100) - 0.5) * 20.0\n    >>> v0[3] = 1.0\n    >>> v1 = numpy.dot(R, v0)\n    >>> M = superimposition_matrix(v0, v1)\n    >>> numpy.allclose(v1, numpy.dot(M, v0))\n    True\n    >>> S = scale_matrix(random.random())\n    >>> T = translation_matrix(numpy.random.random(3)-0.5)\n    >>> M = concatenate_matrices(T, R, S)\n    >>> v1 = numpy.dot(M, v0)\n    >>> v0[:3] += numpy.random.normal(0.0, 1e-9, 300).reshape(3, -1)\n    >>> M = superimposition_matrix(v0, v1, scaling=True)\n    >>> numpy.allclose(v1, numpy.dot(M, v0))\n    True\n    >>> M = superimposition_matrix(v0, v1, scaling=True, usesvd=False)\n    >>> numpy.allclose(v1, numpy.dot(M, v0))\n    True\n    >>> v = numpy.empty((4, 100, 3), dtype=numpy.float64)\n    >>> v[:, :, 0] = v0\n    >>> M = superimposition_matrix(v0, v1, scaling=True, usesvd=False)\n    >>> numpy.allclose(v1, numpy.dot(M, v[:, :, 0]))\n    True\n\n    \"\"\"\n    v0 = numpy.array(v0, dtype=numpy.float64, copy=False)[:3]\n    v1 = numpy.array(v1, dtype=numpy.float64, copy=False)[:3]\n\n    if v0.shape != v1.shape or v0.shape[1] < 3:\n        raise ValueError(\"Vector sets are of wrong shape or type.\")\n\n    # move centroids to origin\n    t0 = numpy.mean(v0, axis=1)\n    t1 = numpy.mean(v1, axis=1)\n    v0 = v0 - t0.reshape(3, 1)\n    v1 = v1 - t1.reshape(3, 1)\n\n    if usesvd:\n        # Singular Value Decomposition of covariance matrix\n        u, s, vh = numpy.linalg.svd(numpy.dot(v1, v0.T))\n        # rotation matrix from SVD orthonormal bases\n        R = numpy.dot(u, vh)\n        if numpy.linalg.det(R) < 0.0:\n            # R does not constitute right handed system\n            R -= numpy.outer(u[:, 2], vh[2, :]*2.0)\n            s[-1] *= -1.0\n        # homogeneous transformation matrix\n        M = numpy.identity(4)\n        M[:3, :3] = R\n    else:\n        # compute symmetric matrix N\n        xx, yy, zz = numpy.sum(v0 * v1, axis=1)\n        xy, yz, zx = numpy.sum(v0 * numpy.roll(v1, -1, axis=0), axis=1)\n        xz, yx, zy = numpy.sum(v0 * numpy.roll(v1, -2, axis=0), axis=1)\n        N = ((xx+yy+zz, yz-zy,    zx-xz,    xy-yx),\n             (yz-zy,    xx-yy-zz, xy+yx,    zx+xz),\n             (zx-xz,    xy+yx,   -xx+yy-zz, yz+zy),\n             (xy-yx,    zx+xz,    yz+zy,   -xx-yy+zz))\n        # quaternion: eigenvector corresponding to most positive eigenvalue\n        l, V = numpy.linalg.eig(N)\n        q = V[:, numpy.argmax(l)]\n        q /= vector_norm(q) # unit quaternion\n        q = numpy.roll(q, -1) # move w component to end\n        # homogeneous transformation matrix\n        M = quaternion_matrix(q)\n\n    # scale: ratio of rms deviations from centroid\n    if scaling:\n        v0 *= v0\n        v1 *= v1\n        M[:3, :3] *= math.sqrt(numpy.sum(v1) / numpy.sum(v0))\n\n    # translation\n    M[:3, 3] = t1\n    T = numpy.identity(4)\n    T[:3, 3] = -t0\n    M = numpy.dot(M, T)\n    return M\n\n\ndef euler_matrix(ai, aj, ak, axes='sxyz'):\n    \"\"\"Return homogeneous rotation matrix from Euler angles and axis sequence.\n\n    ai, aj, ak : Euler's roll, pitch and yaw angles\n    axes : One of 24 axis sequences as string or encoded tuple\n\n    >>> R = euler_matrix(1, 2, 3, 'syxz')\n    >>> numpy.allclose(numpy.sum(R[0]), -1.34786452)\n    True\n    >>> R = euler_matrix(1, 2, 3, (0, 1, 0, 1))\n    >>> numpy.allclose(numpy.sum(R[0]), -0.383436184)\n    True\n    >>> ai, aj, ak = (4.0*math.pi) * (numpy.random.random(3) - 0.5)\n    >>> for axes in _AXES2TUPLE.keys():\n    ...    R = euler_matrix(ai, aj, ak, axes)\n    >>> for axes in _TUPLE2AXES.keys():\n    ...    R = euler_matrix(ai, aj, ak, axes)\n\n    \"\"\"\n    try:\n        firstaxis, parity, repetition, frame = _AXES2TUPLE[axes]\n    except (AttributeError, KeyError):\n        _ = _TUPLE2AXES[axes]\n        firstaxis, parity, repetition, frame = axes\n\n    i = firstaxis\n    j = _NEXT_AXIS[i+parity]\n    k = _NEXT_AXIS[i-parity+1]\n\n    if frame:\n        ai, ak = ak, ai\n    if parity:\n        ai, aj, ak = -ai, -aj, -ak\n\n    si, sj, sk = math.sin(ai), math.sin(aj), math.sin(ak)\n    ci, cj, ck = math.cos(ai), math.cos(aj), math.cos(ak)\n    cc, cs = ci*ck, ci*sk\n    sc, ss = si*ck, si*sk\n\n    M = numpy.identity(4)\n    if repetition:\n        M[i, i] = cj\n        M[i, j] = sj*si\n        M[i, k] = sj*ci\n        M[j, i] = sj*sk\n        M[j, j] = -cj*ss+cc\n        M[j, k] = -cj*cs-sc\n        M[k, i] = -sj*ck\n        M[k, j] = cj*sc+cs\n        M[k, k] = cj*cc-ss\n    else:\n        M[i, i] = cj*ck\n        M[i, j] = sj*sc-cs\n        M[i, k] = sj*cc+ss\n        M[j, i] = cj*sk\n        M[j, j] = sj*ss+cc\n        M[j, k] = sj*cs-sc\n        M[k, i] = -sj\n        M[k, j] = cj*si\n        M[k, k] = cj*ci\n    return M\n\n\ndef euler_from_matrix(matrix, axes='sxyz'):\n    \"\"\"Return Euler angles from rotation matrix for specified axis sequence.\n\n    axes : One of 24 axis sequences as string or encoded tuple\n\n    Note that many Euler angle triplets can describe one matrix.\n\n    >>> R0 = euler_matrix(1, 2, 3, 'syxz')\n    >>> al, be, ga = euler_from_matrix(R0, 'syxz')\n    >>> R1 = euler_matrix(al, be, ga, 'syxz')\n    >>> numpy.allclose(R0, R1)\n    True\n    >>> angles = (4.0*math.pi) * (numpy.random.random(3) - 0.5)\n    >>> for axes in _AXES2TUPLE.keys():\n    ...    R0 = euler_matrix(axes=axes, *angles)\n    ...    R1 = euler_matrix(axes=axes, *euler_from_matrix(R0, axes))\n    ...    if not numpy.allclose(R0, R1): print axes, \"failed\"\n\n    \"\"\"\n    try:\n        firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()]\n    except (AttributeError, KeyError):\n        _ = _TUPLE2AXES[axes]\n        firstaxis, parity, repetition, frame = axes\n\n    i = firstaxis\n    j = _NEXT_AXIS[i+parity]\n    k = _NEXT_AXIS[i-parity+1]\n\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:3, :3]\n    if repetition:\n        sy = math.sqrt(M[i, j]*M[i, j] + M[i, k]*M[i, k])\n        if sy > _EPS:\n            ax = math.atan2( M[i, j],  M[i, k])\n            ay = math.atan2( sy,       M[i, i])\n            az = math.atan2( M[j, i], -M[k, i])\n        else:\n            ax = math.atan2(-M[j, k],  M[j, j])\n            ay = math.atan2( sy,       M[i, i])\n            az = 0.0\n    else:\n        cy = math.sqrt(M[i, i]*M[i, i] + M[j, i]*M[j, i])\n        if cy > _EPS:\n            ax = math.atan2( M[k, j],  M[k, k])\n            ay = math.atan2(-M[k, i],  cy)\n            az = math.atan2( M[j, i],  M[i, i])\n        else:\n            ax = math.atan2(-M[j, k],  M[j, j])\n            ay = math.atan2(-M[k, i],  cy)\n            az = 0.0\n\n    if parity:\n        ax, ay, az = -ax, -ay, -az\n    if frame:\n        ax, az = az, ax\n    return ax, ay, az\n\n\ndef euler_from_quaternion(quaternion, axes='sxyz'):\n    \"\"\"Return Euler angles from quaternion for specified axis sequence.\n\n    >>> angles = euler_from_quaternion([0.06146124, 0, 0, 0.99810947])\n    >>> numpy.allclose(angles, [0.123, 0, 0])\n    True\n\n    \"\"\"\n    return euler_from_matrix(quaternion_matrix(quaternion), axes)\n\n\ndef quaternion_from_euler(ai, aj, ak, axes='sxyz'):\n    \"\"\"Return quaternion from Euler angles and axis sequence.\n\n    ai, aj, ak : Euler's roll, pitch and yaw angles\n    axes : One of 24 axis sequences as string or encoded tuple\n\n    >>> q = quaternion_from_euler(1, 2, 3, 'ryxz')\n    >>> numpy.allclose(q, [0.310622, -0.718287, 0.444435, 0.435953])\n    True\n\n    \"\"\"\n    try:\n        firstaxis, parity, repetition, frame = _AXES2TUPLE[axes.lower()]\n    except (AttributeError, KeyError):\n        _ = _TUPLE2AXES[axes]\n        firstaxis, parity, repetition, frame = axes\n\n    i = firstaxis\n    j = _NEXT_AXIS[i+parity]\n    k = _NEXT_AXIS[i-parity+1]\n\n    if frame:\n        ai, ak = ak, ai\n    if parity:\n        aj = -aj\n\n    ai /= 2.0\n    aj /= 2.0\n    ak /= 2.0\n    ci = math.cos(ai)\n    si = math.sin(ai)\n    cj = math.cos(aj)\n    sj = math.sin(aj)\n    ck = math.cos(ak)\n    sk = math.sin(ak)\n    cc = ci*ck\n    cs = ci*sk\n    sc = si*ck\n    ss = si*sk\n\n    quaternion = numpy.empty((4, ), dtype=numpy.float64)\n    if repetition:\n        quaternion[i] = cj*(cs + sc)\n        quaternion[j] = sj*(cc + ss)\n        quaternion[k] = sj*(cs - sc)\n        quaternion[3] = cj*(cc - ss)\n    else:\n        quaternion[i] = cj*sc - sj*cs\n        quaternion[j] = cj*ss + sj*cc\n        quaternion[k] = cj*cs - sj*sc\n        quaternion[3] = cj*cc + sj*ss\n    if parity:\n        quaternion[j] *= -1\n\n    return quaternion\n\n\ndef quaternion_about_axis(angle, axis):\n    \"\"\"Return quaternion for rotation about axis.\n\n    >>> q = quaternion_about_axis(0.123, (1, 0, 0))\n    >>> numpy.allclose(q, [0.06146124, 0, 0, 0.99810947])\n    True\n\n    \"\"\"\n    quaternion = numpy.zeros((4, ), dtype=numpy.float64)\n    quaternion[:3] = axis[:3]\n    qlen = vector_norm(quaternion)\n    if qlen > _EPS:\n        quaternion *= math.sin(angle/2.0) / qlen\n    quaternion[3] = math.cos(angle/2.0)\n    return quaternion\n\ndef matrix_from_quaternion(quaternion):\n    return quaternion_matrix(quaternion)\n    \ndef quaternion_matrix(quaternion):\n    \"\"\"Return homogeneous rotation matrix from quaternion.\n\n    >>> R = quaternion_matrix([0.06146124, 0, 0, 0.99810947])\n    >>> numpy.allclose(R, rotation_matrix(0.123, (1, 0, 0)))\n    True\n\n    \"\"\"\n    q = numpy.array(quaternion[:4], dtype=numpy.float64, copy=True)\n    nq = numpy.dot(q, q)\n    if nq < _EPS:\n        return numpy.identity(4)\n    q *= math.sqrt(2.0 / nq)\n    q = numpy.outer(q, q)\n    return numpy.array((\n        (1.0-q[1, 1]-q[2, 2],     q[0, 1]-q[2, 3],     q[0, 2]+q[1, 3], 0.0),\n        (    q[0, 1]+q[2, 3], 1.0-q[0, 0]-q[2, 2],     q[1, 2]-q[0, 3], 0.0),\n        (    q[0, 2]-q[1, 3],     q[1, 2]+q[0, 3], 1.0-q[0, 0]-q[1, 1], 0.0),\n        (                0.0,                 0.0,                 0.0, 1.0)\n        ), dtype=numpy.float64)\n\ndef quaternionJPL_matrix(quaternion):\n    \"\"\"Return homogeneous rotation matrix from quaternion in JPL notation.\n       quaternion = [x y z w]\n    \"\"\"    \n    q0 = quaternion[0]\n    q1 = quaternion[1]\n    q2 = quaternion[2]\n    q3 = quaternion[3]    \n    return numpy.array([\n        [ q0**2 - q1**2 - q2**2 + q3**2, 2.0*q0*q1 + 2.0*q2*q3, 2.0*q0*q2 - 2.0*q1*q3, 0],\n        [ 2.0*q0*q1 - 2.0*q2*q3, - q0**2 + q1**2 - q2**2 + q3**2, 2.0*q0*q3 + 2.0*q1*q2, 0],\n        [ 2.0*q0*q2 + 2.0*q1*q3, 2.0*q1*q2 - 2.0*q0*q3, - q0**2 - q1**2 + q2**2 + q3**2, 0],\n        [0, 0, 0, 1.0]], dtype=numpy.float64)        \n\ndef quaternion_from_matrix(matrix):\n    \"\"\"Return quaternion from rotation matrix.\n\n    >>> R = rotation_matrix(0.123, (1, 2, 3))\n    >>> q = quaternion_from_matrix(R)\n    >>> numpy.allclose(q, [0.0164262, 0.0328524, 0.0492786, 0.9981095])\n    True\n\n    \"\"\"\n    q = numpy.empty((4, ), dtype=numpy.float64)\n    M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:4, :4]\n    t = numpy.trace(M)\n    if t > M[3, 3]:\n        q[3] = t\n        q[2] = M[1, 0] - M[0, 1]\n        q[1] = M[0, 2] - M[2, 0]\n        q[0] = M[2, 1] - M[1, 2]\n    else:\n        i, j, k = 0, 1, 2\n        if M[1, 1] > M[0, 0]:\n            i, j, k = 1, 2, 0\n        if M[2, 2] > M[i, i]:\n            i, j, k = 2, 0, 1\n        t = M[i, i] - (M[j, j] + M[k, k]) + M[3, 3]\n        q[i] = t\n        q[j] = M[i, j] + M[j, i]\n        q[k] = M[k, i] + M[i, k]\n        q[3] = M[k, j] - M[j, k]\n    q *= 0.5 / math.sqrt(t * M[3, 3])\n    return q\n\n\ndef quaternion_multiply(quaternion1, quaternion0):\n    \"\"\"Return multiplication of two quaternions.\n\n    >>> q = quaternion_multiply([1, -2, 3, 4], [-5, 6, 7, 8])\n    >>> numpy.allclose(q, [-44, -14, 48, 28])\n    True\n\n    \"\"\"\n    x0, y0, z0, w0 = quaternion0\n    x1, y1, z1, w1 = quaternion1\n    return numpy.array((\n         x1*w0 + y1*z0 - z1*y0 + w1*x0,\n        -x1*z0 + y1*w0 + z1*x0 + w1*y0,\n         x1*y0 - y1*x0 + z1*w0 + w1*z0,\n        -x1*x0 - y1*y0 - z1*z0 + w1*w0), dtype=numpy.float64)\n\n\ndef quaternion_conjugate(quaternion):\n    \"\"\"Return conjugate of quaternion.\n\n    >>> q0 = random_quaternion()\n    >>> q1 = quaternion_conjugate(q0)\n    >>> q1[3] == q0[3] and all(q1[:3] == -q0[:3])\n    True\n\n    \"\"\"\n    return numpy.array((-quaternion[0], -quaternion[1],\n                        -quaternion[2], quaternion[3]), dtype=numpy.float64)\n\n\ndef quaternion_inverse(quaternion):\n    \"\"\"Return inverse of quaternion.\n\n    >>> q0 = random_quaternion()\n    >>> q1 = quaternion_inverse(q0)\n    >>> numpy.allclose(quaternion_multiply(q0, q1), [0, 0, 0, 1])\n    True\n\n    \"\"\"\n    return quaternion_conjugate(quaternion) / numpy.dot(quaternion, quaternion)\n\n\ndef quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True):\n    \"\"\"Return spherical linear interpolation between two quaternions.\n\n    >>> q0 = random_quaternion()\n    >>> q1 = random_quaternion()\n    >>> q = quaternion_slerp(q0, q1, 0.0)\n    >>> numpy.allclose(q, q0)\n    True\n    >>> q = quaternion_slerp(q0, q1, 1.0, 1)\n    >>> numpy.allclose(q, q1)\n    True\n    >>> q = quaternion_slerp(q0, q1, 0.5)\n    >>> angle = math.acos(numpy.dot(q0, q))\n    >>> numpy.allclose(2.0, math.acos(numpy.dot(q0, q1)) / angle) or \\\n        numpy.allclose(2.0, math.acos(-numpy.dot(q0, q1)) / angle)\n    True\n\n    \"\"\"\n    q0 = unit_vector(quat0[:4])\n    q1 = unit_vector(quat1[:4])\n    if fraction == 0.0:\n        return q0\n    elif fraction == 1.0:\n        return q1\n    d = numpy.dot(q0, q1)\n    if abs(abs(d) - 1.0) < _EPS:\n        return q0\n    if shortestpath and d < 0.0:\n        # invert rotation\n        d = -d\n        q1 *= -1.0\n    angle = math.acos(d) + spin * math.pi\n    if abs(angle) < _EPS:\n        return q0\n    isin = 1.0 / math.sin(angle)\n    q0 *= math.sin((1.0 - fraction) * angle) * isin\n    q1 *= math.sin(fraction * angle) * isin\n    q0 += q1\n    return q0\n\n\ndef random_quaternion(rand=None):\n    \"\"\"Return uniform random unit quaternion.\n\n    rand: array like or None\n        Three independent random variables that are uniformly distributed\n        between 0 and 1.\n\n    >>> q = random_quaternion()\n    >>> numpy.allclose(1.0, vector_norm(q))\n    True\n    >>> q = random_quaternion(numpy.random.random(3))\n    >>> q.shape\n    (4,)\n\n    \"\"\"\n    if rand is None:\n        rand = numpy.random.rand(3)\n    else:\n        assert len(rand) == 3\n    r1 = numpy.sqrt(1.0 - rand[0])\n    r2 = numpy.sqrt(rand[0])\n    pi2 = math.pi * 2.0\n    t1 = pi2 * rand[1]\n    t2 = pi2 * rand[2]\n    return numpy.array((numpy.sin(t1)*r1,\n                        numpy.cos(t1)*r1,\n                        numpy.sin(t2)*r2,\n                        numpy.cos(t2)*r2), dtype=numpy.float64)\n\n\ndef random_rotation_matrix(rand=None):\n    \"\"\"Return uniform random rotation matrix.\n\n    rnd: array like\n        Three independent random variables that are uniformly distributed\n        between 0 and 1 for each returned quaternion.\n\n    >>> R = random_rotation_matrix()\n    >>> numpy.allclose(numpy.dot(R.T, R), numpy.identity(4))\n    True\n\n    \"\"\"\n    return quaternion_matrix(random_quaternion(rand))\n\ndef random_direction_3d():\n    \"\"\" equal-area projection according to:\n        https://math.stackexchange.com/questions/44689/how-to-find-a-random-axis-or-unit-vector-in-3d\n        cfo, 2015/10/16\n    \"\"\"\n    z = numpy.random.rand() * 2.0 - 1.0\n    t = numpy.random.rand() * 2.0 * numpy.pi\n    r = numpy.sqrt(1.0 - z*z)\n    x = r * numpy.cos(t)\n    y = r * numpy.sin(t)\n    return numpy.array([x, y, z], dtype=numpy.float64)\n\nclass Arcball(object):\n    \"\"\"Virtual Trackball Control.\n\n    >>> ball = Arcball()\n    >>> ball = Arcball(initial=numpy.identity(4))\n    >>> ball.place([320, 320], 320)\n    >>> ball.down([500, 250])\n    >>> ball.drag([475, 275])\n    >>> R = ball.matrix()\n    >>> numpy.allclose(numpy.sum(R), 3.90583455)\n    True\n    >>> ball = Arcball(initial=[0, 0, 0, 1])\n    >>> ball.place([320, 320], 320)\n    >>> ball.setaxes([1,1,0], [-1, 1, 0])\n    >>> ball.setconstrain(True)\n    >>> ball.down([400, 200])\n    >>> ball.drag([200, 400])\n    >>> R = ball.matrix()\n    >>> numpy.allclose(numpy.sum(R), 0.2055924)\n    True\n    >>> ball.next()\n\n    \"\"\"\n\n    def __init__(self, initial=None):\n        \"\"\"Initialize virtual trackball control.\n\n        initial : quaternion or rotation matrix\n\n        \"\"\"\n        self._axis = None\n        self._axes = None\n        self._radius = 1.0\n        self._center = [0.0, 0.0]\n        self._vdown = numpy.array([0, 0, 1], dtype=numpy.float64)\n        self._constrain = False\n\n        if initial is None:\n            self._qdown = numpy.array([0, 0, 0, 1], dtype=numpy.float64)\n        else:\n            initial = numpy.array(initial, dtype=numpy.float64)\n            if initial.shape == (4, 4):\n                self._qdown = quaternion_from_matrix(initial)\n            elif initial.shape == (4, ):\n                initial /= vector_norm(initial)\n                self._qdown = initial\n            else:\n                raise ValueError(\"initial not a quaternion or matrix.\")\n\n        self._qnow = self._qpre = self._qdown\n\n    def place(self, center, radius):\n        \"\"\"Place Arcball, e.g. when window size changes.\n\n        center : sequence[2]\n            Window coordinates of trackball center.\n        radius : float\n            Radius of trackball in window coordinates.\n\n        \"\"\"\n        self._radius = float(radius)\n        self._center[0] = center[0]\n        self._center[1] = center[1]\n\n    def setaxes(self, *axes):\n        \"\"\"Set axes to constrain rotations.\"\"\"\n        if axes is None:\n            self._axes = None\n        else:\n            self._axes = [unit_vector(axis) for axis in axes]\n\n    def setconstrain(self, constrain):\n        \"\"\"Set state of constrain to axis mode.\"\"\"\n        self._constrain = constrain == True\n\n    def getconstrain(self):\n        \"\"\"Return state of constrain to axis mode.\"\"\"\n        return self._constrain\n\n    def down(self, point):\n        \"\"\"Set initial cursor window coordinates and pick constrain-axis.\"\"\"\n        self._vdown = arcball_map_to_sphere(point, self._center, self._radius)\n        self._qdown = self._qpre = self._qnow\n\n        if self._constrain and self._axes is not None:\n            self._axis = arcball_nearest_axis(self._vdown, self._axes)\n            self._vdown = arcball_constrain_to_axis(self._vdown, self._axis)\n        else:\n            self._axis = None\n\n    def drag(self, point):\n        \"\"\"Update current cursor window coordinates.\"\"\"\n        vnow = arcball_map_to_sphere(point, self._center, self._radius)\n\n        if self._axis is not None:\n            vnow = arcball_constrain_to_axis(vnow, self._axis)\n\n        self._qpre = self._qnow\n\n        t = numpy.cross(self._vdown, vnow)\n        if numpy.dot(t, t) < _EPS:\n            self._qnow = self._qdown\n        else:\n            q = [t[0], t[1], t[2], numpy.dot(self._vdown, vnow)]\n            self._qnow = quaternion_multiply(q, self._qdown)\n\n    def next(self, acceleration=0.0):\n        \"\"\"Continue rotation in direction of last drag.\"\"\"\n        q = quaternion_slerp(self._qpre, self._qnow, 2.0+acceleration, False)\n        self._qpre, self._qnow = self._qnow, q\n\n    def matrix(self):\n        \"\"\"Return homogeneous rotation matrix.\"\"\"\n        return quaternion_matrix(self._qnow)\n\n\ndef arcball_map_to_sphere(point, center, radius):\n    \"\"\"Return unit sphere coordinates from window coordinates.\"\"\"\n    v = numpy.array(((point[0] - center[0]) / radius,\n                     (center[1] - point[1]) / radius,\n                     0.0), dtype=numpy.float64)\n    n = v[0]*v[0] + v[1]*v[1]\n    if n > 1.0:\n        v /= math.sqrt(n) # position outside of sphere\n    else:\n        v[2] = math.sqrt(1.0 - n)\n    return v\n\n\ndef arcball_constrain_to_axis(point, axis):\n    \"\"\"Return sphere point perpendicular to axis.\"\"\"\n    v = numpy.array(point, dtype=numpy.float64, copy=True)\n    a = numpy.array(axis, dtype=numpy.float64, copy=True)\n    v -= a * numpy.dot(a, v) # on plane\n    n = vector_norm(v)\n    if n > _EPS:\n        if v[2] < 0.0:\n            v *= -1.0\n        v /= n\n        return v\n    if a[2] == 1.0:\n        return numpy.array([1, 0, 0], dtype=numpy.float64)\n    return unit_vector([-a[1], a[0], 0])\n\n\ndef arcball_nearest_axis(point, axes):\n    \"\"\"Return axis, which arc is nearest to point.\"\"\"\n    point = numpy.array(point, dtype=numpy.float64, copy=False)\n    nearest = None\n    mx = -1.0\n    for axis in axes:\n        t = numpy.dot(arcball_constrain_to_axis(point, axis), point)\n        if t > mx:\n            nearest = axis\n            mx = t\n    return nearest\n\n\n# epsilon for testing whether a number is close to zero\n_EPS = numpy.finfo(float).eps * 4.0\n\n# axis sequences for Euler angles\n_NEXT_AXIS = [1, 2, 0, 1]\n\n# map axes strings to/from tuples of inner axis, parity, repetition, frame\n_AXES2TUPLE = {\n    'sxyz': (0, 0, 0, 0), 'sxyx': (0, 0, 1, 0), 'sxzy': (0, 1, 0, 0),\n    'sxzx': (0, 1, 1, 0), 'syzx': (1, 0, 0, 0), 'syzy': (1, 0, 1, 0),\n    'syxz': (1, 1, 0, 0), 'syxy': (1, 1, 1, 0), 'szxy': (2, 0, 0, 0),\n    'szxz': (2, 0, 1, 0), 'szyx': (2, 1, 0, 0), 'szyz': (2, 1, 1, 0),\n    'rzyx': (0, 0, 0, 1), 'rxyx': (0, 0, 1, 1), 'ryzx': (0, 1, 0, 1),\n    'rxzx': (0, 1, 1, 1), 'rxzy': (1, 0, 0, 1), 'ryzy': (1, 0, 1, 1),\n    'rzxy': (1, 1, 0, 1), 'ryxy': (1, 1, 1, 1), 'ryxz': (2, 0, 0, 1),\n    'rzxz': (2, 0, 1, 1), 'rxyz': (2, 1, 0, 1), 'rzyz': (2, 1, 1, 1)}\n\n_TUPLE2AXES = dict((v, k) for k, v in _AXES2TUPLE.items())\n\n# helper functions\n\ndef vector_norm(data, axis=None, out=None):\n    \"\"\"Return length, i.e. eucledian norm, of ndarray along axis.\n\n    >>> v = numpy.random.random(3)\n    >>> n = vector_norm(v)\n    >>> numpy.allclose(n, numpy.linalg.norm(v))\n    True\n    >>> v = numpy.random.rand(6, 5, 3)\n    >>> n = vector_norm(v, axis=-1)\n    >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=2)))\n    True\n    >>> n = vector_norm(v, axis=1)\n    >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1)))\n    True\n    >>> v = numpy.random.rand(5, 4, 3)\n    >>> n = numpy.empty((5, 3), dtype=numpy.float64)\n    >>> vector_norm(v, axis=1, out=n)\n    >>> numpy.allclose(n, numpy.sqrt(numpy.sum(v*v, axis=1)))\n    True\n    >>> vector_norm([])\n    0.0\n    >>> vector_norm([1.0])\n    1.0\n\n    \"\"\"\n    data = numpy.array(data, dtype=numpy.float64, copy=True)\n    if out is None:\n        if data.ndim == 1:\n            return math.sqrt(numpy.dot(data, data))\n        data *= data\n        out = numpy.atleast_1d(numpy.sum(data, axis=axis))\n        numpy.sqrt(out, out)\n        return out\n    else:\n        data *= data\n        numpy.sum(data, axis=axis, out=out)\n        numpy.sqrt(out, out)\n\n\ndef unit_vector(data, axis=None, out=None):\n    \"\"\"Return ndarray normalized by length, i.e. eucledian norm, along axis.\n\n    >>> v0 = numpy.random.random(3)\n    >>> v1 = unit_vector(v0)\n    >>> numpy.allclose(v1, v0 / numpy.linalg.norm(v0))\n    True\n    >>> v0 = numpy.random.rand(5, 4, 3)\n    >>> v1 = unit_vector(v0, axis=-1)\n    >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=2)), 2)\n    >>> numpy.allclose(v1, v2)\n    True\n    >>> v1 = unit_vector(v0, axis=1)\n    >>> v2 = v0 / numpy.expand_dims(numpy.sqrt(numpy.sum(v0*v0, axis=1)), 1)\n    >>> numpy.allclose(v1, v2)\n    True\n    >>> v1 = numpy.empty((5, 4, 3), dtype=numpy.float64)\n    >>> unit_vector(v0, axis=1, out=v1)\n    >>> numpy.allclose(v1, v2)\n    True\n    >>> list(unit_vector([]))\n    []\n    >>> list(unit_vector([1.0]))\n    [1.0]\n\n    \"\"\"\n    if out is None:\n        data = numpy.array(data, dtype=numpy.float64, copy=True)\n        if data.ndim == 1:\n            data /= math.sqrt(numpy.dot(data, data))\n            return data\n    else:\n        if out is not data:\n            out[:] = numpy.array(data, copy=False)\n        data = out\n    length = numpy.atleast_1d(numpy.sum(data*data, axis))\n    numpy.sqrt(length, length)\n    if axis is not None:\n        length = numpy.expand_dims(length, axis)\n    data /= length\n    if out is None:\n        return data\n\n\ndef random_vector(size):\n    \"\"\"Return array of random doubles in the half-open interval [0.0, 1.0).\n\n    >>> v = random_vector(10000)\n    >>> numpy.all(v >= 0.0) and numpy.all(v < 1.0)\n    True\n    >>> v0 = random_vector(10)\n    >>> v1 = random_vector(10)\n    >>> numpy.any(v0 == v1)\n    False\n\n    \"\"\"\n    return numpy.random.random(size)\n\n\ndef inverse_matrix(matrix):\n    \"\"\"Return inverse of square transformation matrix.\n\n    >>> M0 = random_rotation_matrix()\n    >>> M1 = inverse_matrix(M0.T)\n    >>> numpy.allclose(M1, numpy.linalg.inv(M0.T))\n    True\n    >>> for size in range(1, 7):\n    ...     M0 = numpy.random.rand(size, size)\n    ...     M1 = inverse_matrix(M0)\n    ...     if not numpy.allclose(M1, numpy.linalg.inv(M0)): print size\n\n    \"\"\"\n    return numpy.linalg.inv(matrix)\n\n\ndef concatenate_matrices(*matrices):\n    \"\"\"Return concatenation of series of transformation matrices.\n\n    >>> M = numpy.random.rand(16).reshape((4, 4)) - 0.5\n    >>> numpy.allclose(M, concatenate_matrices(M))\n    True\n    >>> numpy.allclose(numpy.dot(M, M.T), concatenate_matrices(M, M.T))\n    True\n\n    \"\"\"\n    M = numpy.identity(4)\n    for i in matrices:\n        M = numpy.dot(M, i)\n    return M\n\n\ndef is_same_transform(matrix0, matrix1):\n    \"\"\"Return True if two matrices perform same transformation.\n\n    >>> is_same_transform(numpy.identity(4), numpy.identity(4))\n    True\n    >>> is_same_transform(numpy.identity(4), random_rotation_matrix())\n    False\n\n    \"\"\"\n    matrix0 = numpy.array(matrix0, dtype=numpy.float64, copy=True)\n    matrix0 /= matrix0[3, 3]\n    matrix1 = numpy.array(matrix1, dtype=numpy.float64, copy=True)\n    matrix1 /= matrix1[3, 3]\n    return numpy.allclose(matrix0, matrix1)\n\n\ndef _import_module(module_name, warn=True, prefix='_py_', ignore='_'):\n    \"\"\"Try import all public attributes from module into global namespace.\n\n    Existing attributes with name clashes are renamed with prefix.\n    Attributes starting with underscore are ignored by default.\n\n    Return True on successful import.\n\n    \"\"\"\n    try:\n        module = __import__(module_name)\n    except ImportError:\n        if warn:\n            warnings.warn(\"Failed to import module \" + module_name)\n    else:\n        for attr in dir(module):\n            if ignore and attr.startswith(ignore):\n                continue\n            if prefix:\n                if attr in globals():\n                    globals()[prefix + attr] = globals()[attr]\n                elif warn:\n                    warnings.warn(\"No Python implementation of \" + attr)\n            globals()[attr] = getattr(module, attr)\n        return True\n"
  },
  {
    "path": "svo_vikit/vikit_ros/CMakeLists.txt",
    "content": "project(vikit_ros)\ncmake_minimum_required(VERSION 2.8.3)\n\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\ninclude(SvoSetup)\n\nset(HEADERS\n  include/vikit/img_type_conversion.h\n  include/vikit/output_helper.h\n  include/vikit/params_helper.h\n  )\n\nset(SOURCES\n  src/output_helper.cpp\n  src/img_type_conversion.cpp\n  )\n\n# Create vikit library\ncs_add_library(${PROJECT_NAME} ${SOURCES} ${HEADERS})\n\n################################################################################\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_vikit/vikit_ros/include/vikit/img_type_conversion.h",
    "content": "#pragma once\n\n#include <ros/ros.h>\n#include <sensor_msgs/image_encodings.h>\n#include <cv_bridge/cv_bridge.h>\n\nnamespace vk {\nnamespace img_type_conversion\n{\nint sensorMsgsEncodingToOpenCVType(const std::string& encoding);\n\nstd::string openCVTypeToSensorMsgsEncoding(const int opencv_type);\n} // namespace img_type_conversion\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_ros/include/vikit/output_helper.h",
    "content": "/*\n * output_helper.h\n *\n *  Created on: Jan 20, 2013\n *      Author: cforster\n */\n\n#pragma once\n\n#include <string>\n#include <ros/ros.h>\n#include <Eigen/Core>\n#include <tf/transform_broadcaster.h>\n#include <kindr/minimal/quat-transformation.h>\n\nnamespace vk {\n\nusing Transformation = kindr::minimal::QuatTransformation;\n\nnamespace output_helper {\n\nusing namespace std;\nusing namespace Eigen;\n\nvoid publishTfTransform(\n    const Transformation& T,\n    const ros::Time& stamp,\n    const string& frame_id,\n    const string& child_frame_id,\n    tf::TransformBroadcaster& br);\n\nvoid publishPointMarker(\n    ros::Publisher pub,\n    const Vector3d& pos,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color,\n    ros::Duration lifetime = ros::Duration(0.0));\n\nvoid publishLineMarker(\n    ros::Publisher pub,\n    const Vector3d& start,\n    const Vector3d& end,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color,\n    ros::Duration lifetime = ros::Duration(0.0));\n\nvoid publishArrowMarker(\n    ros::Publisher pub,\n    const Vector3d& pos,\n    const Vector3d& dir,\n    double scale,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color);\n\nvoid publishHexacopterMarker(\n    ros::Publisher pub,\n    const string& frame_id,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color);\n\nvoid publishQuadrocopterMarkers(ros::Publisher pub,\n                        const string& frame_id,\n                        const string& ns,\n                        const ros::Time& timestamp,\n                        int id,\n                        int action,\n                        double marker_scale,\n                        const Vector3d& color);\n\nvoid publishCameraMarker(\n    ros::Publisher pub,\n    const string& frame_id,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color);\n\nvoid publishFrameMarker(\n    ros::Publisher pub,\n    const Matrix3d& rot,\n    const Vector3d& pos,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    ros::Duration lifetime = ros::Duration(0.0));\n\nvoid publishGtsamPoseCovariance(\n    const ros::Publisher& pub,\n    const Eigen::Vector3d& mean,\n    const Eigen::Matrix3d& R_W_B, // Body in World-Frame\n    const Eigen::Matrix<double, 6, 6>& covariance,\n    const string& ns,\n    int id,\n    int action,\n    double sigma_scale,\n    const Vector4d& color);\n\n\n} // namespace output_helper\n} // namespace vk\n\n"
  },
  {
    "path": "svo_vikit/vikit_ros/include/vikit/params_helper.h",
    "content": "/*\n * ros_params_helper.h\n *\n *  Created on: Feb 22, 2013\n *      Author: cforster\n *\n * from libpointmatcher_ros\n */\n\n#ifndef ROS_PARAMS_HELPER_H_\n#define ROS_PARAMS_HELPER_H_\n\n#include <string>\n#include <ros/ros.h>\n\nnamespace vk {\n\ninline\nbool hasParam(const std::string& name)\n{\n  return ros::param::has(name);\n}\n\ntemplate<typename T>\nT getParam(const std::string& name, const T& defaultValue)\n{\n  T v;\n  if(ros::param::get(name, v))\n  {\n    ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n    return v;\n  }\n  else\n    ROS_WARN_STREAM(\"Cannot find value for parameter: \" << name << \", assigning default: \" << defaultValue);\n  return defaultValue;\n}\n\ntemplate<typename T>\nT getParam(const std::string& name)\n{\n  T v;\n  if(ros::param::get(name, v))\n  {\n    ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n    return v;\n  }\n  else\n    ROS_ERROR_STREAM(\"Cannot find value for parameter: \" << name);\n  return T();\n}\n\ntemplate<typename T>\nT param(const ros::NodeHandle& nh, const std::string& name, const T& defaultValue)\n{\n  if(nh.hasParam(name))\n  {\n    T v;\n    nh.param<T>(name, v, defaultValue);\n    ROS_INFO_STREAM(\"Found parameter: \" << name << \", value: \" << v);\n    return v;\n  }\n  ROS_WARN_STREAM(\"Cannot find value for parameter: \" << name << \", assigning default: \" << defaultValue);\n  return defaultValue;\n}\n\n} // namespace vk\n\n#endif // ROS_PARAMS_HELPER_H_\n"
  },
  {
    "path": "svo_vikit/vikit_ros/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>vikit_ros</name>\n  <version>0.0.0</version>\n  <description>The vikit_ros package</description>\n  <maintainer email=\"forster@ifi.uzh.ch\">cforster</maintainer>\n  <license>RPG</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>svo_cmake</depend>\n  <depend>vikit_common</depend>\n  <depend>glog_catkin</depend>\n  <depend>eigen_catkin</depend>\n  <depend>minkindr</depend>\n\n  <depend>roscpp</depend>\n  <depend>tf</depend>\n  <depend>visualization_msgs</depend>\n  <depend>cv_bridge</depend>\n  <depend>sensor_msgs</depend>\n\n</package>\n"
  },
  {
    "path": "svo_vikit/vikit_ros/src/img_type_conversion.cpp",
    "content": "#include <vikit/img_type_conversion.h>\n\nnamespace vk {\nnamespace img_type_conversion{\n\nint sensorMsgsEncodingToOpenCVType(const std::string &encoding)\n{\n  if((encoding == sensor_msgs::image_encodings::MONO8) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_8UC1))\n  {\n    return CV_8UC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_8UC2)\n  {\n    return CV_8UC2;\n  }\n  if((encoding == sensor_msgs::image_encodings::BGR8) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_8UC3) ||\n     (encoding == sensor_msgs::image_encodings::RGB8))\n  {\n    return CV_8UC3;\n  }\n  if((encoding == sensor_msgs::image_encodings::BGRA8) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_8UC4) ||\n     (encoding == sensor_msgs::image_encodings::RGBA8))\n  {\n    return CV_8UC4;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_8SC1)\n  {\n    return CV_8SC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_8SC2)\n  {\n    return CV_8SC2;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_8SC3)\n  {\n    return CV_8SC3;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_8SC4)\n  {\n    return CV_8SC4;\n  }\n  if((encoding == sensor_msgs::image_encodings::MONO16) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_16UC1))\n  {\n    return CV_16UC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_16UC2)\n  {\n    return CV_16UC2;\n  }\n  if((encoding == sensor_msgs::image_encodings::BGR16) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_16UC3) ||\n     (encoding == sensor_msgs::image_encodings::RGB16))\n  {\n    return CV_16UC3;\n  }\n  if((encoding == sensor_msgs::image_encodings::BGRA16) ||\n     (encoding == sensor_msgs::image_encodings::TYPE_16UC4) ||\n     (encoding == sensor_msgs::image_encodings::RGBA16))\n  {\n    return CV_16UC4;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_16SC1)\n  {\n    return CV_16SC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_16SC2)\n  {\n    return CV_16SC2;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_16SC3)\n  {\n    return CV_16SC3;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_16SC4)\n  {\n    return CV_16SC4;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32SC1)\n  {\n    return CV_32SC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32SC2)\n  {\n    return CV_32SC2;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32SC3)\n  {\n    return CV_32SC3;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32SC4)\n  {\n    return CV_32SC4;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32FC1)\n  {\n    return CV_32FC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32FC2)\n  {\n    return CV_32FC2;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32FC3)\n  {\n    return CV_32FC3;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_32FC4)\n  {\n    return CV_32FC4;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_64FC1)\n  {\n    return CV_64FC1;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_64FC2)\n  {\n    return CV_64FC2;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_64FC3)\n  {\n    return CV_64FC3;\n  }\n  if(encoding == sensor_msgs::image_encodings::TYPE_64FC4)\n  {\n    return CV_64FC4;\n  }\n\n  // invalid sensor_msgs encoding was passed\n  ROS_ERROR(\"[sensorMsgsEncodingToOpenCVType] Invalid sensor_msgs encoding was passed\");\n  return -1;\n}\n\nstd::string openCVTypeToSensorMsgsEncoding(const int opencv_type)\n{\n  if(opencv_type == CV_8UC1)\n  {\n    return sensor_msgs::image_encodings::MONO8;\n  }\n  if(opencv_type == CV_8UC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_8UC2;\n  }\n  if(opencv_type == CV_8UC3)\n  {\n    return sensor_msgs::image_encodings::BGR8;\n  }\n  if(opencv_type == CV_8UC4)\n  {\n    return sensor_msgs::image_encodings::BGRA8;\n  }\n  if(opencv_type == CV_8SC1)\n  {\n    return sensor_msgs::image_encodings::TYPE_8SC1;\n  }\n  if(opencv_type == CV_8SC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_8SC2;\n  }\n  if(opencv_type == CV_8SC3)\n  {\n    return sensor_msgs::image_encodings::TYPE_8SC3;\n  }\n  if(opencv_type == CV_8SC4)\n  {\n    return sensor_msgs::image_encodings::TYPE_8SC4;\n  }\n  if(opencv_type == CV_16UC1)\n  {\n    return sensor_msgs::image_encodings::MONO16;\n  }\n  if(opencv_type == CV_16UC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_16UC2;\n  }\n  if(opencv_type == CV_16UC3)\n  {\n    return sensor_msgs::image_encodings::BGR16;\n  }\n  if(opencv_type == CV_16UC4)\n  {\n    return sensor_msgs::image_encodings::BGRA16;\n  }\n  if(opencv_type == CV_16SC1)\n  {\n    return sensor_msgs::image_encodings::TYPE_16SC1;\n  }\n  if(opencv_type == CV_16SC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_16SC2;\n  }\n  if(opencv_type == CV_16SC3)\n  {\n    return sensor_msgs::image_encodings::TYPE_16SC3;\n  }\n  if(opencv_type == CV_16SC4)\n  {\n    return sensor_msgs::image_encodings::TYPE_16SC4;\n  }\n  if(opencv_type == CV_32SC1)\n  {\n    return sensor_msgs::image_encodings::TYPE_32SC1;\n  }\n  if(opencv_type == CV_32SC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_32SC2;\n  }\n  if(opencv_type == CV_32SC3)\n  {\n    return sensor_msgs::image_encodings::TYPE_32SC3;\n  }\n  if(opencv_type == CV_32SC4)\n  {\n    return sensor_msgs::image_encodings::TYPE_32SC4;\n  }\n  if(opencv_type == CV_32FC1)\n  {\n    return sensor_msgs::image_encodings::TYPE_32FC1;\n  }\n  if(opencv_type == CV_32FC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_32FC2;\n  }\n  if(opencv_type == CV_32FC3)\n  {\n    return sensor_msgs::image_encodings::TYPE_32FC3;\n  }\n  if(opencv_type == CV_32FC4)\n  {\n    return sensor_msgs::image_encodings::TYPE_32FC4;\n  }\n  if(opencv_type == CV_64FC1)\n  {\n    return sensor_msgs::image_encodings::TYPE_64FC1;\n  }\n  if(opencv_type == CV_64FC2)\n  {\n    return sensor_msgs::image_encodings::TYPE_64FC2;\n  }\n  if(opencv_type == CV_64FC3)\n  {\n    return sensor_msgs::image_encodings::TYPE_64FC3;\n  }\n  if(opencv_type == CV_64FC4)\n  {\n    return sensor_msgs::image_encodings::TYPE_64FC4;\n  }\n\n  // invalid opencv type was passed\n  ROS_ERROR(\"[openCVTypeToSensorMsgsEncoding] Invalid OpenCV type was passed\");\n  return \"\";\n}\n\n} // namespace img_type_conversion\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_ros/src/output_helper.cpp",
    "content": "/*\n * output_helper.cpp\n *\n *  Created on: Jan 20, 2013\n *      Author: chrigi\n */\n\n#include <complex>\n#include <Eigen/Eigenvalues>\n#include <Eigen/SVD>\n#include <glog/logging.h>\n#include <vikit/output_helper.h>\n#include <visualization_msgs/Marker.h>\n\nnamespace vk {\nnamespace output_helper {\n\nvoid publishTfTransform(\n    const Transformation& T,\n    const ros::Time& stamp,\n    const string& frame_id,\n    const string& child_frame_id,\n    tf::TransformBroadcaster& br)\n{\n  tf::Transform transform_msg;\n  const Eigen::Quaterniond& q = T.getRotation().toImplementation();\n  transform_msg.setOrigin(tf::Vector3(T.getPosition().x(), T.getPosition().y(), T.getPosition().z()));\n  tf::Quaternion tf_q; tf_q.setX(q.x()); tf_q.setY(q.y()); tf_q.setZ(q.z()); tf_q.setW(q.w());\n  transform_msg.setRotation(tf_q);\n  br.sendTransform(tf::StampedTransform(transform_msg, stamp, frame_id, child_frame_id));\n}\n\nvoid publishPointMarker(\n    ros::Publisher pub,\n    const Vector3d& pos,\n    const string& ns,\n    const ros::Time& timestamp,\n    int id,\n    int action,\n    double marker_scale,\n    const Vector3d& color,\n    ros::Duration lifetime)\n{\n  visualization_msgs::Marker msg;\n  msg.header.frame_id = \"/world\";\n  msg.header.stamp = timestamp;\n  msg.ns = ns;\n  msg.id = id;\n  msg.type = visualization_msgs::Marker::CUBE;\n  msg.action = action; // 0 = add/modify\n  msg.scale.x = marker_scale;\n  msg.scale.y = marker_scale;\n  msg.scale.z = marker_scale;\n  msg.color.a = 1.0;\n  msg.color.r = color[0];\n  msg.color.g = color[1];\n  msg.color.b = color[2];\n  msg.lifetime = lifetime;\n  msg.pose.position.x = pos[0];\n  msg.pose.position.y = pos[1];\n  msg.pose.position.z = pos[2];\n  msg.pose.orientation.x = 0.0;\n  msg.pose.orientation.y = 0.0;\n  msg.pose.orientation.z = 0.0;\n  msg.pose.orientation.w = 1.0;\n  pub.publish(msg);\n}\n\nvoid\npublishLineMarker(ros::Publisher pub,\n                  const Vector3d& start,\n                  const Vector3d& end,\n                  const string& ns,\n                  const ros::Time& timestamp,\n                  int id,\n                  int action,\n                  double marker_scale,\n                  const Vector3d& color,\n                  ros::Duration lifetime)\n{\n  visualization_msgs::Marker msg;\n  msg.header.frame_id = \"/world\";\n  msg.header.stamp = timestamp;\n  msg.ns = ns;\n  msg.id = id;\n  msg.type = visualization_msgs::Marker::LINE_STRIP;\n  msg.action = action; // 0 = add/modify\n  msg.scale.x = marker_scale;\n  msg.color.a = 1.0;\n  msg.color.r = color[0];\n  msg.color.g = color[1];\n  msg.color.b = color[2];\n  msg.points.resize(2);\n  msg.lifetime = lifetime;\n  msg.points[0].x = start[0];\n  msg.points[0].y = start[1];\n  msg.points[0].z = start[2];\n  msg.points[1].x = end[0];\n  msg.points[1].y = end[1];\n  msg.points[1].z = end[2];\n  pub.publish(msg);\n}\n\n\nvoid\npublishArrowMarker(ros::Publisher pub,\n                   const Vector3d& pos,\n                   const Vector3d& dir,\n                   double scale,\n                   const string& ns,\n                   const ros::Time& timestamp,\n                   int id,\n                   int action,\n                   double marker_scale,\n                   const Vector3d& color)\n{\n  visualization_msgs::Marker msg;\n  msg.header.frame_id = \"/world\";\n  msg.header.stamp = timestamp;\n  msg.ns = ns;\n  msg.id = id;\n  msg.type = visualization_msgs::Marker::ARROW;\n  msg.action = action; // 0 = add/modify\n  msg.scale.x = marker_scale;\n  msg.scale.y = marker_scale*0.35;\n  msg.scale.z = 0.0;\n  msg.color.a = 1.0;\n  msg.color.r = color[0];\n  msg.color.g = color[1];\n  msg.color.b = color[2];\n  msg.points.resize(2);\n  msg.points[0].x = pos[0];\n  msg.points[0].y = pos[1];\n  msg.points[0].z = pos[2];\n  msg.points[1].x = pos[0] + scale*dir[0];\n  msg.points[1].y = pos[1] + scale*dir[1];\n  msg.points[1].z = pos[2] + scale*dir[2];\n  pub.publish(msg);\n}\n\nvoid\npublishHexacopterMarker(ros::Publisher pub,\n                        const string& frame_id,\n                        const string& ns,\n                        const ros::Time& timestamp,\n                        int id,\n                        int action,\n                        double marker_scale,\n                        const Vector3d& color)\n{\n  /*\n   * Function by Markus Achtelik from libsfly_viz.\n   * Thank you.\n   */\n  const double sqrt2_2 = sqrt(2) / 2;\n\n  visualization_msgs::Marker marker;\n\n  // the marker will be displayed in frame_id\n  marker.header.frame_id = frame_id;\n  marker.header.stamp = timestamp;\n  marker.ns = ns;\n  marker.action = 0;\n  marker.id = id;\n\n  // make rotors\n  marker.type = visualization_msgs::Marker::CYLINDER;\n  marker.scale.x = 0.2*marker_scale;\n  marker.scale.y = 0.2*marker_scale;\n  marker.scale.z = 0.01*marker_scale;\n  marker.color.r = 0.4;\n  marker.color.g = 0.4;\n  marker.color.b = 0.4;\n  marker.color.a = 0.8;\n  marker.pose.position.z = 0;\n\n  // front left/right\n  marker.pose.position.x = 0.19*marker_scale;\n  marker.pose.position.y = 0.11*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = 0.19*marker_scale;\n  marker.pose.position.y = -0.11*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // left/right\n  marker.pose.position.x = 0;\n  marker.pose.position.y = 0.22*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = 0;\n  marker.pose.position.y = -0.22*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // back left/right\n  marker.pose.position.x = -0.19*marker_scale;\n  marker.pose.position.y = 0.11*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = -0.19*marker_scale;\n  marker.pose.position.y = -0.11*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // make arms\n  marker.type = visualization_msgs::Marker::CUBE;\n  marker.scale.x = 0.44*marker_scale;\n  marker.scale.y = 0.02*marker_scale;\n  marker.scale.z = 0.01*marker_scale;\n  marker.color.r = color[0];\n  marker.color.g = color[1];\n  marker.color.b = color[2];\n  marker.color.a = 1;\n\n  marker.pose.position.x = 0;\n  marker.pose.position.y = 0;\n  marker.pose.position.z = -0.015*marker_scale;\n  marker.pose.orientation.x = 0;\n  marker.pose.orientation.y = 0;\n\n  marker.pose.orientation.w = sqrt2_2;\n  marker.pose.orientation.z = sqrt2_2;\n  marker.id--;\n  pub.publish(marker);\n\n  // 30 deg rotation  0.9659  0  0  0.2588\n  marker.pose.orientation.w = 0.9659;\n  marker.pose.orientation.z = 0.2588;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.orientation.w = 0.9659;\n  marker.pose.orientation.z = -0.2588;\n  marker.id--;\n  pub.publish(marker);\n}\n\nvoid publishQuadrocopterMarkers(ros::Publisher pub,\n                        const string& frame_id,\n                        const string& ns,\n                        const ros::Time& timestamp,\n                        int id,\n                        int action,\n                        double marker_scale,\n                        const Vector3d& color)\n{\n  /*\n   * Function by Markus Achtelik from libsfly_viz.\n   * Thank you.\n   */\n  const double sqrt2_2 = sqrt(2) / 2;\n\n  visualization_msgs::Marker marker;\n\n  // the marker will be displayed in frame_id\n  marker.header.frame_id = frame_id;\n  marker.header.stamp = timestamp;\n  marker.ns = ns;\n  marker.action = 0;\n  marker.id = id;\n\n  // make rotors\n  marker.type = visualization_msgs::Marker::CYLINDER;\n  marker.scale.x = 0.2*marker_scale;\n  marker.scale.y = 0.2*marker_scale;\n  marker.scale.z = 0.01*marker_scale;\n  marker.color.r = 0.4;\n  marker.color.g = 0.4;\n  marker.color.b = 0.4;\n  marker.color.a = 0.8;\n  marker.pose.position.z = 0;\n\n  // front\n  marker.pose.position.x = 0.22*marker_scale;\n  marker.pose.position.y = 0.0;\n  marker.id--;\n  pub.publish(marker);\n\n  // left/right\n  marker.pose.position.x = 0.0;\n  marker.pose.position.y = 0.22*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = 0.0;\n  marker.pose.position.y = -0.22*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // back\n  marker.pose.position.x = -0.22*marker_scale;\n  marker.pose.position.y = 0.0*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // make arms\n  marker.type = visualization_msgs::Marker::CUBE;\n  marker.scale.x = 0.44*marker_scale;\n  marker.scale.y = 0.02*marker_scale;\n  marker.scale.z = 0.01*marker_scale;\n  marker.color.r = color[0];\n  marker.color.g = color[1];\n  marker.color.b = color[2];\n  marker.color.a = 1;\n\n  marker.pose.position.x = 0;\n  marker.pose.position.y = 0;\n  marker.pose.position.z = -0.015*marker_scale;\n  marker.pose.orientation.x = 0;\n  marker.pose.orientation.y = 0;\n\n  marker.pose.orientation.w = sqrt2_2;\n  marker.pose.orientation.z = sqrt2_2;\n  marker.id--;\n  pub.publish(marker);\n\n  // 0 deg rotation\n  marker.pose.orientation.w = 0;\n  marker.pose.orientation.z = 1;\n  marker.id--;\n  pub.publish(marker);\n}\n\nvoid\npublishCameraMarker(ros::Publisher pub,\n                        const string& frame_id,\n                        const string& ns,\n                        const ros::Time& timestamp,\n                        int id,\n                        int action,\n                        double marker_scale,\n                        const Vector3d& color)\n{\n  /*\n   * draw a pyramid as the camera marker\n   */\n  const double sqrt2_2 = sqrt(2) / 2;\n\n  visualization_msgs::Marker marker;\n\n  // the marker will be displayed in frame_id\n  marker.header.frame_id = frame_id;\n  marker.header.stamp = timestamp;\n  marker.ns = ns;\n  marker.action = 0;\n  marker.id = id;\n\n  // make rectangles as frame\n  double r_w = 1.0;\n  double z_plane = (r_w / 2.0)*marker_scale;\n  marker.pose.position.x = 0;\n  marker.pose.position.y = (r_w / 4.0) *marker_scale;\n  marker.pose.position.z = z_plane;\n\n  marker.type = visualization_msgs::Marker::CUBE;\n  marker.scale.x = r_w*marker_scale;\n  marker.scale.y = 0.04*marker_scale;\n  marker.scale.z = 0.04*marker_scale;\n  marker.color.r = color[0];\n  marker.color.g = color[1];\n  marker.color.b = color[2];\n  marker.color.a = 1;\n\n  marker.pose.orientation.x = 0;\n  marker.pose.orientation.y = 0;\n  marker.pose.orientation.z = 0;\n  marker.pose.orientation.w = 1;\n  marker.id--;\n  pub.publish(marker);\n  marker.pose.position.y = -(r_w/ 4.0)*marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.scale.x = (r_w/2.0)*marker_scale;\n  marker.pose.position.x = (r_w / 2.0) *marker_scale;\n  marker.pose.position.y = 0;\n  marker.pose.orientation.w = sqrt2_2;\n  marker.pose.orientation.z = sqrt2_2;\n  marker.id--;\n  pub.publish(marker);\n  marker.pose.position.x = -(r_w / 2.0) *marker_scale;\n  marker.id--;\n  pub.publish(marker);\n\n  // make pyramid edges\n  marker.scale.x = (3.0*r_w/4.0)*marker_scale;\n  marker.pose.position.z = 0.5*z_plane;\n\n  marker.pose.position.x = (r_w / 4.0) *marker_scale;\n  marker.pose.position.y = (r_w / 8.0) *marker_scale;\n//  0.08198092, -0.34727674,  0.21462883,  0.9091823\n  marker.pose.orientation.x = 0.08198092;\n  marker.pose.orientation.y = -0.34727674;\n  marker.pose.orientation.z = 0.21462883;\n  marker.pose.orientation.w = 0.9091823;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = -(r_w / 4.0) *marker_scale;\n  marker.pose.position.y = (r_w / 8.0) *marker_scale;\n// -0.27395078, -0.22863284,  0.9091823 ,  0.21462883\n  marker.pose.orientation.x = 0.08198092;\n  marker.pose.orientation.y = 0.34727674;\n  marker.pose.orientation.z = -0.21462883;\n  marker.pose.orientation.w = 0.9091823;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = -(r_w / 4.0) *marker_scale;\n  marker.pose.position.y = -(r_w / 8.0) *marker_scale;\n//  -0.08198092,  0.34727674,  0.21462883,  0.9091823\n  marker.pose.orientation.x = -0.08198092;\n  marker.pose.orientation.y = 0.34727674;\n  marker.pose.orientation.z = 0.21462883;\n  marker.pose.orientation.w = 0.9091823;\n  marker.id--;\n  pub.publish(marker);\n\n  marker.pose.position.x = (r_w / 4.0) *marker_scale;\n  marker.pose.position.y = -(r_w / 8.0) *marker_scale;\n// -0.08198092, -0.34727674, -0.21462883,  0.9091823\n  marker.pose.orientation.x = -0.08198092;\n  marker.pose.orientation.y = -0.34727674;\n  marker.pose.orientation.z = -0.21462883;\n  marker.pose.orientation.w = 0.9091823;\n  marker.id--;\n  pub.publish(marker);\n}\n\nvoid publishFrameMarker(ros::Publisher pub,\n                        const Matrix3d& rot,\n                        const Vector3d& pos,\n                        const string& ns,\n                        const ros::Time& timestamp,\n                        int id,\n                        int action,\n                        double marker_scale,\n                        ros::Duration lifetime)\n{\n  visualization_msgs::Marker marker;\n  marker.header.frame_id = \"/world\";\n  marker.header.stamp = timestamp;\n  marker.ns = ns;\n  marker.id = id++;\n  marker.type = visualization_msgs::Marker::ARROW;\n  marker.action = action; // 0 = add/modify\n  marker.points.reserve(2);\n  geometry_msgs::Point point;\n  point.x = static_cast<float>(pos.x());\n  point.y = static_cast<float>(pos.y());\n  point.z = static_cast<float>(pos.z());\n  marker.points.push_back(point);\n  point.x = static_cast<float>(pos.x() + marker_scale*rot(0, 2)); // Draw arrow in z-direction\n  point.y = static_cast<float>(pos.y() + marker_scale*rot(1, 2)); // Draw arrow in z-direction\n  point.z = static_cast<float>(pos.z() + marker_scale*rot(2, 2)); // Draw arrow in z-direction\n  marker.points.push_back(point);\n  marker.scale.x = 0.2*marker_scale;\n  marker.scale.y = 0.2*marker_scale;\n  marker.color.a = 1.0;\n  marker.color.r = 0.0;\n  marker.color.g = 0.0;\n  marker.color.b = 1.0;\n  marker.lifetime = lifetime;\n  pub.publish(marker);\n\n  marker.id = id++;\n  marker.points.clear();\n  point.x = static_cast<float>(pos.x());\n  point.y = static_cast<float>(pos.y());\n  point.z = static_cast<float>(pos.z());\n  marker.points.push_back(point);\n  point.x = static_cast<float>(pos.x() + marker_scale*rot(0, 0)); // Draw arrow in x-direction\n  point.y = static_cast<float>(pos.y() + marker_scale*rot(1, 0)); // Draw arrow in x-direction\n  point.z = static_cast<float>(pos.z() + marker_scale*rot(2, 0)); // Draw arrow in x-direction\n  marker.points.push_back(point);\n  marker.color.r = 1.0;\n  marker.color.g = 0.0;\n  marker.color.b = 0.0;\n  marker.lifetime = lifetime;\n  pub.publish(marker);\n\n  marker.id = id++;\n  marker.points.clear();\n  point.x = static_cast<float>(pos.x());\n  point.y = static_cast<float>(pos.y());\n  point.z = static_cast<float>(pos.z());\n  marker.points.push_back(point);\n  point.x = static_cast<float>(pos.x() + marker_scale*rot(0, 1)); // Draw arrow in y-direction\n  point.y = static_cast<float>(pos.y() + marker_scale*rot(1, 1)); // Draw arrow in y-direction\n  point.z = static_cast<float>(pos.z() + marker_scale*rot(2, 1)); // Draw arrow in y-direction\n  marker.points.push_back(point);\n  marker.color.r = 0.0;\n  marker.color.g = 1.0;\n  marker.color.b = 0.0;\n  marker.lifetime = lifetime;\n  pub.publish(marker);\n}\n\nvoid publishGtsamPoseCovariance(\n    const ros::Publisher& pub,\n    const Eigen::Vector3d& mean,\n    const Eigen::Matrix3d& R_W_B, // Body in World-Frame\n    const Eigen::Matrix<double, 6, 6>& covariance,\n    const string& ns,\n    int id,\n    int action,\n    double sigma_scale,\n    const Vector4d& color)\n{\n  // Gtsam performs the translational perturbation as follows:\n  // W_p_WB <- W_p_WB + R_WB * B_pert\n  // since the perturbation is in the body frame, also the translational\n  // covariance part is in the body frame. therefore, we will rotate\n  // the covariance matrix accordingly to the world-frame.\n\n\n  /*\n  Eigen::EigenSolver<Eigen::Matrix3d> es(covariance);\n  const std::complex<double> lambda_1 = es.eigenvalues()[0];\n  const std::complex<double> lambda_2 = es.eigenvalues()[1];\n  const std::complex<double> lambda_3 = es.eigenvalues()[2];\n  CHECK_DOUBLE_EQ(std::imag(lambda_1), 0.0);\n  CHECK_DOUBLE_EQ(std::imag(lambda_2), 0.0);\n  CHECK_DOUBLE_EQ(std::imag(lambda_3), 0.0);\n  auto R_complex = es.eigenvectors();\n  VLOG(20) << \"Eigenvalues are \" << lambda_1 << \", \" << lambda_2 << \", \" << lambda_3;\n  Eigen::Matrix3d R = R_complex.real();\n  R.col(1) = -R.col(1);\n  R = R.array().rowwise() / R.colwise().norm().array(); // normalize\n  CHECK_DOUBLE_EQ(R.determinant(), 1.0);\n  Eigen::Quaterniond q(R);\n  */\n\n  const Matrix3d pose_covariance = covariance.bottomRightCorner(3,3);\n  Eigen::JacobiSVD<Matrix3d> svd(pose_covariance, Eigen::ComputeThinU | Eigen::ComputeThinV);\n  auto S = svd.singularValues();\n  VLOG(20) << \"Eigenvalues are \" << S(0) << \", \" << S(1) << \", \" << S(2);\n  Eigen::Matrix3d R_body = svd.matrixU();\n  if(R_body.determinant() < 0.0)\n  {\n    LOG(ERROR) << \"Can't plot covariance matrix.\";\n    return;\n  }\n  Eigen::Quaterniond q_world(R_W_B * R_body);\n\n  visualization_msgs::Marker m;\n  m.header.frame_id = \"world\";\n  m.header.stamp = ros::Time();\n  m.ns = ns;\n  m.id = id;\n  m.type = visualization_msgs::Marker::SPHERE;\n  m.action = action; // add/modify\n//  m.scale.x = std::real(lambda_1)*sigma_scale;\n//  m.scale.y = std::real(lambda_2)*sigma_scale;\n//  m.scale.z = std::real(lambda_3)*sigma_scale;\n  m.scale.x = S(0) * sigma_scale;\n  m.scale.y = S(1) * sigma_scale;\n  m.scale.z = S(2) * sigma_scale;\n  m.color.r = color(1);\n  m.color.g = color(2);\n  m.color.b = color(3);\n  m.color.a = color(3);\n  m.pose.position.x = mean.x();\n  m.pose.position.y = mean.y();\n  m.pose.position.z = mean.z();\n  m.pose.orientation.x = q_world.x();\n  m.pose.orientation.y = q_world.y();\n  m.pose.orientation.z = q_world.z();\n  m.pose.orientation.w = q_world.w();\n  pub.publish(m);\n}\n\n} // namespace output_helper\n} // namespace vk\n\n"
  },
  {
    "path": "svo_vikit/vikit_solver/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 2.8.3)\nproject(vikit_solver)\nfind_package(catkin_simple REQUIRED)\ncatkin_simple(ALL_DEPS_REQUIRED)\n\nSET(CMAKE_BUILD_TYPE Release) # Release, RelWithDebInfo\nSET(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -O3 -std=c++11\")\n\n#############\n# LIBRARIES #\n#############\ncs_add_library(${PROJECT_NAME}\n  include/vikit/solver/mini_least_squares_solver.h\n  include/vikit/solver/implementation/mini_least_squares_solver.hpp\n  src/robust_cost.cpp\n  include/vikit/solver/robust_cost.h\n)\n\n## Declare a cpp executable\n#cs_add_executable(elevation_map_node src/elevation_map_node.cpp)\n#target_link_libraries(elevation_map_node ${PROJECT_NAME})\n\n##########\n# GTESTS #\n##########\n#catkin_add_gtest(test_cameras\n#    test/test-cameras.cc\n#)\n#target_link_libraries(test_cameras ${PROJECT_NAME}) \n\n##########\n# EXPORT #\n##########\ncs_install()\ncs_export()\n"
  },
  {
    "path": "svo_vikit/vikit_solver/include/vikit/solver/implementation/mini_least_squares_solver.hpp",
    "content": "#include \"vikit/solver/mini_least_squares_solver.h\"\n\n#include <stdexcept>\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace solver {\nnamespace utils {\n\ninline double norm_max(const Eigen::VectorXd & v)\n{\n  double max = -1;\n  for (int i=0; i<v.size(); i++)\n  {\n    double abs = std::fabs(v[i]);\n    if(abs>max){\n      max = abs;\n    }\n  }\n  return max;\n}\n\n} // namespace utils\n\ntemplate <int D, typename T, typename Implementation>\nMiniLeastSquaresSolver<D, T, Implementation>::MiniLeastSquaresSolver(\n    const MiniLeastSquaresSolverOptions& options)\n  : solver_options_(options)\n{}\n\ntemplate <int D, typename T, typename Implementation>\nvoid MiniLeastSquaresSolver<D, T, Implementation>::optimize(State& state)\n{\n  if(solver_options_.strategy == Strategy::GaussNewton)\n    optimizeGaussNewton(state);\n  else if(solver_options_.strategy == Strategy::LevenbergMarquardt)\n    optimizeLevenbergMarquardt(state);\n}\n\n\ntemplate <int D, typename T, typename Implementation>\nvoid MiniLeastSquaresSolver<D, T, Implementation>::optimizeGaussNewton(State& state)\n{\n  // Save the old model to rollback in case of unsuccessful update\n  State old_state = state;\n\n  // perform iterative estimation\n  for (iter_ = 0; iter_<solver_options_.max_iter; ++iter_)\n  {\n    rho_ = 0;\n    startIteration();\n\n    H_.setZero();\n    g_.setZero();\n\n    // compute initial error\n    n_meas_ = 0;\n    double new_chi2 = evaluateError(state, &H_, &g_);\n\n    // add prior\n    if(have_prior_)\n    {\n      applyPrior(state);\n    }\n\n    // solve the linear system\n    if(!solve(H_, g_, dx_))\n    {\n      LOG(WARNING) << \"Matrix is close to singular! Stop Optimizing.\"\n                   << \"H = \" << H_ << \"g = \" << g_;\n      stop_ = true;\n    }\n\n    // check if error increased since last optimization\n    if((iter_ > 0 && new_chi2 > chi2_ && solver_options_.stop_when_error_increases) || stop_)\n    {\n      VLOG(400) << \"It. \" << iter_\n                << \"\\t Failure\"\n                << \"\\t new_chi2 = \" << new_chi2\n                << \"\\t n_meas = \" << n_meas_\n                << \"\\t Error increased. Stop optimizing.\";\n      state = old_state; // rollback\n      break;\n    }\n\n    // update the model\n    State new_state;\n    update(state, dx_, new_state);\n    old_state = state;\n    state = new_state;\n    chi2_ = new_chi2;\n    double x_norm = utils::norm_max(dx_);\n    VLOG(400) << \"It. \" << iter_\n              << \"\\t Success\"\n              << \"\\t new_chi2 = \" << new_chi2\n              << \"\\t n_meas = \" << n_meas_\n              << \"\\t x_norm = \" << x_norm;\n    finishIteration();\n\n    // stop when converged, i.e. update step too small\n    if(x_norm < solver_options_.eps)\n    {\n      VLOG(400) << \"Converged, x_norm \" << x_norm << \" < \" << solver_options_.eps;\n      break;\n    }\n  }\n}\n\ntemplate <int D, typename T, typename Implementation>\nvoid MiniLeastSquaresSolver<D, T, Implementation>::optimizeLevenbergMarquardt(State& state)\n{\n  // init parameters\n  mu_ = solver_options_.mu_init;\n  nu_ = solver_options_.nu_init;\n\n  // compute the initial error\n  chi2_ = evaluateError(state, nullptr, nullptr);\n  VLOG(400) << \"init chi2 = \" << chi2_\n          << \"\\t n_meas = \" << n_meas_;\n\n  // TODO: compute initial lambda\n  // Hartley and Zisserman: \"A typical init value of lambda is 10^-3 times the\n  // average of the diagonal elements of J'J\"\n  // Compute Initial Lambda\n  if(mu_ < 0)\n  {\n    double H_max_diag = 0;\n    double tau = 1e-4;\n    for(size_t j=0; j<D; ++j)\n    {\n      H_max_diag = std::max(H_max_diag, std::fabs(H_(j,j)));\n    }\n    mu_ = tau*H_max_diag;\n  }\n\n  // perform iterative estimation\n  for (iter_ = 0; iter_<solver_options_.max_iter; ++iter_)\n  {\n    rho_ = 0;\n    startIteration();\n\n    // try to compute and update, if it fails, try with increased mu\n    trials_ = 0;\n    do\n    {\n      // init variables\n      State new_model;\n      double new_chi2 = -1;\n      H_.setZero();\n      //H_ = mu_ * Matrix<double,D,D>::Identity(D,D);\n      g_.setZero();\n\n      // linearize\n      n_meas_ = 0;\n      evaluateError(state, &H_, &g_);\n\n      // add damping term:\n      H_ += (H_.diagonal()*mu_).asDiagonal();\n\n      // add prior\n      if(have_prior_)\n      {\n        applyPrior(state);\n      }\n\n      // solve the linear system to obtain small perturbation in direction of gradient\n      if(solve(H_, g_, dx_))\n      {\n        // apply perturbation to the state\n        update(state, dx_, new_model);\n\n        // compute error with new model and compare to old error\n        n_meas_ = 0;\n        new_chi2 = evaluateError(new_model, nullptr, nullptr);\n        rho_ = chi2_-new_chi2;\n      }\n      else\n      {\n        LOG(WARNING) << \"Matrix is close to singular! Stop Optimizing.\"\n                     << \"H = \" << H_ << \"g = \" << g_;\n        rho_ = -1;\n      }\n\n      if(rho_>0)\n      {\n        // update decrased the error -> success\n        state = new_model;\n        chi2_ = new_chi2;\n        stop_ = utils::norm_max(dx_) < solver_options_.eps;\n        mu_ *= std::max(1./3., std::min(1.-std::pow(2*rho_-1,3), 2./3.));\n        nu_ = 2.;\n        VLOG(400) << \"It. \" << iter_\n                  << \"\\t Trial \" << trials_\n                  << \"\\t Success\"\n                  << \"\\t n_meas = \" << n_meas_\n                  << \"\\t new_chi2 = \" << new_chi2\n                  << \"\\t mu = \" << mu_\n                  << \"\\t nu = \" << nu_;\n      }\n      else\n      {\n        // update increased the error -> fail\n        mu_ *= nu_;\n        nu_ *= 2.;\n        ++trials_;\n        if (trials_ >= solver_options_.max_trials)\n          stop_ = true;\n\n        VLOG(400) << \"It. \" << iter_\n                  << \"\\t Trial \" << trials_\n                  << \"\\t Failure\"\n                  << \"\\t n_meas = \" << n_meas_\n                  << \"\\t new_chi2 = \" << new_chi2\n                  << \"\\t mu = \" << mu_\n                  << \"\\t nu = \" << nu_;\n      }\n      finishTrial();\n\n    } while(!(rho_>0 || stop_));\n    if (stop_)\n    {\n      break;\n    }\n\n    finishIteration();\n  }\n}\n\ntemplate <int D, typename T, typename Implementation>\nvoid MiniLeastSquaresSolver<D, T, Implementation>::setPrior(\n    const T&  prior,\n    const Matrix<double, D, D>&  Information)\n{\n  have_prior_ = true;\n  prior_ = prior;\n  I_prior_ = Information;\n}\n\ntemplate <int D, typename T, typename Implementation>\nvoid MiniLeastSquaresSolver<D, T, Implementation>::reset()\n{\n  have_prior_ = false;\n  chi2_ = 1e10;\n  mu_ = solver_options_.mu_init;\n  nu_ = solver_options_.nu_init;\n  n_meas_ = 0;\n  iter_ = 0;\n  trials_ = 0;\n  stop_ = false;\n}\n\ntemplate <int D, typename T, typename Implementation>\nbool MiniLeastSquaresSolver<D, T, Implementation>::solveDefaultImpl(\n    const HessianMatrix& H,\n    const GradientVector& g,\n    UpdateVector& dx)\n{\n  dx = H.ldlt().solve(g);\n  if((bool) std::isnan((double) dx[0]))\n    return false;\n  return true;\n}\n\n} // namespace solver\n} // namespace vk\n"
  },
  {
    "path": "svo_vikit/vikit_solver/include/vikit/solver/mini_least_squares_solver.h",
    "content": "#pragma once\n\n#include <iostream>\n#include <cmath>\n#include <Eigen/Core>\n#include <Eigen/StdVector>\n\nnamespace vk {\nnamespace solver {\n\nusing namespace Eigen;\n\nenum class Strategy {\n  GaussNewton,\n  LevenbergMarquardt\n};\n\nstruct MiniLeastSquaresSolverOptions\n{\n  /// Solver strategy.\n  Strategy strategy = Strategy::GaussNewton;\n\n  /// Damping parameter. If mu > 0, coefficient matrix is positive definite, this\n  /// ensures that x is a descent direction. If mu is large, x is a short step in\n  /// the steepest direction. This is good if the current iterate is far from the\n  /// solution. If mu is small, LM approximates gauss newton iteration and we\n  /// have (almost) quadratic convergence in the final stages.\n  double mu_init = 0.01f;\n\n  /// Increase factor of mu after fail\n  double nu_init = 2.0;\n\n  /// Max number of iterations\n  size_t max_iter = 15;\n\n  /// Max number of trials (used in LevenbergMarquardt)\n  size_t max_trials = 5;\n\n  /// Stop when error increases.\n  bool stop_when_error_increases = false;\n\n  /// Output Statistics\n  bool verbose = false;\n\n  /// Stop if update norm is smaller than eps\n  double eps = 0.0000000001;\n};\n\n/// Abstract Class for solving nonlinear least-squares (NLLS) problems.\n/// Template Parameters: D  : dimension of the residual, T: type of the model\n/// e.g. SE2, SE3\ntemplate <int D, typename T, typename Implementation>\nclass MiniLeastSquaresSolver\n{\npublic:\n  EIGEN_MAKE_ALIGNED_OPERATOR_NEW\n  typedef T State;\n  typedef Matrix<double, D, D> HessianMatrix;\n  typedef Matrix<double, D, 1> GradientVector;\n  typedef Matrix<double, D, 1> UpdateVector;\n\n  MiniLeastSquaresSolverOptions solver_options_;\n\nprotected:\n  MiniLeastSquaresSolver() = default;\n\n  MiniLeastSquaresSolver(const MiniLeastSquaresSolverOptions& options);\n\n  virtual ~MiniLeastSquaresSolver() = default;\n\npublic:\n  /// Calls the GaussNewton or LevenbergMarquardt optimization strategy\n  void optimize(State& state);\n\n  /// Gauss Newton optimization strategy\n  void optimizeGaussNewton(State& state);\n\n  /// Levenberg Marquardt optimization strategy\n  void optimizeLevenbergMarquardt(State& state);\n\n  /// Add prior to optimization.\n  void setPrior(\n      const State&  prior,\n      const Matrix<double, D, D>&  Information);\n\n  /// Reset all parameters to restart the optimization\n  void reset();\n\n  /// Get the squared error\n  inline double getError() const\n  {\n    return chi2_;\n  }\n\n  /// The the Hessian matrix (Information Matrix).\n  inline const Matrix<double, D, D>& getHessian() const\n  {\n    return H_;\n  }\n\nprotected:\n\n  Implementation& impl()\n  {\n    return *static_cast<Implementation*>(this);\n  }\n\n  /// Evaluates the error at provided state. Optional return variables are\n  /// the Hessian matrix and the gradient vector (Jacobian * residual).\n  /// If these parameters are requested, the system is linearized at the current\n  /// state.\n  double evaluateError(\n      const State& state,\n      HessianMatrix* H,\n      GradientVector* g)\n  {\n    return impl().evaluateError(state, H, g);\n  }\n\n  /// Solve the linear system H*dx = g to obtain optimal perturbation dx.\n  bool solve(\n      const HessianMatrix& H,\n      const GradientVector& g,\n      UpdateVector& dx)\n  {\n    if(&MiniLeastSquaresSolver::solve != &Implementation::solve)\n      return impl().solve(H, g, dx);\n    else\n      return solveDefaultImpl(H, g, dx);\n  }\n\n  /// Apply the perturbation dx to the state.\n  void update(\n      const State& state,\n      const UpdateVector& dx,\n      State& new_state)\n  {\n    impl().update(state, dx, new_state);\n  }\n\n  void applyPrior(const State& current_model)\n  {\n    if(&MiniLeastSquaresSolver::applyPrior != &Implementation::applyPrior)\n      impl().applyPrior(current_model);\n  }\n\n  void startIteration()\n  {\n    if(&MiniLeastSquaresSolver::startIteration != &Implementation::startIteration)\n      impl().startIteration();\n  }\n\n  void finishIteration()\n  {\n    if(&MiniLeastSquaresSolver::finishIteration != &Implementation::finishIteration)\n      impl().finishIteration();\n  }\n\n  void finishTrial()\n  {\n    if(&MiniLeastSquaresSolver::finishTrial != &Implementation::finishTrial)\n      impl().finishTrial();\n  }\n\nprivate:\n\n  /// Default implementation to solve the linear system H*dx = g to obtain optimal perturbation dx.\n  bool solveDefaultImpl(\n      const HessianMatrix& H,\n      const GradientVector& g,\n      UpdateVector& dx);\n\nprotected:\n  HessianMatrix  H_;        ///< Hessian or approximation Jacobian*Jacobian^T.\n  GradientVector g_;        ///< Jacobian*residual.\n  UpdateVector   dx_;       ///< Update step.\n  bool have_prior_ = false;\n  State prior_;\n  Matrix<double, D, D> I_prior_; ///< Prior information matrix (inverse covariance)\n  double chi2_ = 0.0;       ///< Whitened error / log-likelihood: 1/(2*sigma^2)*(z-h(x))^2.\n  double rho_ = 0.0;        ///< Error reduction: chi2-new_chi2.\n  double mu_ = 0.01;        ///< Damping parameter.\n  double nu_ = 2.0;         ///< Factor that specifies how much we increase mu at every trial.\n  size_t n_meas_ = 0;       ///< Number of measurements.\n  bool stop_ = false;       ///< Stop flag.\n  size_t iter_ = 0;         ///< Current Iteration.\n  size_t trials_ = 0;       ///< Current number of trials.\n};\n\n} // namespace solver\n} // namespace vk\n\n#include \"implementation/mini_least_squares_solver.hpp\"\n"
  },
  {
    "path": "svo_vikit/vikit_solver/include/vikit/solver/robust_cost.h",
    "content": "#ifndef VIKIT_ROBUST_COST_H_\n#define VIKIT_ROBUST_COST_H_\n\n#include <vector>\n#include <memory>\n\nnamespace vk {\nnamespace solver {\n\n/// Scale Estimators to estimate standard deviation of a distribution of errors.\nclass ScaleEstimator\n{\npublic:\n  virtual ~ScaleEstimator() = default;\n\n  /// Errors must be absolute values!\n  virtual float compute(std::vector<float>& errors) const = 0;\n};\ntypedef std::shared_ptr<ScaleEstimator> ScaleEstimatorPtr;\n\nclass UnitScaleEstimator : public ScaleEstimator\n{\npublic:\n  using ScaleEstimator::ScaleEstimator;\n  virtual ~UnitScaleEstimator() = default;\n  virtual float compute(std::vector<float>& errors) const;\n};\n\n// estimates scale by computing the median absolute deviation\nclass MADScaleEstimator : public ScaleEstimator\n{\npublic:\n  using ScaleEstimator::ScaleEstimator;\n  virtual ~MADScaleEstimator() = default;\n  virtual float compute(std::vector<float>& errors) const;\n};\n\n// estimates scale by computing the standard deviation\nclass NormalDistributionScaleEstimator : public ScaleEstimator\n{\npublic:\n  using ScaleEstimator::ScaleEstimator;\n  virtual ~NormalDistributionScaleEstimator() = default;\n  virtual float compute(std::vector<float>& errors) const;\nprivate:\n};\n\n/// Weight-Functions for M-Estimators\n/// http://research.microsoft.com/en-us/um/people/zhang/inria/publis/tutorial-estim/node24.html\nclass WeightFunction\n{\npublic:\n  WeightFunction() = default;\n  virtual ~WeightFunction() = default;\n  virtual float weight(const float& error) const = 0;\n};\ntypedef std::shared_ptr<WeightFunction> WeightFunctionPtr;\n\nclass UnitWeightFunction : public WeightFunction\n{\npublic:\n  using WeightFunction::WeightFunction;\n  virtual ~UnitWeightFunction() = default;\n  virtual float weight(const float& error) const;\n};\n\nclass TukeyWeightFunction : public WeightFunction\n{\npublic:\n  TukeyWeightFunction(const float b = 4.6851f);\n  virtual ~TukeyWeightFunction() = default;\n  virtual float weight(const float& error) const;\nprivate:\n  float b_square_;\n};\n\nclass HuberWeightFunction : public WeightFunction\n{\npublic:\n  HuberWeightFunction(const float k = 1.345f);\n  virtual ~HuberWeightFunction() = default;\n  virtual float weight(const float& error) const;\nprivate:\n  float k_;\n};\n\n} // namespace robust_cost\n} // namespace vk\n\n#endif // VIKIT_ROBUST_COST_H_\n"
  },
  {
    "path": "svo_vikit/vikit_solver/package.xml",
    "content": "<?xml version=\"1.0\"?>\n<package format=\"2\">\n  <name>vikit_solver</name>\n  <version>0.0.0</version>\n  <description>The vikit_solver package</description>\n\n  <maintainer email=\"cfo@todo.todo\">cfo</maintainer>\n  <license>BSD</license>\n\n  <buildtool_depend>catkin</buildtool_depend>\n  <buildtool_depend>catkin_simple</buildtool_depend>\n\n  <depend>eigen_catkin</depend>\n  <depend>glog_catkin</depend>\n\n  <test_depend>gtest</test_depend>\n</package>"
  },
  {
    "path": "svo_vikit/vikit_solver/src/robust_cost.cpp",
    "content": "#include \"vikit/solver/robust_cost.h\"\n\n#include <cmath>\n#include <numeric>\n#include <algorithm>\n#include <glog/logging.h>\n\nnamespace vk {\nnamespace solver {\n\n/* ************************************************************************* */\n// Scale Estimators\n/* ************************************************************************* */\nfloat UnitScaleEstimator::compute(std::vector<float>& /*errors*/) const\n{\n  return 1.0f;\n}\n\nfloat MADScaleEstimator::compute(std::vector<float>& errors) const\n{\n  CHECK(!errors.empty()) << \"Error vector is empty.\";\n  auto it = errors.begin()+std::floor(errors.size()/2);\n  std::nth_element(errors.begin(), it, errors.end()); // compute median\n  return 1.48f * (*it); // 1.48f / 0.6745\n}\n\nfloat NormalDistributionScaleEstimator::compute(std::vector<float>& errors) const\n{\n  const float mean = std::accumulate(errors.begin(), errors.end(), 0)/errors.size();\n  float var = 0.0;\n  for(const float d : errors)\n    var += (d - mean) * (d - mean);\n  return std::sqrt(var); // return standard deviation\n}\n\n/* ************************************************************************* */\n// Weight Functions\n/* ************************************************************************* */\nfloat UnitWeightFunction::weight(const float& error) const\n{\n  return 1.0f;\n}\n\nTukeyWeightFunction::TukeyWeightFunction(const float b)\n  : b_square_(b*b)\n{}\n\nfloat TukeyWeightFunction::weight(const float& error) const\n{\n  const float x_square = error * error;\n  if(x_square <= b_square_)\n  {\n    const float tmp = 1.0f - x_square / b_square_;\n    return tmp * tmp;\n  }\n  else\n  {\n    return 0.0f;\n  }\n}\n\nHuberWeightFunction::HuberWeightFunction(const float k)\n  : k_(k)\n{}\n\nfloat HuberWeightFunction::weight(const float& error) const\n{\n  const float abs_error = std::fabs(error);\n  return (abs_error < k_) ? 1.0f : k_/abs_error;\n}\n\n} // namespace robust_cost\n} // namespace vk\n\n\n"
  }
]